diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php
index 5f0318c..a4782bc 100644
--- a/src/structure/components/com_sportsmanager/sportsmanager.php
+++ b/src/structure/components/com_sportsmanager/sportsmanager.php
@@ -1,8409 +1,8418 @@
-");
-}
-
-laufzeitInit();
-
-require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . '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');
-
-initDatabase();
-updateDatabase();
-
-if (isset($_POST['filter_saison_id']))
- setcookie('sportsmanager_filter_saison_id', $_POST['filter_saison_id'], time() + (60 * 60 * 24));
-else if (isset($_REQUEST['filter_saison_id']))
- setcookie('sportsmanager_filter_saison_id', $_REQUEST['filter_saison_id'], time() + (60 * 60 * 24));
-
-global $content;
-global $task;
-global $params;
-$jinput = JFactory::getApplication()->input;
-$task = $jinput->getCmd('task');
-$app = JFactory::getApplication('site');
-$params = $app->getParams('com_sportsmanager');
-$content = isJson() && $jinput->getCmd('content', NULL) != NULL ? $jinput->getCmd('content') : $params->get('content');
-
-if (berechnungen())
- return;
-
-if ($task == "spielerbild") {
- spielerbild();
-} else if ($task == "anhang_termin") {
- terminDokument();
-} else if ($task == "spieler_details") {
- spielerDetails();
-} else if (substr($task, 0, 6) == "admin_") {
- 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;
- case 'admin_spieler_edit':
- adminEditSpieler();
- 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;
- case 'admin_spieler_import_details_form':
- adminImportSpielerDetailsForm();
- break;
- case 'admin_spieler_import_vorschau':
- adminImportSpielerVorschau();
- break;
- case 'admin_spieler_import':
- adminImportSpieler();
- break;
- case 'admin_spieler_export_form':
- adminExportSpielerForm();
- 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;
- case 'admin_verein_edit':
- adminEditVerein();
- 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;
- case 'admin_vereinsmitglied_edit':
- adminEditVereinsmitglied();
- break;
- case 'admin_vereinsmitglied_save':
- adminSaveVereinsmitglied();
- break;
- case 'admin_vereinsmitglied_remove':
- adminRemoveVereinsmitglied();
- break;
- case 'admin_spielorte':
- adminSpielorte();
- break;
- case 'admin_spielort_edit':
- adminEditSpielort();
- 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;
- case 'admin_teamspiel_modus_edit':
- adminEditTeamspielmodus();
- 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;
- case 'admin_verschieben_modus_edit':
- adminEditVerschiebenModus();
- 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;
- case 'admin_ranglistensystem_edit':
- adminEditRanglistensystem();
- 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;
- case 'admin_rangliste_turnierdisziplin_edit':
- adminEditRanglisteTurnierdisziplin();
- 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;
- case 'admin_spielerstatistik_veranstaltung_edit':
- adminEditSpielerstatistikVeranstaltung();
- 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;
- case 'admin_einstufung_edit':
- adminEditEinstufung();
- break;
- case 'admin_einstufung_save':
- adminSaveEinstufung();
- break;
- case 'admin_einstufung_remove':
- adminRemoveEinstufung();
- break;
- case 'admin_saisons':
- adminSaisons();
- break;
- case 'admin_saison_edit':
- adminEditSaison();
- break;
- case 'admin_saison_save':
- adminSaveSaison();
- break;
- case 'admin_saison_remove':
- adminRemoveSaison();
- break;
- case 'admin_verteiler':
- adminVerteiler();
- break;
- case 'admin_verteiler_edit':
- adminEditVerteiler();
- break;
- case 'admin_verteiler_save':
- adminSaveVerteiler();
- break;
- case 'admin_verteiler_remove':
- adminRemoveVerteiler();
- break;
- case 'admin_rechnungen':
- adminRechnungen();
- break;
- case 'admin_rechnung_edit':
- adminEditRechnung();
- break;
- case 'admin_rechnung_save':
- adminSaveRechnung();
- break;
- case 'admin_rechnung_remove':
- adminRemoveRechnung();
- break;
- case 'admin_moderatoren':
- adminModeratoren();
- break;
- case 'admin_moderator_edit':
- adminEditModerator();
- break;
- case 'admin_moderator_save':
- adminSaveModerator();
- break;
- case 'admin_moderator_remove':
- adminRemoveModerator();
- break;
- case 'admin_veranstalter':
- adminVeranstalter();
- break;
- case 'admin_veranstalter_edit':
- adminEditVeranstalter();
- 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;
- case 'admin_team_edit':
- adminEditMannschaft();
- 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;
- case 'admin_mitglied_edit':
- adminEditMitglied();
- 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;
- case 'admin_begegnung_edit':
- adminEditBegegnung();
- 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;
- case 'admin_begegnung_spielplan_edit_bestaetigen':
- adminEditBegegnungSpielplan(1);
- break;
- case 'admin_begegnung_spielplan_save':
- $input = isJson() ? $jinput->json : $jinput;
- if ($input->get('ergebnis_bestaetigen', false, 'BOOL')) {
- adminBegegnungSpielplanBestaetigen();
- } 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;
- case 'admin_individualwettbewerb_spiel_edit':
- adminEditIndividualwettbewerbSpiel();
- 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;
- case 'admin_termin_edit':
- adminEditTermin(1);
- break;
- case 'admin_termin_save':
- adminSaveTermin(1);
- break;
- case 'admin_termin_remove_form':
- adminRemoveTerminForm(1);
- break;
- case 'admin_termin_remove':
- adminRemoveTermin(1);
- break;
- case 'admin_termine_verlauf':
- adminTermineVerlauf(1);
- break;
- case 'admin_termin_details':
- adminTerminDetails(1);
- break;
- case 'admin_termin_moderieren':
- adminTerminModerieren(1);
- break;
- case 'admin_termine_bezeichnungen':
- adminTermineBezeichnungen(1);
- break;
- case 'admin_termine_bezeichnung_edit':
- adminEditTermineBezeichnung(1);
- break;
- case 'admin_termine_bezeichnung_save':
- adminSaveTermineBezeichnung(1);
- break;
- case 'admin_termine_bezeichnung_remove':
- adminRemoveTermineBezeichnung(1);
- break;
- case 'admin_termine_bezeichnungszusaetze':
- adminTermineBezeichnungszusaetze(1);
- break;
- case 'admin_termine_bezeichnungszusatz_edit':
- adminEditTermineBezeichnungszusatz(1);
- break;
- case 'admin_termine_bezeichnungszusatz_save':
- adminSaveTermineBezeichnungszusatz(1);
- break;
- case 'admin_termine_bezeichnungszusatz_remove':
- adminRemoveTermineBezeichnungszusatz(1);
- break;
- case 'admin_termine_bundeslaender':
- adminTermineBundeslaender(1);
- break;
- case 'admin_termine_bundesland_edit':
- adminEditTermineBundesland(1);
- break;
- case 'admin_termine_bundesland_save':
- adminSaveTermineBundesland(1);
- break;
- case 'admin_termine_bundesland_remove':
- adminRemoveTermineBundesland(1);
- break;
- case 'admin_termine_laender':
- adminTermineLaender(1);
- break;
- case 'admin_termine_land_edit':
- adminEditTermineLand(1);
- break;
- case 'admin_termine_land_save':
- adminSaveTermineLand(1);
- break;
- case 'admin_termine_land_remove':
- adminRemoveTermineLand(1);
- break;
- case 'admin_termine_symbole':
- adminTermineSymbole(1);
- break;
- case 'admin_termine_symbol_edit':
- adminEditTermineSymbol(1);
- 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;
- case 'admin_turnierdisziplin_edit':
- adminEditTurnierdisziplin();
- 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;
- case 'admin_spieler_bilder_importieren':
- adminSpielerImportBilder();
- break;
- case 'admin_vereine_bilder_exportieren_form':
- adminVereineExportBilderForm();
- break;
- case 'admin_vereine_bilder_exportieren':
- adminVereineExportBilder();
- break;
- case 'admin_vereine_bilder_importieren_form':
- adminVereineImportBilderForm();
- break;
- case 'admin_vereine_bilder_importieren':
- adminVereineImportBilder();
- break;
- case 'admin_grooming_mehrfache_mitgliedschaften':
- adminGroomingMehrfacheMitgliedschaften();
- break;
- default:
- if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator() && (benutzerVeranstalterModerator() || benutzerVereinModerator()))
- adminSpieler(0);
- else
- adminUebersicht();
- break;
- }
-}
-else if ($content == "players") {
- switch ($task) {
- default:
- spieler();
- break;
- }
-} else if ($content == "elorangliste") {
- switch ($task) {
- default:
- eloRanglisten();
- break;
- }
-} else if ($content == "individualwettbewerbe") {
- switch ($task) {
- default:
- individualwettbewerbe();
- break;
- }
-} else if ($content == "teams" || $content == "teams_vereinigt") {
- switch ($task) {
- case 'begegnung_spielplan':
- begegnungSpielplan(true);
- break;
- case 'team_details':
- mannschaftDetails($content == "teams_vereinigt");
- break;
- case 'team_spielplan_xml':
- teamSpielplanXML();
- break;
- case 'team_begegnungen_ical':
- teamBegegnungeniCal();
- break;
- default:
- mannschaften($content == "teams_vereinigt");
- break;
- }
-} else if ($content == "vereine") {
- switch ($task) {
- case 'verein_details':
- vereinDetails();
- break;
- case 'verein_begegnungen_ical':
- vereinBegegnungeniCal();
- break;
- default:
- vereine();
- break;
- }
-} else if ($content == "turniervoranmeldungen") {
- switch ($task) {
- default:
- turniervoranmeldungen();
- break;
- }
-} else if ($content == "turniere") {
- switch ($task) {
- case 'turnierdisziplin':
- turnierdisziplin();
- break;
- case 'turnierdisziplinen':
- turnierdisziplinen();
- break;
- default:
- turniere();
- break;
- }
-} else if ($content == "ranglisten") {
- switch ($task) {
- case 'ranglistenpunkte':
- ranglistenpunkte();
- break;
- case 'rangliste':
- rangliste();
- break;
- default:
- ranglisten();
- break;
- }
-} else if ($content == "spielerstatistiken") {
- switch ($task) {
- case 'spielerstatistik':
- spielerstatistik();
- break;
- default:
- spielerstatistiken();
- break;
- }
-} else if ($content == "aktuelle_begegnungen") {
- switch ($task) {
- case 'begegnung_verlegen_form':
- begegnungVerlegenForm();
- break;
- case 'begegnung_verlegen':
- begegnungVerlegen();
- 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;
- }
-} else if ($content == "aktuelle_begegnungen_pin") {
- switch ($task) {
- case 'begegnung_verlegen_form':
- begegnungVerlegenForm();
- break;
- case 'begegnung_verlegen':
- begegnungVerlegen();
- break;
- case 'begegnung_verlegen_bestaetigen':
- begegnungVerlegenBestaetigen();
- break;
- case 'begegnung_spielplan':
- begegnungSpielplan();
- break;
- case 'pineingabe':
- adminEditBegegnungSpielplan(2);
- 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;
- }
-} else if ($content == "mannschaftswettbewerbe") {
- switch ($task) {
- case 'begegnung_verlegen_form':
- begegnungVerlegenForm();
- break;
- case 'begegnung_verlegen':
- begegnungVerlegen();
- break;
- case 'begegnung_verlegen_bestaetigen':
- begegnungVerlegenBestaetigen();
- break;
- case 'begegnung_spielplan':
- begegnungSpielplan();
- break;
- case 'veranstaltung':
- veranstaltung();
- 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();
- }
-} else if ($content == "spielorte") {
- switch ($task) {
- case 'begegnung_verlegen_form':
- begegnungVerlegenForm();
- break;
- case 'begegnung_verlegen':
- begegnungVerlegen();
- 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;
- }
-} else if ($content == "termine") {
- switch ($task) {
- case 'termin_edit':
- adminEditTermin(0);
- break;
- case 'termin_save':
- adminSaveTermin(0);
- break;
- case 'termin_remove_form':
- adminRemoveTerminForm(0);
- break;
- case 'termin_remove':
- adminRemoveTermin(0);
- break;
- case 'termine_verlauf':
- adminTermineVerlauf(0);
- break;
- case 'termin_details':
- adminTerminDetails(0);
- break;
- case 'termin_moderieren':
- adminTerminModerieren(0);
- case 'termine_bezeichnungen':
- adminTermineBezeichnungen(0);
- break;
- case 'termine_bezeichnung_edit':
- adminEditTermineBezeichnung(0);
- break;
- case 'termine_bezeichnung_save':
- adminSaveTermineBezeichnung(0);
- break;
- case 'termine_bezeichnung_remove':
- adminRemoveTermineBezeichnung(0);
- break;
- case 'termine_bezeichnungszusaetze':
- adminTermineBezeichnungszusaetze(0);
- break;
- case 'termine_bezeichnungszusatz_edit':
- adminEditTermineBezeichnungszusatz(0);
- break;
- case 'termine_bezeichnungszusatz_save':
- adminSaveTermineBezeichnungszusatz(0);
- break;
- case 'termine_bezeichnungszusatz_remove':
- adminRemoveTermineBezeichnungszusatz(0);
- break;
- case 'termine_bundeslaender':
- adminTermineBundeslaender(0);
- break;
- case 'termine_bundesland_edit':
- adminEditTermineBundesland(0);
- break;
- case 'termine_bundesland_save':
- adminSaveTermineBundesland(0);
- break;
- case 'termine_bundesland_remove':
- adminRemoveTermineBundesland(0);
- break;
- case 'termine_laender':
- adminTermineLaender(0);
- break;
- case 'termine_land_edit':
- adminEditTermineLand(0);
- break;
- case 'termine_land_save':
- adminSaveTermineLand(0);
- break;
- case 'termine_land_remove':
- adminRemoveTermineLand(0);
- break;
- case 'termine_symbole':
- adminTermineSymbole(0);
- break;
- case 'termine_symbol_edit':
- adminEditTermineSymbol(0);
- break;
- case 'termine_symbol_save':
- adminSaveTermineSymbol(0);
- break;
- case 'termine_symbol_remove':
- adminRemoveTermineSymbol(0);
- break;
- default:
- adminTermine(0);
- break;
- }
-} else if ($content == 'login') {
- userAuth();
-} else if ($content == 'login_refresh') {
- userToken();
-} else {
- adminUebersicht();
-}
-// laufzeitAusgeben();
-
-return;
-
-function redirectSportsManagerURL($weitereParameter = NULL, $nachricht = '') {
- global $redirect_session_id;
- if (!empty($redirect_session_id)) {
- if (empty($weitereParameter))
- $weitereParameter = '';
- $weitereParameter .= "&rsession_id=" . urlencode($redirect_session_id);
- }
- $app = &JFactory::getApplication();
- $app->redirect(SportsManagerURL($weitereParameter), $nachricht);
- return;
-}
-
-function redirectCurrentURL() {
- global $redirect_session_id;
- $u = & JURI::getInstance();
- if (!empty($redirect_session_id))
- $u->setVar('rsession_id', $redirect_session_id);
- $app = &JFactory::getApplication();
- $app->redirect($u->toString());
-}
-
-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() {
- 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 berechnungen() {
- $db = & getDatabase();
-
- $session_id = redirectRequestGetSessionId();
-
- $query = "SELECT IF(EXISTS("
- . "\n SELECT *"
- . "\n FROM #__sportsmanager_berechnung"
- . "\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()) {
- die($db->stderr(true));
- }
- $berechnungen = $db->loadResult();
- ;
-
- if (empty($berechnungen))
- return FALSE;
-
- ranglisteAktualisieren(0, 0, 0, TRUE);
- einstufungAktualisieren(TRUE);
-
- $u = & JURI::getInstance();
- $app = &JFactory::getApplication();
- $app->redirect($u->toString());
- return TRUE;
-}
-
-function benutzerJoomlaAdmin() {
- $version = new JVersion;
- $joomla = $version->getShortVersion();
-
- if (substr($joomla, 0, 3) != '1.5') {
- if (JFactory::getUser()->authorise('core.manage', 'com_sportsmanager'))
- return true;
- } else {
- JFactory::getACL()->addACL('com_sportsmanager', 'manage', 'users', 'super administrator');
- if (JFactory::getUser()->authorize('com_sportsmanager', 'manage'))
- return true;
- }
-}
-
-function benutzerModerator() {
- $db = & getDatabase();
-
- if (benutzerJoomlaAdmin())
- return TRUE;
-
- if (isExternalDatabase())
- return FALSE;
-
- $user_id = JFactory::getUser()->id;
- $query = "SELECT COUNT(*)"
- . "\n FROM #__sportsmanager_moderator"
- . "\n WHERE moderator_user_id = $user_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $gefunden = $db->loadResult();
- return !empty($gefunden);
-}
-
-function benutzerZugriff($zugriff, $joomlaAdminIgnorieren = FALSE) {
- $db = & getDatabase();
-
- if (!$joomlaAdminIgnorieren && benutzerJoomlaAdmin())
- return TRUE;
-
- if (isExternalDatabase())
- return FALSE;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $gefunden = $db->loadResult();
- return !empty($gefunden);
-}
-
-function benutzerIndividualwettbewerbModerator($individualwettbewerb_id = NULL) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function benutzerVeranstalterModerator($veranstalter_id = NULL) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function benutzerVeranstaltungModerator($veranstaltung_id = NULL) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function benutzerVeranstaltungIdsModerator() {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return array();
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $ids = array();
- foreach ($rows as $row)
- array_push($ids, $row->veranstaltung_id);
-
- return $ids;
-}
-
-function benutzerTurnierModerator($turnier_id = NULL) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function benutzerMannschaftModerator($team_id) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function benutzerVereinModerator($verein_id = NULL) {
- $db = & getDatabase();
-
- if (isExternalDatabase())
- return false;
-
- $user_id = JFactory::getUser()->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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return false;
-
- return true;
-}
-
-function currentUserHasAccessToDetails() {
- $db = & getDatabase();
-
- if (benutzerModerator())
- return true;
-
- if (isExternalDatabase())
- return false;
-
- $user_id = isJson() ? getUserID() : JFactory::getUser()->id;
- $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) > 0)
- return true;
-
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) > 0)
- return true;
-
- $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_user_id = $user_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) > 0)
- return true;
-
- return false;
-}
-
-function administrationFooter() {
- if (benutzerModerator() || benutzerVeranstaltungModerator() || benutzerTurnierModerator() || benutzerIndividualwettbewerbModerator())
- $benutzer_zugriff = 2;
- else if (benutzerVereinModerator() || benutzerVeranstalterModerator())
- $benutzer_zugriff = 1;
- else
- $benutzer_zugriff = 0;
-
- if ($benutzer_zugriff)
- HTML_sportsmanager::administrationFooter();
-}
-
-function einstellungswert($name) {
- $db = & getDatabase();
-
- $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = '$name'";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 0)
- return null;
- return $rows[0]->wert;
-}
-
-function aktuelleBegegnungen($pineingabe = FALSE) {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->input;
-
-
- $praesentation = $jinput->get('praesentation', 0, 'INT');
- $aktualisieren = $jinput->get('aktualisieren', 0, 'INT');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\n GROUP BY saison_id"
- . "\n ORDER BY saisonbezeichnung DESC";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $saisons = $db->loadObjectList();
-
- $ticker_anzeigen = false;
- if (count($saisons) != 0) {
- $filter_saison_id = $saisons[0]->saison_id;
-
- $query = "SELECT #__sportsmanager_veranstaltung.*"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- if (count($veranstaltungen) > 0)
- $ticker_anzeigen = true;
- }
-
- $pineingabe_anzeigen = false;
- if ($pineingabe) {
- $query = "SELECT IF(EXISTS("
- . "\n ("
- . "\n SELECT *"
- . "\n FROM #__sportsmanager_begegnung AS t1"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin != '') OR (NOT ISNULL(t3.pin) AND t3.pin != ''))"
- . "\n )"
- . "\n ), 1, 0)";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $pin_begegnungen = $db->loadResult();
-
- if ($pin_begegnungen > 0) {
- $pineingabe_anzeigen = true;
- }
- }
-
- if (isJson()) {
- 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'))
- );
- } 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)
- ]);
- }
- } 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);
- administrationFooter();
- } else {
- echo "
\r\n";
- echo "\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\r\n";
- begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation);
- echo " | \r\n
\r\n
\r\n";
- }
- }
-}
-
-function veranstaltungen() {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->input;
-
- $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');
- }
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\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 #__sportsmanager_veranstaltung.*"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\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()) {
- die($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- $ticker_anzeigen = false;
- if (count($veranstaltungen) > 0) {
- $ticker_anzeigen = true;
- }
-
- if (!isJson()) {
- HTML_sportsmanager::veranstaltungenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $praesentation, $ticker_anzeigen);
- }
- $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung,"
- . "\n EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND ISNULL(platz) OR platz = 0) AS platzierung_offen"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- if (isJson()) {
- $json = [];
- foreach ($veranstaltungen as $veranstaltung) {
- $competition = [
- 'veranstaltung' => $veranstaltung,
- 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0),
- 'tabelle' => NULL
- ];
- if ($veranstaltung->tabellenwertung != 0) {
- $competition['tabelle'] = tabelle($veranstaltung, $spieltag, true);
- }
- $json[] = $competition;
- }
- echo json_encode($json);
- } else {
- if ($praesentation == 1 || $praesentation == 2)
- echo "\r\n\r\n";
-
- foreach ($veranstaltungen as $veranstaltung) {
- if ($praesentation == 1 || $praesentation == 2)
- echo "| \r\n";
- if ($veranstaltung->tabellenwertung != 0 && ($veranstaltung->tabellenwertung != -1 || !$veranstaltung->platzierung_offen)) {
- HTML_sportsmanager::tabelleHeader($veranstaltung);
- tabelle($veranstaltung, 0, false, $praesentation);
- } else {
- begegnungenAnzeigen($veranstaltung, NULL, NULL, 0, false, false, false, $veranstaltung->bezeichnung, false, true, $praesentation);
- }
- if ($praesentation == 1 || $praesentation == 2)
- echo " | \r\n";
- }
- if ($praesentation == 1 || $praesentation == 2)
- echo "
\r\n";
- if ($praesentation == 2 || $praesentation == 3) {
- if ($praesentation == 3)
- echo "\r\n";
- echo "\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\r\n";
- begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation);
- echo " | \r\n
";
- }
-
- if ($praesentation == 1 || $praesentation == 2 || $praesentation == 3)
- echo "\r\n\r\n
\r\n";
-
- if ($praesentation == 0)
- administrationFooter();
-
- if ($aktualisieren)
- HTML_sportsmanager::automatischAktualisieren($aktualisieren);
- }
-}
-
-function veranstaltung() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->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');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\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;
- }
-
- $id = $jinput->get('veranstaltungid', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- settype($id, 'integer');
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $veranstaltung = $rows[0];
-
- if (isJson()) {
- $json = [
- 'veranstaltung' => $veranstaltung,
- 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0)
- ];
- if ($veranstaltung->tabellenwertung != 0) {
- $table = tabelle($veranstaltung, $spieltag, true);
- $json['tabelle'] = $table['tabelle'];
- $json['modus'] = $table['modus'];
- }
- JSON_sportsmanager::JSON($json);
- } else {
- // Vorherige und nächste Veranstaltung ermitteln
- $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $n = count($rows);
- $vorherige_veranstaltung_id = 0;
- $naechste_veranstaltung_id = 0;
- for ($i = 0; $i < $n; $i++) {
- if ($rows[$i]->veranstaltung_id == $id) {
- if ($i > 0)
- $vorherige_veranstaltung_id = $rows[$i - 1]->veranstaltung_id;
- if ($i + 1 < $n)
- $naechste_veranstaltung_id = $rows[$i + 1]->veranstaltung_id;
- break;
- }
- }
-
- // Anzeigen
- HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $filter_saison_id);
-
- if ($veranstaltung->tabellenwertung != 0)
- tabelle($veranstaltung, $spieltag, true);
-
- begegnungenAnzeigen($veranstaltung, NULL, NULL, 0);
- HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id));
- }
-}
-
-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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) == 1)
- $modus = $rows[0];
-
- if ($veranstaltung->tabellenwertung > 0) {
- // Spieltage ermitteln, an denen schon eine Begegnung ausgetragen wurde
- $query = "SELECT DISTINCT spieltag"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
- . "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
- . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id 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()) {
- die($db->stderr(true));
- }
- $spieltage = $db->loadObjectList();
-
- $aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0;
- if ($spieltag == 0 || $veranstaltung->tabellenwertung >= 21)
- $spieltag = $aktueller_spieltag;
-
- if ($spieltag == $aktueller_spieltag) {
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_team"
- . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
- . "\n ORDER BY platz, teamname";
- } else {
- $query = "SELECT verein_id, teamname, zusatzpunkte,"
- . "\n werte.*,"
- . "\n werte.siege * " . ($veranstaltung->tabellenwertung <= 3 ? "2" : ($veranstaltung->tabellenwertung <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung <= 6 ? " + werte.unentschieden" : "") . " + COALESCE(zusatzpunkte, 0) AS gesamtpunkte,"
- . "\n werte.siege * " . ($veranstaltung->tabellenwertung <= 3 ? "2" : ($veranstaltung->tabellenwertung <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung <= 6 ? " + werte.unentschieden" : "") . " AS begegnungspunkte,"
- . "\n werte.punkte_gewonnen - werte.punkte_verloren AS punkte_differenz,"
- . "\n IF(werte.punkte_verloren = 0, -1, werte.punkte_gewonnen / werte.punkte_verloren) AS punkte_quotient,"
- . "\n werte.spielpunkte_gewonnen - werte.spielpunkte_verloren AS spielpunkte_differenz,"
- . "\n IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren) AS spielpunkte_quotient"
- . "\n FROM #__sportsmanager_team"
- . "\n LEFT JOIN"
- . "\n (SELECT t1.team_id,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte > tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte > tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS siege,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND tt1.heim_spielpunkte = tt1.gast_spielpunkte AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS unentschieden,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte < tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte < tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS niederlagen,"
- . "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_gewonnen,"
- . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_verloren,"
- . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen,"
- . "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_verloren"
- . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
- . "\n AS werte USING (team_id)"
- . "\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 == 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
- $query .= "\n ORDER BY gesamtpunkte DESC, teamname";
- }
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $teams = $db->loadObjectList();
-
- if (isJson()) {
- return JSON_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation);
- } else {
- HTML_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation);
- }
- } else {
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_team"
- . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
- . "\n ORDER BY ISNULL(platz), platz, teamname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $teams = $db->loadObjectList();
- if (isJson()) {
- return JSON_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation);
- } else {
- HTML_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation);
- }
- }
-}
-
-function veranstaltungenTicker($aktuelle_saison_anzeigen = false) {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->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');
-
- $type = $jinput->get('type', '', 'RAW');
- $day = $jinput->get('day', '', 'RAW');
- $currentpage = $jinput->get('currentpage', '', 'RAW');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\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) {
- if ($aktuelle_saison_anzeigen) {
- $filter_saison_id = $saisons[0]->saison_id;
- } else {
- $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;
- }
- } else {
- $filter_saison_id = 0;
- }
-
- $query = "SELECT #__sportsmanager_veranstaltung.veranstaltung_id, ticker_logo_url"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\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()) {
- 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;
- $logo_url = $veranstaltung->ticker_logo_url;
- continue;
- }
- 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;
- }
- }
-
- HTML_sportsmanager_ticker::veranstaltungenTicker($id, $logo_url);
- jexit();
-}
-
-function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->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');
-
- $type = $jinput->get('type', '', 'RAW');
- $day = $jinput->get('day', '', 'RAW');
- $currentpage = $jinput->get('currentpage', '', 'RAW');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\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) {
- if ($aktuelle_saison_anzeigen) {
- $filter_saison_id = $saisons[0]->saison_id;
- } else {
- $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;
- }
- } else {
- $filter_saison_id = 0;
- }
-
- if (strstr($type, 'matchdetail') !== false) {
- $veranstaltungen = NULL;
- $tabellen = NULL;
- $begegnung_spiele = NULL;
- $veranstaltung_elimination_index = -1;
- $details = explode('matchdetail', $type);
- if (count($details) < 2 || !ctype_digit($details[1]))
- jexit();
- $begegnung_id = $details[1];
-
- // 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"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n WHERE 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()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
- if (count($begegnungen) < 1)
- die("Wrong id!");
- $begegnung = $begegnungen[0];
-
- // Spiele ermitteln
- $query = "SELECT t1.*, theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, "
- . "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 = $begegnung_id"
- . "\n GROUP BY teamspiel_id"
- . "\n ORDER BY teamspiel_nummer";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $begegnung_spiele = $db->loadObjectList();
- } else {
- $begegnung_spiele = NULL;
- $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\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")
- . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- $veranstaltung_elimination_index = -1;
- foreach ($veranstaltungen as $index => $veranstaltung) {
- if ($veranstaltung->tabellenwertung == -1) {
- if ($veranstaltung_elimination_index == -1) {
- $veranstaltung_elimination_index = $index;
- } else {
- $veranstaltung_elimination_index = -1;
- break;
- }
- }
- }
-
- $tabellen = array();
- foreach ($veranstaltungen as $index => $veranstaltung) {
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_team"
- . "\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()) {
- die($db->stderr(true));
- }
- $tabellen[$index] = $db->loadObjectList();
- }
-
- $begegnungen = array();
- 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;
- $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"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_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)" : "")
- . "\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()) {
- 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"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
- . "\n WHERE t2.veranstaltung_id = " . $veranstaltungen[$veranstaltung_elimination_index]->veranstaltung_id
- . "\n ORDER BY begegnung_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
- }
- }
-
- HTML_sportsmanager_ticker::veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $currentpage, $begegnung_spiele);
- jexit();
-}
-
-function veranstaltungenTickerCSS() {
- header("Content-type: text/css");
- HTML_sportsmanager_ticker::veranstaltungenTickerCSS();
- jexit();
-}
-
-function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) {
- $jinput = JFactory::getApplication()->input;
-
- $matches = $jinput->get('matches', '', 'RAW');
- $groups = $jinput->get('groups', '', 'RAW');
-
- $db = & getDatabase();
- global $params;
-
- $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');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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")
- . "\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) {
- if ($aktuelle_saison_anzeigen) {
- $filter_saison_id = $saisons[0]->saison_id;
- } else {
- $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;
- }
- } else {
- $filter_saison_id = 0;
- }
-
- if ($matches == "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 ($matches == "finmatches") {
- $ausgetragene_filtern = false;
- $zwischenergebnisse_filtern = true;
- $auszutragende_filtern = true;
- } elseif ($matches == "upcmatches") {
- $ausgetragene_filtern = true;
- $zwischenergebnisse_filtern = true;
- $auszutragende_filtern = false;
- } else { // if ($matches == "runmatches") {
- $ausgetragene_filtern = true;
- $zwischenergebnisse_filtern = false;
- $auszutragende_filtern = true;
- }
- $query = "SELECT MAX(eingetragen)"
- . "\n FROM #__sportsmanager_begegnung AS t1"
- . "\n LEFT JOIN #__sportsmanager_begegnung_historie USING (begegnung_id)"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND 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()) {
- die($db->stderr(true));
- }
- $matches_timestamp = $db->loadResult();
-
- if (!empty($matches_timestamp)) {
- if ($ausgetragene_filtern || $zwischenergebnisse_filtern || $auszutragende_filtern) {
- $query = "SELECT MAX(eingetragen)"
- . "\n FROM #__sportsmanager_begegnung AS t1"
- . "\n LEFT JOIN #__sportsmanager_begegnung_historie USING (begegnung_id)"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id");
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $groups_timestamp = $db->loadResult();
- } else
- $groups_timestamp = $matches_timestamp;
- }
- else {
- $matches_timestamp = date("Y-m-d H:i");
- $groups_timestamp = $matches_timestamp;
- }
-
- HTML_sportsmanager_ticker::veranstaltungenTickerTimestamp($matches_timestamp, $groups_timestamp);
- 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);
-
-
- 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,"
- . "\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,"
- . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
- . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
- . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
- . "\n FROM #__sportsmanager_begegnung AS t1"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- $modus = NULL;
- } else if ($spielort_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,"
- . "\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,"
- . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
- . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
- . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
- . "\n FROM #__sportsmanager_begegnung AS t1"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- $modus = NULL;
- } else if ($veranstaltung == NULL) {
- $homeTeamSpielort = JFactory::getApplication()->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,"
- . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
- . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
- . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
- . "\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_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"
- . ($year != NULL && $month != NULL
- ? "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . " AND YEAR(zeitpunkt) = " . $year . " AND MONTH(zeitpunkt) = " . $month
- : "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . ($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()) {
- abortWithError($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- $modus = NULL;
- } else {
- $homeTeamSpielort = JFactory::getApplication()->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,"
- . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
-// Folgende zwei Zeilen machen die Datenbankabfrage langsam (etwa 3 Sekunden pro Zeile)
- . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
-//
- . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
- . "\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_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()) {
- abortWithError($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- $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];
- }
- 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);
- }
- return $begegnungen;
- } else {
- HTML_sportsmanager::begegnungenAnzeigen($veranstaltung, $modus, $begegnungen, $zeitfenster, $titel, $aus_uebersicht, $praesentation);
- return count($begegnungen);
- }
-}
-
-function turniere() {
- global $params;
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->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');
-
- $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;
- }
-
- HTML_sportsmanager::turniereHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
- $query = "SELECT *, 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)"
- . "\n WHERE turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"
- . "\n GROUP BY turnier_id"
- . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $turniere = $db->loadObjectList();
-
- HTML_sportsmanager::turniere($turniere);
-
- administrationFooter();
-}
-
-function turnierdisziplinen() {
- $db = & getDatabase();
- $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');
- $turnier_id = $jinput->get('turnierid', 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 #__sportsmanager_turnier.*"
- . "\n FROM #__sportsmanager_turnier"
- . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (empty($rows))
- die("Wrong id");
- $turnier = $rows[0];
-
- $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 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()) {
- die($db->stderr(true));
- }
- $disziplinen = $db->loadObjectList();
-
- // Vorheriges und nächstes Turnier ermitteln
- $query = "SELECT turnier_id"
- . "\n FROM #__sportsmanager_turnier"
- . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
- . "\n WHERE #__sportsmanager_turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"
- . "\n GROUP BY turnier_id"
- . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $n = count($rows);
- $vorherige_turnier_id = 0;
- $naechste_turnier_id = 0;
- for ($i = 0; $i < $n; $i++) {
- if ($rows[$i]->turnier_id == $turnier_id) {
- if ($i > 0)
- $vorherige_turnier_id = $rows[$i - 1]->turnier_id;
- if ($i + 1 < $n)
- $naechste_turnier_id = $rows[$i + 1]->turnier_id;
- break;
- }
- }
-
- HTML_sportsmanager::turnierdisziplinenHeader($turnier, $vorherige_turnier_id, $naechste_turnier_id);
-
- foreach ($disziplinen as $disziplin) {
- HTML_sportsmanager::disziplinHeader($disziplin);
-
- $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()) {
- 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()) {
- die($db->stderr(true));
- }
- $meldungen = $db->loadObjectList();
-
- $query = "SELECT turniermeldung_id, spieler_id, geschlecht, bild_ausblenden, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname"
- . "\n FROM #__sportsmanager_turniermeldung"
- . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)"
- . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
- . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
- . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '0' AND platz <= 3"
- . "\n ORDER BY turniermeldung_spieler_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $meldungenSpieler = $db->loadObjectList();
-
- $meldungenSpielerIds = array();
- $meldungenSpielerNamen = array();
- $meldungenSpielerGeschlechter = array();
- $meldungenSpielerBilderAusblenden = 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;
- if (!isset($meldungenSpielerIds[$turniermeldung_id])) {
- $meldungenSpielerIds[$turniermeldung_id] = array();
- $meldungenSpielerNamen[$turniermeldung_id] = array();
- $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);
- }
-
- HTML_sportsmanager::turnierdisziplinen($disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $platzierung_anzeigen, $details_anzeigen);
- }
-}
-
-function turnierdisziplin() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $disziplin = $rows[0];
- $turnierid = $disziplin->turnier_id;
-
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_turnier"
- . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $turnier = $rows[0];
-
- $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()) {
- 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()) {
- die($db->stderr(true));
- }
- $meldungen[$rundenstufe] = $db->loadObjectList();
- }
-
- $query = "SELECT turniermeldung_id, spieler_id, geschlecht, bild_ausblenden, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname"
- . "\n FROM #__sportsmanager_turniermeldung"
- . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)"
- . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
- . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
- . "\n WHERE turnierdisziplin_id = $id"
- . "\n ORDER BY turniermeldung_spieler_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $meldungenSpieler = $db->loadObjectList();
-
- $meldungenSpielerIds = array();
- $meldungenSpielerNamen = array();
- $meldungenSpielerGeschlechter = array();
- $meldungenSpielerBilderAusblenden = 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;
- if (!isset($meldungenSpielerIds[$turniermeldung_id])) {
- $meldungenSpielerIds[$turniermeldung_id] = array();
- $meldungenSpielerNamen[$turniermeldung_id] = array();
- $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);
- }
-
- $spiele = array();
- foreach (array(1, 2, 3, 10) as $rundenstufe) {
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_turnierspiel"
- . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = '$rundenstufe'"
- . "\n ORDER BY runde DESC, spiel_nummer";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $spiele[$rundenstufe] = $db->loadObjectList();
- }
-
- // Vorherige und nächste Turnierdisziplin ermitteln
- $query = "SELECT *"
- . "\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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $n = count($rows);
- $vorherige_turnierdisziplin_id = 0;
- $naechste_turnierdisziplin_id = 0;
- for ($i = 0; $i < $n; $i++) {
- if ($rows[$i]->turnierdisziplin_id == $id) {
- if ($i > 0)
- $vorherige_turnierdisziplin_id = $rows[$i - 1]->turnierdisziplin_id;
- if ($i + 1 < $n)
- $naechste_turnierdisziplin_id = $rows[$i + 1]->turnierdisziplin_id;
- break;
- }
- }
-
- HTML_sportsmanager::turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $spiele, $vorherige_turnierdisziplin_id, $naechste_turnierdisziplin_id, $platzierung_anzeigen, $filter_saison_id, $details_anzeigen);
-}
-
-function spieler() {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->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');
- if ($sortierung == "vorname")
- $sortierung_query = "vorname, nachname";
- else if ($sortierung == "geschlecht")
- $sortierung_query = "geschlecht, nachname, vorname";
- else if ($sortierung == "kategorie")
- $sortierung_query = "kategorie, nachname, vorname";
- else if ($sortierung == "pseudonym")
- $sortierung_query = "ISNULL(pseudonym) OR pseudonym = '', pseudonym, nachname, vorname";
- else if ($sortierung == "elo_einzel")
- $sortierung_query = "elo_einzel DESC, nachname, vorname";
- else if ($sortierung == "elo_einzel_spiele")
- $sortierung_query = "elo_einzel_spiele DESC, nachname, vorname";
- else if ($sortierung == "elo_doppel")
- $sortierung_query = "elo_doppel DESC, nachname, vorname";
- else if ($sortierung == "elo_doppel_spiele")
- $sortierung_query = "elo_doppel_spiele DESC, nachname, vorname";
- else
- $sortierung_query = "nachname, vorname";
-
- if ($veranstaltungid != 0) {
- // Veranstaltung ermitteln
- $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid AND status > 0";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- $veranstaltungid = 0;
- }
-
- if ($veranstalterid != 0) {
- // Veranstaltung ermitteln
- $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- $veranstalterid = 0;
- }
-
- $search = stripslashes($filter);
- /* Ursprüngliche Methode um Suchstring mit Wildcards zuzulassen */
- // $searchEscapedWildcards = strpos($search, "*") !== false ? ($db->escape( trim( mb_strtolower( str_replace("*", "%", $search), 'UTF-8' ) ) )) : ("%" . $db->escape( trim( mb_strtolower( $search, 'UTF-8' ) ) ) . "%");
- /* Keine Wildcards im Suchstring zulassen */
- $searchEscapedWildcards = $db->escape("%" . trim(mb_strtolower(str_replace("%", "\\%", str_replace("_", "\\_", $search)), 'UTF-8')) . "%");
- $searchEscaped = $db->escape(trim($search));
-
- // Gesamtzahl an Spielern ermitteln
- $jahr = date("Y");
- $kategorieFilter = kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN");
- $veranstalterFilter = $veranstalterid != 0 ? " AND #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid " : "";
-
- $query = "SELECT COUNT(*)";
- $query .= "\n FROM #__sportsmanager_spieler";
- if (!empty($kategorieFilter) || !empty($veranstalterFilter))
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
- if ($veranstaltungid != 0)
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
- $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
- if (!empty($kategorie))
- $query .= " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) = '" . $db->escape($kategorie) . "'";
- if (!empty($search))
- $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
- 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()) {
- die($db->stderr(true));
- }
- $anzahl_gefundener_spieler = $db->loadResult();
-
- // Anzuzeigende Spieler ermitteln
- if ($beginn < 0 || $beginn >= $anzahl_gefundener_spieler)
- $beginn = 0;
-
- if (strlen(trim($search)) >= 3 && $anzahl_gefundener_spieler <= 50) {
- $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele, einstufung_allgemein_id, einstufung_einzel_id, einstufung_doppel_id,"
- . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie";
- if ($veranstaltungid != 0)
- $query .= ", teamname";
- $query .= ", vereinsname, veranstalterbezeichnung"
- . "\n FROM #__sportsmanager_spieler";
- if (!empty($kategorieFilter) || !empty($veranstalterFilter))
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
- if ($veranstaltungid != 0)
- $query .= "\n INNER JOIN (SELECT spieler_id, teamname FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
- $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\n WHERE NOT ISNULL(aktueller_verein_id)";
- if (!empty($search))
- $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
- if ($einstufungid != 0)
- $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)";
- if (!empty($kategorie))
- $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'";
- $query .= "\n ORDER BY " . $sortierung_query
- . "\n LIMIT $beginn, 50";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $spieler = $db->loadObjectList();
- } else {
- $spieler = array();
- }
-
- // Veranstaltungen ermitteln
- $query = "SELECT #__sportsmanager_veranstaltung.*"
- . "\n FROM #__sportsmanager_veranstaltung, #__sportsmanager_mitglied_von_team"
- . "\n WHERE status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag"
- . "\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()) {
- die($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- // Einstufungen ermitteln
- $query = "SELECT einstufung_id, bezeichnung"
- . "\n FROM #__sportsmanager_einstufung"
- . "\n ORDER BY prioritaet";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $einstufungen = array();
- foreach ($rows as $row)
- $einstufungen[$row->einstufung_id] = $row->bezeichnung;
-
- // Veranstalter ermitteln
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_veranstalter"
- . "\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()) {
- die($db->stderr(true));
- }
- $veranstalter = $db->loadObjectList();
-
- // Statistiken ermitteln
- $statistik = array();
-
- $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT(ISNULL(pseudonym)) AND pseudonym != ''), 1, 0)";
- $db->setQuery($query);
- if (!$result = $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()) {
- 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()) {
- 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()) {
- 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()) {
- 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()) {
- 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()) {
- 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()) {
- 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);
-
- administrationFooter();
-}
-
-function spielerDetails() {
- $db = & getDatabase();
- global $params;
- global $content;
- $jinput = JFactory::getApplication()->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');
- if ($id == 0)
- die("Missing id!");
- $jahr = date("Y");
- $elo_anzeigen = einstellungswert("spielerliste_elo") == "1" || einstellungswert("spielerliste_elo") == "2";
- $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern");
-
- $details_anzeigen = currentUserHasAccessToDetails();
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- $veranstaltungid = 0;
- }
-
- $search = stripslashes($filter);
- $searchEscapedWildcards = $db->escape("%" . trim(mb_strtolower(str_replace("%", "\\%", str_replace("_", "\\_", $search)), 'UTF-8')) . "%");
- $searchEscaped = $db->escape(trim($search));
-
- // Spielerdaten ermitteln
- $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, spielernr, lizenznr, pseudonym, bild_ausblenden, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele, erstmals_gespielt, zuletzt_gespielt, einstufung_allgemein_id, einstufung_einzel_id, einstufung_doppel_id,"
- . "\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 #__sportsmanager_spieler.spieler_id = $id" . ($berechtigt_spieler_aendern ? "" : " AND NOT ISNULL(aktueller_verein_id)");
- $db->setQuery($query);
- if (!$result = $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];
-
- // Aktive Vereinsmitgliedschaften ermitteln
- $query = "SELECT vereinsname"
- . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $vereine = $db->loadObjectList();
-
- // Aktive Organisationen ermitteln
- $query = "SELECT veranstalterbezeichnung"
- . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $veranstalter = $db->loadObjectList();
-
- // Einstufungen ermitteln
- $query = "SELECT einstufung_id, bezeichnung"
- . "\n FROM #__sportsmanager_einstufung"
- . "\n ORDER BY prioritaet";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $einstufungen = array();
- foreach ($rows as $row)
- $einstufungen[$row->einstufung_id] = $row->bezeichnung;
-
- if ($unabhaengige_ansicht || strlen(trim($search)) < 3) {
- $vorheriger_spieler_id = 0;
- $naechster_spieler_id = 0;
- } else {
- $kategorieFilter = kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN");
- $veranstalterFilter = $veranstalterid != 0 ? " AND #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid " : "";
-
- $query = "SELECT COUNT(*)";
- $query .= "\n FROM #__sportsmanager_spieler";
- if (!empty($kategorieFilter) || !empty($veranstalterFilter))
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
- if ($veranstaltungid != 0)
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
- $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
- if (!empty($kategorie))
- $query .= " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) = '" . $db->escape($kategorie) . "'";
- if (!empty($search))
- $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
- 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()) {
- die($db->stderr(true));
- }
- $anzahl_gefundener_spieler = $db->loadResult();
-
- if ($anzahl_gefundener_spieler <= 50) {
- // Vorherigen und nächsten Spieler ermitteln
- if ($sortierung == "vorname")
- $sortierung_query = "vorname, nachname";
- else if ($sortierung == "geschlecht")
- $sortierung_query = "geschlecht, nachname, vorname";
- else if ($sortierung == "kategorie")
- $sortierung_query = "kategorie, nachname, vorname";
- else if ($sortierung == "pseudonym")
- $sortierung_query = "ISNULL(pseudonym) OR pseudonym = '', pseudonym, nachname, vorname";
- else if ($sortierung == "elo_einzel")
- $sortierung_query = "elo_einzel DESC, nachname, vorname";
- else if ($sortierung == "elo_einzel_spiele")
- $sortierung_query = "elo_einzel_spiele DESC, nachname, vorname";
- else if ($sortierung == "elo_doppel")
- $sortierung_query = "elo_doppel DESC, nachname, vorname";
- else if ($sortierung == "elo_doppel_spiele")
- $sortierung_query = "elo_doppel_spiele DESC, nachname, vorname";
- else
- $sortierung_query = "nachname, vorname";
-
- $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, 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";
- if (!empty($kategorieFilter) || !empty($veranstalterFilter))
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
- if ($veranstaltungid != 0)
- $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
- $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
- if (!empty($search))
- $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
- if ($einstufungid != 0)
- $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)";
- if (!empty($kategorie))
- $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'";
- $query .= "\n ORDER BY " . $sortierung_query
- . "\n LIMIT $beginn, 50";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $n = count($rows);
- $vorheriger_spieler_id = 0;
- $naechster_spieler_id = 0;
- for ($i = 0; $i < $n; $i++) {
- if ($rows[$i]->spieler_id == $id) {
- if ($i > 0)
- $vorheriger_spieler_id = $rows[$i - 1]->spieler_id;
- if ($i + 1 < $n)
- $naechster_spieler_id = $rows[$i + 1]->spieler_id;
- break;
- }
- }
- } else {
- $vorheriger_spieler_id = 0;
- $naechster_spieler_id = 0;
- }
- }
-
- // Spielernamen ermitteln
- $query = "SELECT spieler_id, vorname, nachname"
- . "\n FROM #__sportsmanager_spieler";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- $spielerNamen = array();
- foreach ($rows as $row)
- $spielerNamen[$row->spieler_id] = $row->nachname . ", " . $row->vorname;
-
- // Teamnamen ermitteln
- $query = "SELECT team_id, teamname"
- . "\n FROM #__sportsmanager_team";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- $teamNamen = array();
- foreach ($rows as $row)
- $teamNamen[$row->team_id] = $row->teamname;
-
- // Veranstaltungsbezeichnungen ermitteln
- $query = "SELECT veranstaltung_id, bezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- $veranstaltungBezeichnungen = array();
- foreach ($rows as $row)
- $veranstaltungBezeichnungen[$row->veranstaltung_id] = $row->bezeichnung;
-
- // Turnierdisziplinenbezeichnungen ermitteln
- $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung"
- . "\n FROM #__sportsmanager_turnierdisziplin"
- . "\n INNER JOIN #__sportsmanager_turnier USING (turnier_id)";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- $turnierdisziplinBezeichnungen = array();
- foreach ($rows as $row)
- $turnierdisziplinBezeichnungen[$row->turnierdisziplin_id] = $row->turnierbezeichnung;
-
- // Individualwettbewerbsbezeichnungen ermitteln
- $query = "SELECT individualwettbewerb_id, bezeichnung"
- . "\n FROM #__sportsmanager_individualwettbewerb";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- $individualwettbewerbBezeichnungen = array();
- foreach ($rows as $row)
- $individualwettbewerbBezeichnungen[$row->individualwettbewerb_id] = $row->bezeichnung;
-
- // Ranglistenplatzierungen ermitteln
- $query = "SELECT bezeichnung, saisonbezeichnung, platz, punkte,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id) AS teilnehmer"
- . "\n FROM #__sportsmanager_rangliste_punkte"
- . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\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()) {
- die($db->stderr(true));
- }
- $ranglistenplatzierungen = $db->loadObjectList();
-
- // Turnierplatzierungen ermitteln
- $query = "SELECT *, saisonbezeichnung,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AS teilnehmer"
- . "\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()) {
- die($db->stderr(true));
- }
- $turnierplatzierungen = $db->loadObjectList();
-
- // Teammitgliedschaften ermitteln
- $query = "SELECT t1.teamname, t3.bezeichnung, 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, #__sportsmanager_mitglied_von_team AS t2, #__sportsmanager_veranstaltung AS t3"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\n WHERE t2.spieler_id = $id AND t1.team_id = t2.team_id AND t3.status > 0 AND t1.veranstaltung_id = t3.veranstaltung_id"
- . "\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()) {
- die($db->stderr(true));
- }
- $teams = $db->loadObjectList();
-
- // Elo-Verläufe ermitteln
- $elo_einzel = array();
- $elo_doppel = array();
- $spiele_einzel = array();
- $spiele_doppel = array();
- $spieler_elo_verlauf_einzel = array();
- $spieler_elo_verlauf_doppel = array();
-
- if ($elo_anzeigen && ($spieler->elo_einzel_spiele > 0 || $spieler->elo_doppel_spiele > 0))
- eloGenerieren(NULL, $elo_einzel, $elo_doppel, $spiele_einzel, $spiele_doppel, $id, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel);
- else {
- spieleVerlauf($id, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel);
- $spieler_elo_verlauf_einzel = array_reverse($spieler_elo_verlauf_einzel);
- $spieler_elo_verlauf_doppel = array_reverse($spieler_elo_verlauf_doppel);
- }
-
- $statistik = array();
-
- $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE NOT ausgetreten), 1, 0)";
- $db->setQuery($query);
- if (!$result = $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()) {
- die($db->stderr(true));
- }
- $statistik["spielernr_national"] = $db->loadResult();
-
- $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $statistik["spielernr_international"] = $db->loadResult();
-
- $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_einzel_spiele > 0), 1, 0)";
- $db->setQuery($query);
- if (!$result = $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()) {
- 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);
- } 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);
- }
-}
-
-function mannschaften($ansicht_vereinigt) {
- $db = & getDatabase();
- global $params;
- $jinput = JFactory::getApplication()->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');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_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;
- }
-
-
- if (!isJson()) {
- HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
- }
- 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"
- . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
- . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
- . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id"
- . "\n WHERE #__sportsmanager_veranstaltung.status > 0" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN")
- . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
- . "\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()) {
- die($db->stderr(true));
- }
- $teams = $db->loadObjectList();
- if (isJSON()) {
- $json = JSON_sportsmanager::mannschaften(NULL, $teams);
- } else {
- HTML_sportsmanager::mannschaften(NULL, $teams);
- }
- } else {
- $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_veranstaltung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
- . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team 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 GROUP BY veranstaltung_id"
- . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $veranstaltungen = $db->loadObjectList();
-
- foreach ($veranstaltungen as $veranstaltung) {
- $query = "SELECT teamname, teamgruppe_id, team_id, veranstaltung_id, verein_id, vereinsname, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.name"
- . "\n FROM #__sportsmanager_team"
- . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
- . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id"
- . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
- . "\n ORDER BY teamname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $teams = $db->loadObjectList();
- $veranstaltung->teams = $teams;
- if (isJson()) {
- $json[] = JSON_sportsmanager::mannschaften($veranstaltung, $teams);
- } else {
- HTML_sportsmanager::mannschaften($veranstaltung, $teams);
- }
-
- }
- }
-
-
- if (isJson()) {
- JSON_sportsmanager::JSON($json);
- } else {
- administrationFooter();
- }
-
-}
-
-
-function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0) {
- abortWithError("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');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
- . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_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;
- }
- }
-
- $details_anzeigen = currentUserHasAccessToDetails();
- $ansprechpartner_anzeigen = einstellungswert("ansprechpartner_ausblenden") != "1" || $details_anzeigen;
-
- // Team ermitteln
- $query = "SELECT #__sportsmanager_team.*, #__sportsmanager_spielort.*, #__sportsmanager_verein.vereinsname, veranstalterbezeichnung, verein_id"
- . "\n FROM #__sportsmanager_team"
- . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
- . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
- . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id"
- . "\n WHERE team_id = $id"
- . "\n ORDER BY teamname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1) {
- abortWithError("Wrong id!");
- }
- $team = $rows[0];
- $teamgruppe_id = $team->teamgruppe_id != NULL ? $team->teamgruppe_id : $id;
-
- $veranstaltungid = $team->veranstaltung_id;
-
- // Veranstaltung ermitteln
- $query = "SELECT *, IF(NOT ISNULL(letzter_tag) AND letzter_tag < CURDATE(), 1, 0) AS ist_vergangen"
- . "\n FROM #__sportsmanager_veranstaltung"
- . "\n WHERE veranstaltung_id = $veranstaltungid AND status > 0";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1) {
- abortWithError("Wrong id!");
- }
- $veranstaltung = $rows[0];
- $ist_vergangen = $veranstaltung->ist_vergangen;
-
- // Weitere Wettbewerbe aktualisieren
- $query = "SELECT team_id, veranstaltung_id, bezeichnung, IF(NOT ISNULL(letzter_tag) AND letzter_tag < CURDATE(), 1, 0) AS ist_vergangen"
- . "\n FROM #__sportsmanager_team"
- . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $weitere_veranstaltungen = $db->loadObjectList();
-
- $veranstaltungsbezeichnungen = array();
- $veranstaltungsbezeichnungen[$veranstaltung->veranstaltung_id] = $veranstaltung->bezeichnung;
- foreach ($weitere_veranstaltungen as $weitere_veranstaltung) {
- $veranstaltungsbezeichnungen[$weitere_veranstaltung->veranstaltung_id] = $weitere_veranstaltung->bezeichnung;
- if ($ist_vergangen && !$weitere_veranstaltung->ist_vergangen)
- $ist_vergangen = 0;
- }
-
- $team_moderator = benutzerMannschaftModerator($id) || ($team->verein_id != 0 && benutzerVereinModerator($team->verein_id)) || benutzerZugriff("spieler_lesen_erweiterte_daten");
-
- // Mitglieder ermitteln
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_mitglied_von_team"
- . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
- . "\n INNER JOIN #__sportsmanager_team USING (team_id)"
- . "\n WHERE (team_id = $id OR teamgruppe_id = $teamgruppe_id) AND NOT #__sportsmanager_mitglied_von_team.ausgetreten"
- . "\n GROUP BY spieler_id"
- . "\n ORDER BY nachname, vorname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $mitglieder = $db->loadObjectList();
-
- $spielberechtigungen = array();
- foreach ($mitglieder as $mitglied) {
- $query = "SELECT mitglied_von_team_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag"
- . "\n FROM #__sportsmanager_team"
- . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
- . "\n LEFT JOIN #__sportsmanager_mitglied_von_team ON #__sportsmanager_mitglied_von_team.team_id = #__sportsmanager_team.team_id AND #__sportsmanager_mitglied_von_team.spieler_id = $mitglied->spieler_id"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $mitgliedschaften = $db->loadObjectList();
-
- foreach ($mitgliedschaften as $mitgliedschaft) {
- if (empty($mitgliedschaft->mitglied_von_team_id) || (!empty($mitgliedschaft->erster_spieltag) && $mitgliedschaft->erster_spieltag >= 2) || !empty($mitgliedschaft->letzter_spieltag)) {
- 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));
- }
- }
- }
-
- $query = "SELECT vorname, nachname, email"
- . "\n FROM #__sportsmanager_mitglied_von_team"
- . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
- . "\n INNER JOIN #__sportsmanager_team USING (team_id)"
- . "\n WHERE team_id = $id OR teamgruppe_id = $teamgruppe_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten"
- . "\n GROUP BY spieler_id"
- . "\n ORDER BY vorname, nachname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $mitglieder_sortiert_vorname = $db->loadObjectList();
-
- $mailverteiler = array();
- $mailverteiler["u"] = "";
- $mailverteiler["p"] = "";
- foreach ($mitglieder_sortiert_vorname as $row) {
- if (empty($row->email)) {
- continue;
- }
- $mailverteiler["u"] .= (!empty($mailverteiler["u"]) ? "; " : "") . urlencode($row->email);
- $mailverteiler["p"] .= (!empty($mailverteiler["p"]) ? ", " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">";
- }
-
- // Mitgliederstatistik ermitteln
- // Mitgliederstaatistik entfernt, da Berechnung teilweise 10 Sekunden beansprucht hat
-// if (!$team_moderator)
- $mitglieder_statistiken = NULL;
- /*
- else {
- $query = "SELECT vorname, nachname,"
- . "\n werte.*,"
- . "\n einzel_siege + einzel_unentschieden + einzel_niederlagen AS einzel_spiele,"
- . "\n doppel_siege + doppel_unentschieden + doppel_niederlagen AS doppel_spiele,"
- . "\n einzel_siege + doppel_siege AS gesamt_siege,"
- . "\n einzel_unentschieden + doppel_unentschieden AS gesamt_unentschieden,"
- . "\n einzel_niederlagen + doppel_niederlagen AS gesamt_niederlagen,"
- . "\n einzel_siege + einzel_unentschieden + einzel_niederlagen + doppel_siege + doppel_unentschieden + doppel_niederlagen AS gesamt_spiele,"
- . "\n einzel_punkte + doppel_punkte AS gesamt_punkte,"
- . "\n einzel_punkte_gesamt + doppel_punkte_gesamt AS gesamt_punkte_gesamt,"
- . "\n elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele"
- . "\n FROM #__sportsmanager_spieler,"
- . "\n (SELECT t1.spieler_id,"
- . "\n (SELECT COALESCE(SUM(IF(heim_spieler_1_id = t1.spieler_id, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte)), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id)) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id)))) AS einzel_punkte,"
- . "\n (SELECT COALESCE(SUM(teamspiel_heim_spielpunkte + teamspiel_gast_spielpunkte), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id)) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id)))) AS einzel_punkte_gesamt,"
- . "\n (SELECT COALESCE(SUM(IF(heim_spieler_1_id = t1.spieler_id OR heim_spieler_2_id = t1.spieler_id, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte)), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) OR (gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))))) AS doppel_punkte,"
- . "\n (SELECT COALESCE(SUM(teamspiel_heim_spielpunkte + teamspiel_gast_spielpunkte), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) OR (gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))))) AS doppel_punkte_gesamt,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte))) AS einzel_siege,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte))) AS einzel_unentschieden,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte))) AS einzel_niederlagen,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte))) AS doppel_siege,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte))) AS doppel_unentschieden,"
- . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte))) AS doppel_niederlagen"
- . "\n FROM #__sportsmanager_mitglied_von_team AS t1"
- . "\n WHERE team_id = $id AND NOT ISNULL(aktueller_verein_id)"
- . "\n GROUP BY spieler_id)"
- . "\n AS werte"
- . "\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)); }
- $mitglieder_statistiken = $db->loadObjectList();
- }
- */
-
- // Teamansprechpartner ermitteln
- $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $teamansprechpartner = $db->loadObjectList();
-
- // Begegnungen in der Veranstaltung ermitteln
- $query = "SELECT t2.veranstaltung_id, #__sportsmanager_begegnung.*, t2.tischtyp, t2.tischeigenschaften, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, unterteilung, "
- . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.teamname, t2.teamname) AS gegner,"
- . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.team_id, t2.team_id) AS gegner_id,"
- . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.teamgruppe_id, t2.teamgruppe_id) AS gegner_teamgruppe_id,"
- . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.verein_id, t2.verein_id) AS gegner_verein_id,"
- . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, 0, 1) AS auswaerts,"
- . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen,"
- . "\n (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verantwortlich_team_id"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
- . "\n INNER JOIN #__sportsmanager_veranstaltung ON #__sportsmanager_veranstaltung.veranstaltung_id = t2.veranstaltung_id"
- . "\n LEFT JOIN #__sportsmanager_teamspiel_modus ON teamspiel_modus_id = modus_id"
- . "\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()) {
- abortWithError($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- if ($unabhaengige_ansicht) {
- $vorheriges_team_id = 0;
- $naechstes_team_id = 0;
- } else {
- // Vorheriges und nächstes Team ermitteln
- if ($ansicht_vereinigt) {
- $query = "SELECT team_id"
- . "\n FROM #__sportsmanager_team"
- . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
- . "\n WHERE #__sportsmanager_veranstaltung.status > 0" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN")
- . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
- . "\n GROUP BY IF(teamgruppe_id <> 0 AND NOT ISNULL(teamgruppe_id), teamgruppe_id, team_id)"
- . "\n ORDER BY teamname";
- } else {
- $query = "SELECT team_id"
- . "\n FROM #__sportsmanager_team"
- . "\n WHERE veranstaltung_id = $veranstaltungid"
- . "\n ORDER BY teamname";
- }
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- $rows = $db->loadObjectList();
-
- $n = count($rows);
- $vorheriges_team_id = 0;
- $naechstes_team_id = 0;
- for ($i = 0; $i < $n; $i++) {
- if ($rows[$i]->team_id == $id) {
- if ($i > 0) {
- $vorheriges_team_id = $rows[$i - 1]->team_id;
- }
- if ($i + 1 < $n) {
- $naechstes_team_id = $rows[$i + 1]->team_id;
- }
- break;
- }
- }
- }
-
- 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)
- );
- } 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);
- }
-}
-
-function veranstaltungBegegnungeniCal() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $veranstaltung = $rows[0];
-
- // Begegnungen in der Veranstaltung ermitteln
- $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
- . "\n t2.teamname AS heim_teamname,"
- . "\n t3.teamname AS gast_teamname,"
- . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\n WHERE t5.veranstaltung_id = $id"
- . "\n ORDER BY zeitpunkt, heim_teamname";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- begegnungeniCal($veranstaltung->bezeichnung, SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id, -1), $begegnungen, $trigger);
-}
-
-function teamBegegnungeniCal() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- $trigger = $jinput->get('alarm', 0, 'INT');
-
- // Team ermitteln
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_team"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
- . "\n WHERE team_id = $id AND status > 0";
- $db->setQuery($query);
- if (!$result = $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 #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
- . "\n t2.teamname AS heim_teamname,"
- . "\n t3.teamname AS gast_teamname,"
- . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\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()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- begegnungeniCal($team->teamname, SportsManagerURL('&task=team_begegnungen_ical&id=' . $team->team_id, -1), $begegnungen, $trigger);
-}
-
-function vereinBegegnungeniCal() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $verein = $rows[0];
-
- // Begegnungen des Vereins ermitteln
- $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
- . "\n t2.teamname AS heim_teamname,"
- . "\n t3.teamname AS gast_teamname,"
- . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\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()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- begegnungeniCal($verein->vereinsname, SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id, -1), $begegnungen, $trigger);
-}
-
-function spielortBegegnungeniCal() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $spielort = $rows[0];
-
- // Begegnungen am Spielort ermitteln
- $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
- . "\n t2.teamname AS heim_teamname,"
- . "\n t3.teamname AS gast_teamname,"
- . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
- . "\n FROM #__sportsmanager_begegnung"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
- . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
- . "\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()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- begegnungeniCal($spielort->name, SportsManagerURL('&task=spielort_begegnungen_ical&id=' . $id, -1), $begegnungen, $trigger);
-}
-
-function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) {
- 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');
- echo "BEGIN:VCALENDAR\r\n";
- echo "VERSION:2.0\r\n";
- echo "PRODID:PHP\r\n";
- echo "METHOD:REQUEST\r\n";
- 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";
- $beschreibung = $begegnung->bezeichnung;
- if ($begegnung->spieltag != null)
- $beschreibung .= " (" . Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0) . ")";
- if ($begegnung->heim_spielpunkte != 0 || $begegnung->gast_spielpunkte != 0)
- $beschreibung .= (empty($beschreibung) ? "" : "\\n") . "Ergebnis: " . $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte . " (" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")";
- if (!empty($beschreibung))
- echo "DESCRIPTION:" . $beschreibung . "\r\n";
- $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());
- 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";
- echo "CATEGORIES:SPORT\r\n";
- echo "DTSTAMP:" . $dtstamp . "\r\n";
- if ($trigger != 0) {
- echo "BEGIN:VALARM\r\n";
- echo "ACTION:DISPLAY\r\n";
- echo "TRIGGER:-PT" . ($trigger > 60 ? (floor($trigger / 60) . "H") : "") . ($trigger % 60 != 0 ? (($trigger % 60) . "M") : "") . "\r\n";
- echo "END:VALARM\r\n";
- }
- echo "END:VEVENT\r\n";
- }
- echo "END:VCALENDAR\r\n";
- die();
-}
-
-function teamSpielplanXML() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
- $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()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $veranstaltung = $rows[0];
-
- // Team ermitteln
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_team"
- . "\n WHERE team_id = $id"
- . "\n ORDER BY teamname";
- $db->setQuery($query);
- if (!$result = $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,"
- . "\n IF(t1.heim_team_id = $id, 0, 1) AS auswaerts,"
- . "\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"
- . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
- . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
- . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
- . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
- . "\n WHERE t2.veranstaltung_id = $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()) {
- die($db->stderr(true));
- }
- $begegnungen = $db->loadObjectList();
-
- echo "<";
- ?>?xml version="1.0" encoding="utf-8"?>
-
-
-
-
-
-
-
-
- ]>
-
- heim_punkte != NULL || $row->gast_punkte != NULL) ? true : false;
- echo " spieltag . "\">\r\n";
- echo " " . ($row->verlegung_eingetragen ? "wird verlegt" : FormatiertesDatum($row->zeitpunkt)) . "\r\n";
- echo " " . utf8_encode(htmlspecialchars($row->gegner)) . "\r\n";
- echo " " . utf8_encode(htmlspecialchars($row->heimspielort_name)) . "\r\n";
- echo " ";
- if ($ergebnis_vorhanden)
- echo $row->auswaerts ? ($row->gast_punkte . " : " . $row->heim_punkte) : ($row->heim_punkte . " : " . $row->gast_punkte);
- echo "\r\n";
- echo " ";
- if ($ergebnis_vorhanden)
- echo $row->auswaerts ? ($row->gast_spielpunkte . " : " . $row->heim_spielpunkte) : ($row->heim_spielpunkte . " : " . $row->gast_spielpunkte);
- echo "\r\n";
- echo " \r\n";
- $id++;
- }
- ?>
-
- = $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;
- }
-
- function bildAnpassen($typ, $id = 0) {
- global $sportsmanager_joomla_path;
- $jinput = JFactory::getApplication()->input;
-
- if (empty($id))
- $id = $jinput->get('id', 0, 'INT');
- $fixed_width = $jinput->get('w', 0, 'INT');
- $fixed_height = $jinput->get('h', 0, 'INT');
- $max_width = $jinput->get('mw', 0, 'INT');
- $max_height = $jinput->get('mh', 0, 'INT');
- $no_cache = $jinput->get('nc', 0, 'INT');
-
- $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ . DIRECTORY_SEPARATOR . $id . '.';
- if (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();
- }
-
- $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);
- }
-
- function vereine() {
- $db = & getDatabase();
- global $params;
-
- $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $organisationAnzeigen = $db->loadResult() > 1;
-
- $query = "SELECT *, 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();
-
- HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen);
-
- administrationFooter();
- }
-
- function vereinDetails() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->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 (!$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);
- }
-
- function spielorte() {
- $db = & getDatabase();
- global $params;
-
- $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();
- }
- }
-
- function spielort() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $id = $jinput->get('id', 0, 'INT');
- if ($id == 0)
- die("Missing id!");
-
- // Spielort ermitteln
- $query = "SELECT *"
- . "\n FROM #__sportsmanager_spielort"
- . "\n WHERE spielort_id = $id AND status > 0";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($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));
- }
- $rows = $db->loadObjectList();
-
- $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;
- }
- }
-
- // 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();
-
- // 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 (!$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));
- }
-
- function begegnungSpielplan($teamansicht = false) {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->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 (!$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);
- if ($db->execute()) {
- $spielort = $db->loadObject();
- $begegnung->spielort_name = $spielort->name;
- }
- 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);
- }
- }
-
- 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);
- }
- }
-
- 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');
-
- if ($jinput->get('cancel', false, 'BOOL')) {
- redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid);
- return;
- }
-
- $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'));
- }
-
- $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;
-
- $query = "LOCK TABLES #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_begegnung READ, #__sportsmanager_verschieberegel READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
-
- // 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)) {
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- abortWithError($db->stderr(true));
- }
- 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));
- }
- }
- }
- $query = "UNLOCK TABLES;";
- $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);
- }
- }
-
- 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');
- $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 (!$result = $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 = "LOCK TABLES #__sportsmanager_veranstaltung READ, #__sportsmanager_team AS t1 READ,"
- . "#__sportsmanager_begegnung AS ttb1 READ, "
- . "#__sportsmanager_begegnung AS ttb2 READ, "
- . "#__sportsmanager_begegnung AS ttb3 READ, "
- . "#__sportsmanager_begegnung AS ttb4 READ, "
- . "#__sportsmanager_begegnung AS ttb5 READ, "
- . "#__sportsmanager_begegnung AS ttb6 READ, "
- . "#__sportsmanager_begegnung AS ttb7 READ, "
- . "#__sportsmanager_begegnung AS ttb8 READ, "
- . "#__sportsmanager_begegnung AS ttb9 READ, "
- . "#__sportsmanager_begegnung AS ttb10 READ, "
- . "#__sportsmanager_begegnung AS ttb11 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu1 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu2 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu3 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu4 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu5 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu6 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu7 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu8 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu9 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu10 READ, "
- . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu11 READ, "
- . "#__sportsmanager_team WRITE;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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 (!$result = $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 (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- 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();
-
- $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;
- }
-
- $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();
-
- 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 #__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));
- }
- }
- }
-
- $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()) {
- 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;
- 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 (!$result = $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
- }
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE) {
- $db = & getDatabase();
-
- $query = "LOCK TABLES #__sportsmanager_berechnung WRITE, #__sportsmanager_rangliste READ, #__sportsmanager_rangliste AS r2 READ, #__sportsmanager_spieler READ, #__sportsmanager_rangliste_system READ, #__sportsmanager_rangliste_system_punkte READ, #__sportsmanager_rangliste_turnierdisziplin READ, #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turnierdisziplin READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- 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 . "'"));
- $db->setQuery($query);
- if (!$result = $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";
- }
- $db->setQuery($query);
- if (!$result = $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;
- $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_punkte WHERE rangliste_id = $rangliste_id;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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"
- . "\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 (!$result = $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;
- }
- }
-
- $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);
-
- $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;
- }
-
- $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))
- $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;
- else if (!empty($rangliste->maxalter) && $jahr - $naechste_turnierplatzierung->geburtsjahr - 1 > $rangliste->maxalter)
- $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;
- if ($rangliste->geschlecht == 2 && $naechste_turnierplatzierung->geschlecht == 'M')
- $meldung_einzelner_doppelspieler_gewertet = TRUE;
- }
- }
- } 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 {
- $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) {
-
- }
- $math->setVariable('m', $wertung_multiplikator_normal);
- } else {
- try {
- $p = round($math->getValue());
- } catch (Exception $e) {
-
- }
- }
- }
- 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);";
- $db->setQuery($query);
- if (!$result = $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;
- }
- }
-
- error_reporting($error_level);
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_modus_id = 0) {
- $db = & getDatabase();
-
- $query = "LOCK TABLES #__sportsmanager_veranstaltung READ, #__sportsmanager_teamspiel_modus READ, #__sportsmanager_team READ, #__sportsmanager_begegnung WRITE, #__sportsmanager_teamspiel WRITE;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- 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";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rows = $db->loadObjectList();
- if (count($rows) < 1)
- die("Wrong id!");
- $teamspiel_modus = $rows[0];
-
- $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 (!$result = $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()) {
- 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;
- }
- }
- } 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()) {
- 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 (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- $query = "UNLOCK TABLES;";
- $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 = "LOCK TABLES #__sportsmanager_bestenliste READ, #__sportsmanager_bestenliste_veranstaltung READ, #__sportsmanager_bestenliste_individualwettbewerb READ, #__sportsmanager_bestenliste_punkte WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_teamspiel READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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 (!$result = $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 (!$result = $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 (!$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))";
- $db->setQuery($query);
- if (!$result = $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);
- }
- $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()) {
- die($db->stderr(true));
- }
- }
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- 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 = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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));
- }
-
- $query = "UNLOCK TABLES;";
- $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 = "LOCK TABLES #__sportsmanager_spieler WRITE;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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));
- }
- }
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- function eloGenerieren($datum_beginn, &$elo_einzel, &$elo_doppel, &$spiele_einzel, &$spiele_doppel, $spieler_id, &$spieler_elo_verlauf_einzel, &$spieler_elo_verlauf_doppel) {
- $db = & getDatabase();
-
- $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turnierspiel READ, #__sportsmanager_elo_cache WRITE, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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()) {
- 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 (!$result = $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)";
- $db->setQuery($query);
- if (!$result = $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));
- }
- }
-
- $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 ($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;
-
- 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 = "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));
- }
- }
- }
-
-// 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 ($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 (!$result = $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;
- // 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;
- $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"] = 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]["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 ((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"] = $individualwettbewerb_spiel->ergebnis;
- $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->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;
- $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"] = $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) {
- $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]["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 ((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"] = $individualwettbewerb_spiel->ergebnis;
- $spieler_elo_verlauf_doppel_nr++;
- }
- }
- }
- } else {
- // Turnierdisziplin auswerten
- $disziplin = $disziplinen[$disziplinen_nr++];
-
- $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";
- $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 ($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
- 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;
-
- // 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 ($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++;
- }
- }
- }
- }
- }
- $elo_einzel = $elo_einzel_neu;
- $elo_doppel = $elo_doppel_neu;
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- function spieleVerlauf($spieler_id, &$spieler_verlauf_einzel, &$spieler_verlauf_doppel) {
- $db = & getDatabase();
-
- $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turnierspiel READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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 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 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;
-
- $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?
-// 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 ($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 {
- // Doppel-Spiel
- if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0)
- continue;
-
- $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++];
-
- $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++;
- }
- }
- }
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- }
-
- 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";
- $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()) {
- 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);
- }
-
- $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";
- $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();
-
- $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_verein AS kategorie_verein READ, #__sportsmanager_veranstalter READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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);
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- 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();
-
- $query = "LOCK TABLES #__sportsmanager_saison READ, #__sportsmanager_spieler READ, #__sportsmanager_spieler AS theim1 READ, #__sportsmanager_spieler AS theim2 READ, #__sportsmanager_spieler AS tgast1 READ, #__sportsmanager_spieler AS tgast2 READ, #__sportsmanager_verein READ, #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb_platzierung READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT');
- if ($filter_saison_id == 0)
- $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT');
-
- $query = "SELECT saison_id, saisonbezeichnung"
- . "\n FROM #__sportsmanager_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()) {
- die($db->stderr(true));
- }
- $spiele = $db->loadObjectList();
-
- HTML_sportsmanager::individualwettbewerbSpiele($individualwettbewerbe_bezeichnungen, $spiele, $details_anzeigen);
- }
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- 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)");
-
- $math->setVariable('n', 15);
- $math->setVariable('p', 1);
- // echo $math->getValue() . "
";
-
- // 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
-
- // 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)");
-
- $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";
- $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_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();
-
- 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";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
- $rangliste_punkte = $db->loadObjectList();
-
- $turnierdisziplinen = array();
- $punkte = array();
- $platzierung = array();
-
- HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, FALSE, FALSE, $turnierdisziplinen, $punkte, $platzierung, $filter_saison_id, 0, 0, $details_anzeigen);
- }
-
- /*
- 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();
-
- if (count($ranglisten_uebrige) > 0)
- HTML_sportsmanager::ranglistenListe($ranglisten_uebrige);
- } s
- */
-
- administrationFooter();
- }
-
- function rangliste() {
- $db = & getDatabase();
- $jinput = JFactory::getApplication()->input;
-
- $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_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 (!$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];
-
- // 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 (!$result = $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);
- }
-
- function ranglistenpunkte() {
- $db = & getDatabase();
-
- $rangliste_id = JRequest::getInt('rangliste_id', 0);
- if ($rangliste_id == 0)
- die("Missing id!");
- $spieler_id = JRequest::getInt('spieler_id', 0);
- if ($spieler_id == 0)
- die("Missing id!");
-
- $filter_saison_id = JRequest::getInt('filter_saison_id', 0);
- if ($filter_saison_id == 0)
- $filter_saison_id = JRequest::getInt('sportsmanager_filter_saison_id', 0, 'cookie');
-
- $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 (!$gefunden)
- $filter_saison_id = $saisons[0]->saison_id;
- }
-
- $query = "LOCK TABLES #__sportsmanager_rangliste READ, #__sportsmanager_rangliste_punkte READ, #__sportsmanager_rangliste_turnierdisziplin_punkte READ, #__sportsmanager_rangliste_system READ, #__sportsmanager_rangliste_system_punkte READ, #__sportsmanager_rangliste_turnierdisziplin READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_spieler READ;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- // 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];
-
- // 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];
-
- $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 (!$result = $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 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));
-
- if ($spieler_anzahl_turnierdisziplinen > $bewertete_turnierdisziplinen) {
- foreach ($turnierdisziplinen as $turnierdisziplin)
- $streichergebnisse[$turnierdisziplin->turnierdisziplin_id] = $turnierdisziplin->punkte;
-
- 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;
- }
- }
- }
-
- // 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();
-
- $query = "UNLOCK TABLES;";
- $db->setQuery($query);
- if (!$result = $db->execute()) {
- die($db->stderr(true));
- }
-
- $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);
- }
- ?>
+");
+}
+
+laufzeitInit();
+
+require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . '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');
+
+initDatabase();
+updateDatabase();
+
+if (isset($_POST['filter_saison_id']))
+ setcookie('sportsmanager_filter_saison_id', $_POST['filter_saison_id'], time() + (60 * 60 * 24));
+else if (isset($_REQUEST['filter_saison_id']))
+ setcookie('sportsmanager_filter_saison_id', $_REQUEST['filter_saison_id'], time() + (60 * 60 * 24));
+
+global $content;
+global $task;
+global $params;
+$jinput = JFactory::getApplication()->input;
+$task = $jinput->getCmd('task');
+$app = JFactory::getApplication('site');
+$params = $app->getParams('com_sportsmanager');
+$content = isJson() && $jinput->getCmd('content', NULL) != NULL ? $jinput->getCmd('content') : $params->get('content');
+
+if (berechnungen())
+ return;
+
+if ($task == "spielerbild") {
+ spielerbild();
+} else if ($task == "anhang_termin") {
+ terminDokument();
+} else if ($task == "spieler_details") {
+ spielerDetails();
+} else if (substr($task, 0, 6) == "admin_") {
+ 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;
+ case 'admin_spieler_edit':
+ adminEditSpieler();
+ 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;
+ case 'admin_spieler_import_details_form':
+ adminImportSpielerDetailsForm();
+ break;
+ case 'admin_spieler_import_vorschau':
+ adminImportSpielerVorschau();
+ break;
+ case 'admin_spieler_import':
+ adminImportSpieler();
+ break;
+ case 'admin_spieler_export_form':
+ adminExportSpielerForm();
+ 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;
+ case 'admin_verein_edit':
+ adminEditVerein();
+ 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;
+ case 'admin_vereinsmitglied_edit':
+ adminEditVereinsmitglied();
+ break;
+ case 'admin_vereinsmitglied_save':
+ adminSaveVereinsmitglied();
+ break;
+ case 'admin_vereinsmitglied_remove':
+ adminRemoveVereinsmitglied();
+ break;
+ case 'admin_spielorte':
+ adminSpielorte();
+ break;
+ case 'admin_spielort_edit':
+ adminEditSpielort();
+ 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;
+ case 'admin_teamspiel_modus_edit':
+ adminEditTeamspielmodus();
+ 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;
+ case 'admin_verschieben_modus_edit':
+ adminEditVerschiebenModus();
+ 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;
+ case 'admin_ranglistensystem_edit':
+ adminEditRanglistensystem();
+ 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;
+ case 'admin_rangliste_turnierdisziplin_edit':
+ adminEditRanglisteTurnierdisziplin();
+ 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;
+ case 'admin_spielerstatistik_veranstaltung_edit':
+ adminEditSpielerstatistikVeranstaltung();
+ 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;
+ case 'admin_einstufung_edit':
+ adminEditEinstufung();
+ break;
+ case 'admin_einstufung_save':
+ adminSaveEinstufung();
+ break;
+ case 'admin_einstufung_remove':
+ adminRemoveEinstufung();
+ break;
+ case 'admin_saisons':
+ adminSaisons();
+ break;
+ case 'admin_saison_edit':
+ adminEditSaison();
+ break;
+ case 'admin_saison_save':
+ adminSaveSaison();
+ break;
+ case 'admin_saison_remove':
+ adminRemoveSaison();
+ break;
+ case 'admin_verteiler':
+ adminVerteiler();
+ break;
+ case 'admin_verteiler_edit':
+ adminEditVerteiler();
+ break;
+ case 'admin_verteiler_save':
+ adminSaveVerteiler();
+ break;
+ case 'admin_verteiler_remove':
+ adminRemoveVerteiler();
+ break;
+ case 'admin_rechnungen':
+ adminRechnungen();
+ break;
+ case 'admin_rechnung_edit':
+ adminEditRechnung();
+ break;
+ case 'admin_rechnung_save':
+ adminSaveRechnung();
+ break;
+ case 'admin_rechnung_remove':
+ adminRemoveRechnung();
+ break;
+ case 'admin_moderatoren':
+ adminModeratoren();
+ break;
+ case 'admin_moderator_edit':
+ adminEditModerator();
+ break;
+ case 'admin_moderator_save':
+ adminSaveModerator();
+ break;
+ case 'admin_moderator_remove':
+ adminRemoveModerator();
+ break;
+ case 'admin_veranstalter':
+ adminVeranstalter();
+ break;
+ case 'admin_veranstalter_edit':
+ adminEditVeranstalter();
+ 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;
+ case 'admin_team_edit':
+ adminEditMannschaft();
+ 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;
+ case 'admin_mitglied_edit':
+ adminEditMitglied();
+ 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;
+ case 'admin_begegnung_edit':
+ adminEditBegegnung();
+ 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;
+ case 'admin_begegnung_spielplan_edit_bestaetigen':
+ adminEditBegegnungSpielplan(1);
+ break;
+ case 'admin_begegnung_spielplan_save':
+ $input = isJson() ? $jinput->json : $jinput;
+ if ($input->get('ergebnis_bestaetigen', false, 'BOOL')) {
+ adminBegegnungSpielplanBestaetigen();
+ } 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;
+ case 'admin_individualwettbewerb_spiel_edit':
+ adminEditIndividualwettbewerbSpiel();
+ 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;
+ case 'admin_termin_edit':
+ adminEditTermin(1);
+ break;
+ case 'admin_termin_save':
+ adminSaveTermin(1);
+ break;
+ case 'admin_termin_remove_form':
+ adminRemoveTerminForm(1);
+ break;
+ case 'admin_termin_remove':
+ adminRemoveTermin(1);
+ break;
+ case 'admin_termine_verlauf':
+ adminTermineVerlauf(1);
+ break;
+ case 'admin_termin_details':
+ adminTerminDetails(1);
+ break;
+ case 'admin_termin_moderieren':
+ adminTerminModerieren(1);
+ break;
+ case 'admin_termine_bezeichnungen':
+ adminTermineBezeichnungen(1);
+ break;
+ case 'admin_termine_bezeichnung_edit':
+ adminEditTermineBezeichnung(1);
+ break;
+ case 'admin_termine_bezeichnung_save':
+ adminSaveTermineBezeichnung(1);
+ break;
+ case 'admin_termine_bezeichnung_remove':
+ adminRemoveTermineBezeichnung(1);
+ break;
+ case 'admin_termine_bezeichnungszusaetze':
+ adminTermineBezeichnungszusaetze(1);
+ break;
+ case 'admin_termine_bezeichnungszusatz_edit':
+ adminEditTermineBezeichnungszusatz(1);
+ break;
+ case 'admin_termine_bezeichnungszusatz_save':
+ adminSaveTermineBezeichnungszusatz(1);
+ break;
+ case 'admin_termine_bezeichnungszusatz_remove':
+ adminRemoveTermineBezeichnungszusatz(1);
+ break;
+ case 'admin_termine_bundeslaender':
+ adminTermineBundeslaender(1);
+ break;
+ case 'admin_termine_bundesland_edit':
+ adminEditTermineBundesland(1);
+ break;
+ case 'admin_termine_bundesland_save':
+ adminSaveTermineBundesland(1);
+ break;
+ case 'admin_termine_bundesland_remove':
+ adminRemoveTermineBundesland(1);
+ break;
+ case 'admin_termine_laender':
+ adminTermineLaender(1);
+ break;
+ case 'admin_termine_land_edit':
+ adminEditTermineLand(1);
+ break;
+ case 'admin_termine_land_save':
+ adminSaveTermineLand(1);
+ break;
+ case 'admin_termine_land_remove':
+ adminRemoveTermineLand(1);
+ break;
+ case 'admin_termine_symbole':
+ adminTermineSymbole(1);
+ break;
+ case 'admin_termine_symbol_edit':
+ adminEditTermineSymbol(1);
+ 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;
+ case 'admin_turnierdisziplin_edit':
+ adminEditTurnierdisziplin();
+ 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;
+ case 'admin_spieler_bilder_importieren':
+ adminSpielerImportBilder();
+ break;
+ case 'admin_vereine_bilder_exportieren_form':
+ adminVereineExportBilderForm();
+ break;
+ case 'admin_vereine_bilder_exportieren':
+ adminVereineExportBilder();
+ break;
+ case 'admin_vereine_bilder_importieren_form':
+ adminVereineImportBilderForm();
+ break;
+ case 'admin_vereine_bilder_importieren':
+ adminVereineImportBilder();
+ break;
+ case 'admin_grooming_mehrfache_mitgliedschaften':
+ adminGroomingMehrfacheMitgliedschaften();
+ break;
+ default:
+ if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator() && (benutzerVeranstalterModerator() || benutzerVereinModerator()))
+ adminSpieler(0);
+ else
+ adminUebersicht();
+ break;
+ }
+}
+else if ($content == "players") {
+ switch ($task) {
+ default:
+ spieler();
+ break;
+ }
+} else if ($content == "elorangliste") {
+ switch ($task) {
+ default:
+ eloRanglisten();
+ break;
+ }
+} else if ($content == "individualwettbewerbe") {
+ switch ($task) {
+ default:
+ individualwettbewerbe();
+ break;
+ }
+} else if ($content == "teams" || $content == "teams_vereinigt") {
+ switch ($task) {
+ case 'begegnung_spielplan':
+ begegnungSpielplan(true);
+ break;
+ case 'team_details':
+ mannschaftDetails($content == "teams_vereinigt");
+ break;
+ case 'team_spielplan_xml':
+ teamSpielplanXML();
+ break;
+ case 'team_begegnungen_ical':
+ teamBegegnungeniCal();
+ break;
+ default:
+ mannschaften($content == "teams_vereinigt");
+ break;
+ }
+} else if ($content == "vereine") {
+ switch ($task) {
+ case 'verein_details':
+ vereinDetails();
+ break;
+ case 'verein_begegnungen_ical':
+ vereinBegegnungeniCal();
+ break;
+ default:
+ vereine();
+ break;
+ }
+} else if ($content == "turniervoranmeldungen") {
+ switch ($task) {
+ default:
+ turniervoranmeldungen();
+ break;
+ }
+} else if ($content == "turniere") {
+ switch ($task) {
+ case 'turnierdisziplin':
+ turnierdisziplin();
+ break;
+ case 'turnierdisziplinen':
+ turnierdisziplinen();
+ break;
+ default:
+ turniere();
+ break;
+ }
+} else if ($content == "ranglisten") {
+ switch ($task) {
+ case 'ranglistenpunkte':
+ ranglistenpunkte();
+ break;
+ case 'rangliste':
+ rangliste();
+ break;
+ default:
+ ranglisten();
+ break;
+ }
+} else if ($content == "spielerstatistiken") {
+ switch ($task) {
+ case 'spielerstatistik':
+ spielerstatistik();
+ break;
+ default:
+ spielerstatistiken();
+ break;
+ }
+} else if ($content == "aktuelle_begegnungen") {
+ switch ($task) {
+ case 'begegnung_verlegen_form':
+ begegnungVerlegenForm();
+ break;
+ case 'begegnung_verlegen':
+ begegnungVerlegen();
+ 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;
+ }
+} else if ($content == "aktuelle_begegnungen_pin") {
+ switch ($task) {
+ case 'begegnung_verlegen_form':
+ begegnungVerlegenForm();
+ break;
+ case 'begegnung_verlegen':
+ begegnungVerlegen();
+ break;
+ case 'begegnung_verlegen_bestaetigen':
+ begegnungVerlegenBestaetigen();
+ break;
+ case 'begegnung_spielplan':
+ begegnungSpielplan();
+ break;
+ case 'pineingabe':
+ adminEditBegegnungSpielplan(2);
+ 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;
+ }
+} else if ($content == "mannschaftswettbewerbe") {
+ switch ($task) {
+ case 'begegnung_verlegen_form':
+ begegnungVerlegenForm();
+ break;
+ case 'begegnung_verlegen':
+ begegnungVerlegen();
+ break;
+ case 'begegnung_verlegen_bestaetigen':
+ begegnungVerlegenBestaetigen();
+ break;
+ case 'begegnung_spielplan':
+ begegnungSpielplan();
+ break;
+ case 'veranstaltung':
+ veranstaltung();
+ 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();
+ }
+} else if ($content == "spielorte") {
+ switch ($task) {
+ case 'begegnung_verlegen_form':
+ begegnungVerlegenForm();
+ break;
+ case 'begegnung_verlegen':
+ begegnungVerlegen();
+ 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;
+ }
+} else if ($content == "termine") {
+ switch ($task) {
+ case 'termin_edit':
+ adminEditTermin(0);
+ break;
+ case 'termin_save':
+ adminSaveTermin(0);
+ break;
+ case 'termin_remove_form':
+ adminRemoveTerminForm(0);
+ break;
+ case 'termin_remove':
+ adminRemoveTermin(0);
+ break;
+ case 'termine_verlauf':
+ adminTermineVerlauf(0);
+ break;
+ case 'termin_details':
+ adminTerminDetails(0);
+ break;
+ case 'termin_moderieren':
+ adminTerminModerieren(0);
+ case 'termine_bezeichnungen':
+ adminTermineBezeichnungen(0);
+ break;
+ case 'termine_bezeichnung_edit':
+ adminEditTermineBezeichnung(0);
+ break;
+ case 'termine_bezeichnung_save':
+ adminSaveTermineBezeichnung(0);
+ break;
+ case 'termine_bezeichnung_remove':
+ adminRemoveTermineBezeichnung(0);
+ break;
+ case 'termine_bezeichnungszusaetze':
+ adminTermineBezeichnungszusaetze(0);
+ break;
+ case 'termine_bezeichnungszusatz_edit':
+ adminEditTermineBezeichnungszusatz(0);
+ break;
+ case 'termine_bezeichnungszusatz_save':
+ adminSaveTermineBezeichnungszusatz(0);
+ break;
+ case 'termine_bezeichnungszusatz_remove':
+ adminRemoveTermineBezeichnungszusatz(0);
+ break;
+ case 'termine_bundeslaender':
+ adminTermineBundeslaender(0);
+ break;
+ case 'termine_bundesland_edit':
+ adminEditTermineBundesland(0);
+ break;
+ case 'termine_bundesland_save':
+ adminSaveTermineBundesland(0);
+ break;
+ case 'termine_bundesland_remove':
+ adminRemoveTermineBundesland(0);
+ break;
+ case 'termine_laender':
+ adminTermineLaender(0);
+ break;
+ case 'termine_land_edit':
+ adminEditTermineLand(0);
+ break;
+ case 'termine_land_save':
+ adminSaveTermineLand(0);
+ break;
+ case 'termine_land_remove':
+ adminRemoveTermineLand(0);
+ break;
+ case 'termine_symbole':
+ adminTermineSymbole(0);
+ break;
+ case 'termine_symbol_edit':
+ adminEditTermineSymbol(0);
+ break;
+ case 'termine_symbol_save':
+ adminSaveTermineSymbol(0);
+ break;
+ case 'termine_symbol_remove':
+ adminRemoveTermineSymbol(0);
+ break;
+ default:
+ adminTermine(0);
+ break;
+ }
+} else if ($content == 'login') {
+ userAuth();
+} else if ($content == 'login_refresh') {
+ userToken();
+} else {
+ adminUebersicht();
+}
+// laufzeitAusgeben();
+
+return;
+
+function redirectSportsManagerURL($weitereParameter = NULL, $nachricht = '') {
+ global $redirect_session_id;
+ if (!empty($redirect_session_id)) {
+ if (empty($weitereParameter))
+ $weitereParameter = '';
+ $weitereParameter .= "&rsession_id=" . urlencode($redirect_session_id);
+ }
+ $app = &JFactory::getApplication();
+ $app->redirect(SportsManagerURL($weitereParameter), $nachricht);
+ return;
+}
+
+function redirectCurrentURL() {
+ global $redirect_session_id;
+ $u = & JURI::getInstance();
+ if (!empty($redirect_session_id))
+ $u->setVar('rsession_id', $redirect_session_id);
+ $app = &JFactory::getApplication();
+ $app->redirect($u->toString());
+}
+
+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() {
+ 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 berechnungen() {
+ $db = & getDatabase();
+
+ $session_id = redirectRequestGetSessionId();
+
+ $query = "SELECT IF(EXISTS("
+ . "\n SELECT *"
+ . "\n FROM #__sportsmanager_berechnung"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $berechnungen = $db->loadResult();
+ ;
+
+ if (empty($berechnungen))
+ return FALSE;
+
+ ranglisteAktualisieren(0, 0, 0, TRUE);
+ einstufungAktualisieren(TRUE);
+
+ $u = & JURI::getInstance();
+ $app = &JFactory::getApplication();
+ $app->redirect($u->toString());
+ return TRUE;
+}
+
+function benutzerJoomlaAdmin() {
+ $version = new JVersion;
+ $joomla = $version->getShortVersion();
+
+ if (substr($joomla, 0, 3) != '1.5') {
+ if (JFactory::getUser()->authorise('core.manage', 'com_sportsmanager'))
+ return true;
+ } else {
+ JFactory::getACL()->addACL('com_sportsmanager', 'manage', 'users', 'super administrator');
+ if (JFactory::getUser()->authorize('com_sportsmanager', 'manage'))
+ return true;
+ }
+}
+
+function benutzerModerator() {
+ $db = & getDatabase();
+
+ if (benutzerJoomlaAdmin())
+ return TRUE;
+
+ if (isExternalDatabase())
+ return FALSE;
+
+ $user_id = JFactory::getUser()->id;
+ $query = "SELECT COUNT(*)"
+ . "\n FROM #__sportsmanager_moderator"
+ . "\n WHERE moderator_user_id = $user_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $gefunden = $db->loadResult();
+ return !empty($gefunden);
+}
+
+function benutzerZugriff($zugriff, $joomlaAdminIgnorieren = FALSE) {
+ $db = & getDatabase();
+
+ if (!$joomlaAdminIgnorieren && benutzerJoomlaAdmin())
+ return TRUE;
+
+ if (isExternalDatabase())
+ return FALSE;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $gefunden = $db->loadResult();
+ return !empty($gefunden);
+}
+
+function benutzerIndividualwettbewerbModerator($individualwettbewerb_id = NULL) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function benutzerVeranstalterModerator($veranstalter_id = NULL) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function benutzerVeranstaltungModerator($veranstaltung_id = NULL) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function benutzerVeranstaltungIdsModerator() {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return array();
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $ids = array();
+ foreach ($rows as $row)
+ array_push($ids, $row->veranstaltung_id);
+
+ return $ids;
+}
+
+function benutzerTurnierModerator($turnier_id = NULL) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function benutzerMannschaftModerator($team_id) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function benutzerVereinModerator($verein_id = NULL) {
+ $db = & getDatabase();
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = JFactory::getUser()->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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return false;
+
+ return true;
+}
+
+function currentUserHasAccessToDetails() {
+ $db = & getDatabase();
+
+ if (benutzerModerator())
+ return true;
+
+ if (isExternalDatabase())
+ return false;
+
+ $user_id = isJson() ? getUserID() : JFactory::getUser()->id;
+ $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) > 0)
+ return true;
+
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) > 0)
+ return true;
+
+ $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_user_id = $user_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) > 0)
+ return true;
+
+ return false;
+}
+
+function administrationFooter() {
+ if (benutzerModerator() || benutzerVeranstaltungModerator() || benutzerTurnierModerator() || benutzerIndividualwettbewerbModerator())
+ $benutzer_zugriff = 2;
+ else if (benutzerVereinModerator() || benutzerVeranstalterModerator())
+ $benutzer_zugriff = 1;
+ else
+ $benutzer_zugriff = 0;
+
+ if ($benutzer_zugriff)
+ HTML_sportsmanager::administrationFooter();
+}
+
+function einstellungswert($name) {
+ $db = & getDatabase();
+
+ $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = '$name'";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 0)
+ return null;
+ return $rows[0]->wert;
+}
+
+function aktuelleBegegnungen($pineingabe = FALSE) {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->input;
+
+
+ $praesentation = $jinput->get('praesentation', 0, 'INT');
+ $aktualisieren = $jinput->get('aktualisieren', 0, 'INT');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\n GROUP BY saison_id"
+ . "\n ORDER BY saisonbezeichnung DESC";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $saisons = $db->loadObjectList();
+
+ $ticker_anzeigen = false;
+ if (count($saisons) != 0) {
+ $filter_saison_id = $saisons[0]->saison_id;
+
+ $query = "SELECT #__sportsmanager_veranstaltung.*"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ if (count($veranstaltungen) > 0)
+ $ticker_anzeigen = true;
+ }
+
+ $pineingabe_anzeigen = false;
+ if ($pineingabe) {
+ $query = "SELECT IF(EXISTS("
+ . "\n ("
+ . "\n SELECT *"
+ . "\n FROM #__sportsmanager_begegnung AS t1"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin != '') OR (NOT ISNULL(t3.pin) AND t3.pin != ''))"
+ . "\n )"
+ . "\n ), 1, 0)";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $pin_begegnungen = $db->loadResult();
+
+ if ($pin_begegnungen > 0) {
+ $pineingabe_anzeigen = true;
+ }
+ }
+
+ if (isJson()) {
+ 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'))
+ );
+ } 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)
+ ]);
+ }
+ } 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);
+ administrationFooter();
+ } else {
+ echo "\r\n";
+ echo "\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\r\n";
+ begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation);
+ echo " | \r\n
\r\n
\r\n";
+ }
+ }
+}
+
+function veranstaltungen() {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->input;
+
+ $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');
+ }
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\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 #__sportsmanager_veranstaltung.*"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ $ticker_anzeigen = false;
+ if (count($veranstaltungen) > 0) {
+ $ticker_anzeigen = true;
+ }
+
+ if (!isJson()) {
+ // 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);
+ veranstaltung();
+ //redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungen[0]->veranstaltung_id);
+ return;
+ }
+
+ HTML_sportsmanager::veranstaltungenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $praesentation, $ticker_anzeigen);
+ }
+ $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung,"
+ . "\n EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND ISNULL(platz) OR platz = 0) AS platzierung_offen"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ if (isJson()) {
+ $json = [];
+ foreach ($veranstaltungen as $veranstaltung) {
+ $competition = [
+ 'veranstaltung' => $veranstaltung,
+ 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0),
+ 'tabelle' => NULL
+ ];
+ if ($veranstaltung->tabellenwertung != 0) {
+ $competition['tabelle'] = tabelle($veranstaltung, $spieltag, true);
+ }
+ $json[] = $competition;
+ }
+ echo json_encode($json);
+ } else {
+ if ($praesentation == 1 || $praesentation == 2)
+ echo "\r\n\r\n";
+
+ foreach ($veranstaltungen as $veranstaltung) {
+ if ($praesentation == 1 || $praesentation == 2)
+ echo "| \r\n";
+ if ($veranstaltung->tabellenwertung != 0 && ($veranstaltung->tabellenwertung != -1 || !$veranstaltung->platzierung_offen)) {
+ HTML_sportsmanager::tabelleHeader($veranstaltung);
+ tabelle($veranstaltung, 0, false, $praesentation);
+ } else {
+ begegnungenAnzeigen($veranstaltung, NULL, NULL, 0, false, false, false, $veranstaltung->bezeichnung, false, true, $praesentation);
+ }
+ if ($praesentation == 1 || $praesentation == 2)
+ echo " | \r\n";
+ }
+ if ($praesentation == 1 || $praesentation == 2)
+ echo "
\r\n";
+ if ($praesentation == 2 || $praesentation == 3) {
+ if ($praesentation == 3)
+ echo "\r\n";
+ echo "\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\r\n";
+ begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation);
+ echo " | \r\n
";
+ }
+
+ if ($praesentation == 1 || $praesentation == 2 || $praesentation == 3)
+ echo "\r\n\r\n
\r\n";
+
+ if ($praesentation == 0)
+ administrationFooter();
+
+ if ($aktualisieren)
+ HTML_sportsmanager::automatischAktualisieren($aktualisieren);
+ }
+}
+
+function veranstaltung() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->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');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\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;
+ }
+
+ $id = $jinput->get('veranstaltungid', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ settype($id, 'integer');
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $veranstaltung = $rows[0];
+
+ if (isJson()) {
+ $json = [
+ 'veranstaltung' => $veranstaltung,
+ 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0)
+ ];
+ if ($veranstaltung->tabellenwertung != 0) {
+ $table = tabelle($veranstaltung, $spieltag, true);
+ $json['tabelle'] = $table['tabelle'];
+ $json['modus'] = $table['modus'];
+ }
+ JSON_sportsmanager::JSON($json);
+ } else {
+ // Vorherige und nächste Veranstaltung ermitteln
+ $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $n = count($rows);
+ $vorherige_veranstaltung_id = 0;
+ $naechste_veranstaltung_id = 0;
+ for ($i = 0; $i < $n; $i++) {
+ if ($rows[$i]->veranstaltung_id == $id) {
+ if ($i > 0)
+ $vorherige_veranstaltung_id = $rows[$i - 1]->veranstaltung_id;
+ if ($i + 1 < $n)
+ $naechste_veranstaltung_id = $rows[$i + 1]->veranstaltung_id;
+ break;
+ }
+ }
+
+ // Anzeigen
+ HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $filter_saison_id);
+
+ if ($veranstaltung->tabellenwertung != 0)
+ tabelle($veranstaltung, $spieltag, true);
+
+ begegnungenAnzeigen($veranstaltung, NULL, NULL, 0);
+ HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id));
+ }
+}
+
+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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) == 1)
+ $modus = $rows[0];
+
+ if ($veranstaltung->tabellenwertung > 0) {
+ // Spieltage ermitteln, an denen schon eine Begegnung ausgetragen wurde
+ $query = "SELECT DISTINCT spieltag"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
+ . "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
+ . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id 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()) {
+ die($db->stderr(true));
+ }
+ $spieltage = $db->loadObjectList();
+
+ $aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0;
+ if ($spieltag == 0 || $veranstaltung->tabellenwertung >= 21)
+ $spieltag = $aktueller_spieltag;
+
+ if ($spieltag == $aktueller_spieltag) {
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_team"
+ . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
+ . "\n ORDER BY platz, teamname";
+ } else {
+ $query = "SELECT verein_id, teamname, zusatzpunkte,"
+ . "\n werte.*,"
+ . "\n werte.siege * " . ($veranstaltung->tabellenwertung <= 3 ? "2" : ($veranstaltung->tabellenwertung <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung <= 6 ? " + werte.unentschieden" : "") . " + COALESCE(zusatzpunkte, 0) AS gesamtpunkte,"
+ . "\n werte.siege * " . ($veranstaltung->tabellenwertung <= 3 ? "2" : ($veranstaltung->tabellenwertung <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung <= 6 ? " + werte.unentschieden" : "") . " AS begegnungspunkte,"
+ . "\n werte.punkte_gewonnen - werte.punkte_verloren AS punkte_differenz,"
+ . "\n IF(werte.punkte_verloren = 0, -1, werte.punkte_gewonnen / werte.punkte_verloren) AS punkte_quotient,"
+ . "\n werte.spielpunkte_gewonnen - werte.spielpunkte_verloren AS spielpunkte_differenz,"
+ . "\n IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren) AS spielpunkte_quotient"
+ . "\n FROM #__sportsmanager_team"
+ . "\n LEFT JOIN"
+ . "\n (SELECT t1.team_id,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte > tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte > tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS siege,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND tt1.heim_spielpunkte = tt1.gast_spielpunkte AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS unentschieden,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte < tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte < tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS niederlagen,"
+ . "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_gewonnen,"
+ . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_verloren,"
+ . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen,"
+ . "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_verloren"
+ . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
+ . "\n AS werte USING (team_id)"
+ . "\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 == 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
+ $query .= "\n ORDER BY gesamtpunkte DESC, teamname";
+ }
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $teams = $db->loadObjectList();
+
+ if (isJson()) {
+ return JSON_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation);
+ } else {
+ HTML_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation);
+ }
+ } else {
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_team"
+ . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
+ . "\n ORDER BY ISNULL(platz), platz, teamname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $teams = $db->loadObjectList();
+ if (isJson()) {
+ return JSON_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation);
+ } else {
+ HTML_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation);
+ }
+ }
+}
+
+function veranstaltungenTicker($aktuelle_saison_anzeigen = false) {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->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');
+
+ $type = $jinput->get('type', '', 'RAW');
+ $day = $jinput->get('day', '', 'RAW');
+ $currentpage = $jinput->get('currentpage', '', 'RAW');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\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) {
+ if ($aktuelle_saison_anzeigen) {
+ $filter_saison_id = $saisons[0]->saison_id;
+ } else {
+ $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;
+ }
+ } else {
+ $filter_saison_id = 0;
+ }
+
+ $query = "SELECT #__sportsmanager_veranstaltung.veranstaltung_id, ticker_logo_url"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\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()) {
+ 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;
+ $logo_url = $veranstaltung->ticker_logo_url;
+ continue;
+ }
+ 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;
+ }
+ }
+
+ HTML_sportsmanager_ticker::veranstaltungenTicker($id, $logo_url);
+ jexit();
+}
+
+function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->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');
+
+ $type = $jinput->get('type', '', 'RAW');
+ $day = $jinput->get('day', '', 'RAW');
+ $currentpage = $jinput->get('currentpage', '', 'RAW');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\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) {
+ if ($aktuelle_saison_anzeigen) {
+ $filter_saison_id = $saisons[0]->saison_id;
+ } else {
+ $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;
+ }
+ } else {
+ $filter_saison_id = 0;
+ }
+
+ if (strstr($type, 'matchdetail') !== false) {
+ $veranstaltungen = NULL;
+ $tabellen = NULL;
+ $begegnung_spiele = NULL;
+ $veranstaltung_elimination_index = -1;
+ $details = explode('matchdetail', $type);
+ if (count($details) < 2 || !ctype_digit($details[1]))
+ jexit();
+ $begegnung_id = $details[1];
+
+ // 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"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n WHERE 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()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+ if (count($begegnungen) < 1)
+ die("Wrong id!");
+ $begegnung = $begegnungen[0];
+
+ // Spiele ermitteln
+ $query = "SELECT t1.*, theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, "
+ . "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 = $begegnung_id"
+ . "\n GROUP BY teamspiel_id"
+ . "\n ORDER BY teamspiel_nummer";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $begegnung_spiele = $db->loadObjectList();
+ } else {
+ $begegnung_spiele = NULL;
+ $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\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")
+ . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ $veranstaltung_elimination_index = -1;
+ foreach ($veranstaltungen as $index => $veranstaltung) {
+ if ($veranstaltung->tabellenwertung == -1) {
+ if ($veranstaltung_elimination_index == -1) {
+ $veranstaltung_elimination_index = $index;
+ } else {
+ $veranstaltung_elimination_index = -1;
+ break;
+ }
+ }
+ }
+
+ $tabellen = array();
+ foreach ($veranstaltungen as $index => $veranstaltung) {
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_team"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $tabellen[$index] = $db->loadObjectList();
+ }
+
+ $begegnungen = array();
+ 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;
+ $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"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_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)" : "")
+ . "\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()) {
+ 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"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
+ . "\n WHERE t2.veranstaltung_id = " . $veranstaltungen[$veranstaltung_elimination_index]->veranstaltung_id
+ . "\n ORDER BY begegnung_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+ }
+ }
+
+ HTML_sportsmanager_ticker::veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $currentpage, $begegnung_spiele);
+ jexit();
+}
+
+function veranstaltungenTickerCSS() {
+ header("Content-type: text/css");
+ HTML_sportsmanager_ticker::veranstaltungenTickerCSS();
+ jexit();
+}
+
+function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) {
+ $jinput = JFactory::getApplication()->input;
+
+ $matches = $jinput->get('matches', '', 'RAW');
+ $groups = $jinput->get('groups', '', 'RAW');
+
+ $db = & getDatabase();
+ global $params;
+
+ $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');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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")
+ . "\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) {
+ if ($aktuelle_saison_anzeigen) {
+ $filter_saison_id = $saisons[0]->saison_id;
+ } else {
+ $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;
+ }
+ } else {
+ $filter_saison_id = 0;
+ }
+
+ if ($matches == "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 ($matches == "finmatches") {
+ $ausgetragene_filtern = false;
+ $zwischenergebnisse_filtern = true;
+ $auszutragende_filtern = true;
+ } elseif ($matches == "upcmatches") {
+ $ausgetragene_filtern = true;
+ $zwischenergebnisse_filtern = true;
+ $auszutragende_filtern = false;
+ } else { // if ($matches == "runmatches") {
+ $ausgetragene_filtern = true;
+ $zwischenergebnisse_filtern = false;
+ $auszutragende_filtern = true;
+ }
+ $query = "SELECT MAX(eingetragen)"
+ . "\n FROM #__sportsmanager_begegnung AS t1"
+ . "\n LEFT JOIN #__sportsmanager_begegnung_historie USING (begegnung_id)"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND 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()) {
+ die($db->stderr(true));
+ }
+ $matches_timestamp = $db->loadResult();
+
+ if (!empty($matches_timestamp)) {
+ if ($ausgetragene_filtern || $zwischenergebnisse_filtern || $auszutragende_filtern) {
+ $query = "SELECT MAX(eingetragen)"
+ . "\n FROM #__sportsmanager_begegnung AS t1"
+ . "\n LEFT JOIN #__sportsmanager_begegnung_historie USING (begegnung_id)"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id");
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $groups_timestamp = $db->loadResult();
+ } else
+ $groups_timestamp = $matches_timestamp;
+ }
+ else {
+ $matches_timestamp = date("Y-m-d H:i");
+ $groups_timestamp = $matches_timestamp;
+ }
+
+ HTML_sportsmanager_ticker::veranstaltungenTickerTimestamp($matches_timestamp, $groups_timestamp);
+ 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);
+
+
+ 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,"
+ . "\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,"
+ . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
+ . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
+ . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
+ . "\n FROM #__sportsmanager_begegnung AS t1"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ $modus = NULL;
+ } else if ($spielort_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,"
+ . "\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,"
+ . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
+ . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
+ . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
+ . "\n FROM #__sportsmanager_begegnung AS t1"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ $modus = NULL;
+ } else if ($veranstaltung == NULL) {
+ $homeTeamSpielort = JFactory::getApplication()->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,"
+ . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
+ . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
+ . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
+ . "\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_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"
+ . ($year != NULL && $month != NULL
+ ? "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . " AND YEAR(zeitpunkt) = " . $year . " AND MONTH(zeitpunkt) = " . $month
+ : "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . ($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()) {
+ abortWithError($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ $modus = NULL;
+ } else {
+ $homeTeamSpielort = JFactory::getApplication()->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,"
+ . "\n (SELECT vorschlagendes_team_id FROM #__sportsmanager_unbestaetigtes_ergebnis AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id LIMIT 1) AS unbestaetigtes_ergebnis_team_id,"
+// Folgende zwei Zeilen machen die Datenbankabfrage langsam (etwa 3 Sekunden pro Zeile)
+ . "\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 (SELECT verantwortlich_team_id 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 verantwortlich_team_id,"
+//
+ . "\n IF(NOT ISNULL(t6.verschieberegel_id) AND (t6.vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= t6.vorlaufzeit_tage), 1, 0) AS verschieberegel_erfuellt"
+ . "\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_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()) {
+ abortWithError($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ $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];
+ }
+ 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);
+ }
+ return $begegnungen;
+ } else {
+ HTML_sportsmanager::begegnungenAnzeigen($veranstaltung, $modus, $begegnungen, $zeitfenster, $titel, $aus_uebersicht, $praesentation);
+ return count($begegnungen);
+ }
+}
+
+function turniere() {
+ global $params;
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->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');
+
+ $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;
+ }
+
+ HTML_sportsmanager::turniereHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
+ $query = "SELECT *, 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)"
+ . "\n WHERE turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"
+ . "\n GROUP BY turnier_id"
+ . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $turniere = $db->loadObjectList();
+
+ HTML_sportsmanager::turniere($turniere);
+
+ administrationFooter();
+}
+
+function turnierdisziplinen() {
+ $db = & getDatabase();
+ $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');
+ $turnier_id = $jinput->get('turnierid', 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 #__sportsmanager_turnier.*"
+ . "\n FROM #__sportsmanager_turnier"
+ . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (empty($rows))
+ die("Wrong id");
+ $turnier = $rows[0];
+
+ $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 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()) {
+ die($db->stderr(true));
+ }
+ $disziplinen = $db->loadObjectList();
+
+ // Vorheriges und nächstes Turnier ermitteln
+ $query = "SELECT turnier_id"
+ . "\n FROM #__sportsmanager_turnier"
+ . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
+ . "\n WHERE #__sportsmanager_turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"
+ . "\n GROUP BY turnier_id"
+ . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $n = count($rows);
+ $vorherige_turnier_id = 0;
+ $naechste_turnier_id = 0;
+ for ($i = 0; $i < $n; $i++) {
+ if ($rows[$i]->turnier_id == $turnier_id) {
+ if ($i > 0)
+ $vorherige_turnier_id = $rows[$i - 1]->turnier_id;
+ if ($i + 1 < $n)
+ $naechste_turnier_id = $rows[$i + 1]->turnier_id;
+ break;
+ }
+ }
+
+ HTML_sportsmanager::turnierdisziplinenHeader($turnier, $vorherige_turnier_id, $naechste_turnier_id);
+
+ foreach ($disziplinen as $disziplin) {
+ HTML_sportsmanager::disziplinHeader($disziplin);
+
+ $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()) {
+ 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()) {
+ die($db->stderr(true));
+ }
+ $meldungen = $db->loadObjectList();
+
+ $query = "SELECT turniermeldung_id, spieler_id, geschlecht, bild_ausblenden, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname"
+ . "\n FROM #__sportsmanager_turniermeldung"
+ . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)"
+ . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
+ . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
+ . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '0' AND platz <= 3"
+ . "\n ORDER BY turniermeldung_spieler_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $meldungenSpieler = $db->loadObjectList();
+
+ $meldungenSpielerIds = array();
+ $meldungenSpielerNamen = array();
+ $meldungenSpielerGeschlechter = array();
+ $meldungenSpielerBilderAusblenden = 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;
+ if (!isset($meldungenSpielerIds[$turniermeldung_id])) {
+ $meldungenSpielerIds[$turniermeldung_id] = array();
+ $meldungenSpielerNamen[$turniermeldung_id] = array();
+ $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);
+ }
+
+ HTML_sportsmanager::turnierdisziplinen($disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $platzierung_anzeigen, $details_anzeigen);
+ }
+}
+
+function turnierdisziplin() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $disziplin = $rows[0];
+ $turnierid = $disziplin->turnier_id;
+
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_turnier"
+ . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $turnier = $rows[0];
+
+ $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()) {
+ 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()) {
+ die($db->stderr(true));
+ }
+ $meldungen[$rundenstufe] = $db->loadObjectList();
+ }
+
+ $query = "SELECT turniermeldung_id, spieler_id, geschlecht, bild_ausblenden, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname"
+ . "\n FROM #__sportsmanager_turniermeldung"
+ . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)"
+ . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
+ . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
+ . "\n WHERE turnierdisziplin_id = $id"
+ . "\n ORDER BY turniermeldung_spieler_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $meldungenSpieler = $db->loadObjectList();
+
+ $meldungenSpielerIds = array();
+ $meldungenSpielerNamen = array();
+ $meldungenSpielerGeschlechter = array();
+ $meldungenSpielerBilderAusblenden = 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;
+ if (!isset($meldungenSpielerIds[$turniermeldung_id])) {
+ $meldungenSpielerIds[$turniermeldung_id] = array();
+ $meldungenSpielerNamen[$turniermeldung_id] = array();
+ $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);
+ }
+
+ $spiele = array();
+ foreach (array(1, 2, 3, 10) as $rundenstufe) {
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_turnierspiel"
+ . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = '$rundenstufe'"
+ . "\n ORDER BY runde DESC, spiel_nummer";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $spiele[$rundenstufe] = $db->loadObjectList();
+ }
+
+ // Vorherige und nächste Turnierdisziplin ermitteln
+ $query = "SELECT *"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $n = count($rows);
+ $vorherige_turnierdisziplin_id = 0;
+ $naechste_turnierdisziplin_id = 0;
+ for ($i = 0; $i < $n; $i++) {
+ if ($rows[$i]->turnierdisziplin_id == $id) {
+ if ($i > 0)
+ $vorherige_turnierdisziplin_id = $rows[$i - 1]->turnierdisziplin_id;
+ if ($i + 1 < $n)
+ $naechste_turnierdisziplin_id = $rows[$i + 1]->turnierdisziplin_id;
+ break;
+ }
+ }
+
+ HTML_sportsmanager::turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $spiele, $vorherige_turnierdisziplin_id, $naechste_turnierdisziplin_id, $platzierung_anzeigen, $filter_saison_id, $details_anzeigen);
+}
+
+function spieler() {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->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');
+ if ($sortierung == "vorname")
+ $sortierung_query = "vorname, nachname";
+ else if ($sortierung == "geschlecht")
+ $sortierung_query = "geschlecht, nachname, vorname";
+ else if ($sortierung == "kategorie")
+ $sortierung_query = "kategorie, nachname, vorname";
+ else if ($sortierung == "pseudonym")
+ $sortierung_query = "ISNULL(pseudonym) OR pseudonym = '', pseudonym, nachname, vorname";
+ else if ($sortierung == "elo_einzel")
+ $sortierung_query = "elo_einzel DESC, nachname, vorname";
+ else if ($sortierung == "elo_einzel_spiele")
+ $sortierung_query = "elo_einzel_spiele DESC, nachname, vorname";
+ else if ($sortierung == "elo_doppel")
+ $sortierung_query = "elo_doppel DESC, nachname, vorname";
+ else if ($sortierung == "elo_doppel_spiele")
+ $sortierung_query = "elo_doppel_spiele DESC, nachname, vorname";
+ else
+ $sortierung_query = "nachname, vorname";
+
+ if ($veranstaltungid != 0) {
+ // Veranstaltung ermitteln
+ $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid AND status > 0";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ $veranstaltungid = 0;
+ }
+
+ if ($veranstalterid != 0) {
+ // Veranstaltung ermitteln
+ $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ $veranstalterid = 0;
+ }
+
+ $search = stripslashes($filter);
+ /* Ursprüngliche Methode um Suchstring mit Wildcards zuzulassen */
+ // $searchEscapedWildcards = strpos($search, "*") !== false ? ($db->escape( trim( mb_strtolower( str_replace("*", "%", $search), 'UTF-8' ) ) )) : ("%" . $db->escape( trim( mb_strtolower( $search, 'UTF-8' ) ) ) . "%");
+ /* Keine Wildcards im Suchstring zulassen */
+ $searchEscapedWildcards = $db->escape("%" . trim(mb_strtolower(str_replace("%", "\\%", str_replace("_", "\\_", $search)), 'UTF-8')) . "%");
+ $searchEscaped = $db->escape(trim($search));
+
+ // Gesamtzahl an Spielern ermitteln
+ $jahr = date("Y");
+ $kategorieFilter = kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN");
+ $veranstalterFilter = $veranstalterid != 0 ? " AND #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid " : "";
+
+ $query = "SELECT COUNT(*)";
+ $query .= "\n FROM #__sportsmanager_spieler";
+ if (!empty($kategorieFilter) || !empty($veranstalterFilter))
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
+ if ($veranstaltungid != 0)
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
+ $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
+ if (!empty($kategorie))
+ $query .= " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) = '" . $db->escape($kategorie) . "'";
+ if (!empty($search))
+ $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
+ 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()) {
+ die($db->stderr(true));
+ }
+ $anzahl_gefundener_spieler = $db->loadResult();
+
+ // Anzuzeigende Spieler ermitteln
+ if ($beginn < 0 || $beginn >= $anzahl_gefundener_spieler)
+ $beginn = 0;
+
+ if (strlen(trim($search)) >= 3 && $anzahl_gefundener_spieler <= 50) {
+ $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele, einstufung_allgemein_id, einstufung_einzel_id, einstufung_doppel_id,"
+ . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie";
+ if ($veranstaltungid != 0)
+ $query .= ", teamname";
+ $query .= ", vereinsname, veranstalterbezeichnung"
+ . "\n FROM #__sportsmanager_spieler";
+ if (!empty($kategorieFilter) || !empty($veranstalterFilter))
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
+ if ($veranstaltungid != 0)
+ $query .= "\n INNER JOIN (SELECT spieler_id, teamname FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
+ $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\n WHERE NOT ISNULL(aktueller_verein_id)";
+ if (!empty($search))
+ $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
+ if ($einstufungid != 0)
+ $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)";
+ if (!empty($kategorie))
+ $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'";
+ $query .= "\n ORDER BY " . $sortierung_query
+ . "\n LIMIT $beginn, 50";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $spieler = $db->loadObjectList();
+ } else {
+ $spieler = array();
+ }
+
+ // Veranstaltungen ermitteln
+ $query = "SELECT #__sportsmanager_veranstaltung.*"
+ . "\n FROM #__sportsmanager_veranstaltung, #__sportsmanager_mitglied_von_team"
+ . "\n WHERE status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ // Einstufungen ermitteln
+ $query = "SELECT einstufung_id, bezeichnung"
+ . "\n FROM #__sportsmanager_einstufung"
+ . "\n ORDER BY prioritaet";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $einstufungen = array();
+ foreach ($rows as $row)
+ $einstufungen[$row->einstufung_id] = $row->bezeichnung;
+
+ // Veranstalter ermitteln
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_veranstalter"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $veranstalter = $db->loadObjectList();
+
+ // Statistiken ermitteln
+ $statistik = array();
+
+ $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT(ISNULL(pseudonym)) AND pseudonym != ''), 1, 0)";
+ $db->setQuery($query);
+ if (!$result = $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()) {
+ 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()) {
+ 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()) {
+ 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()) {
+ 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()) {
+ 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()) {
+ 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()) {
+ 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);
+
+ administrationFooter();
+}
+
+function spielerDetails() {
+ $db = & getDatabase();
+ global $params;
+ global $content;
+ $jinput = JFactory::getApplication()->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');
+ if ($id == 0)
+ die("Missing id!");
+ $jahr = date("Y");
+ $elo_anzeigen = einstellungswert("spielerliste_elo") == "1" || einstellungswert("spielerliste_elo") == "2";
+ $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern");
+
+ $details_anzeigen = currentUserHasAccessToDetails();
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ $veranstaltungid = 0;
+ }
+
+ $search = stripslashes($filter);
+ $searchEscapedWildcards = $db->escape("%" . trim(mb_strtolower(str_replace("%", "\\%", str_replace("_", "\\_", $search)), 'UTF-8')) . "%");
+ $searchEscaped = $db->escape(trim($search));
+
+ // Spielerdaten ermitteln
+ $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, spielernr, lizenznr, pseudonym, bild_ausblenden, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele, erstmals_gespielt, zuletzt_gespielt, einstufung_allgemein_id, einstufung_einzel_id, einstufung_doppel_id,"
+ . "\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 #__sportsmanager_spieler.spieler_id = $id" . ($berechtigt_spieler_aendern ? "" : " AND NOT ISNULL(aktueller_verein_id)");
+ $db->setQuery($query);
+ if (!$result = $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];
+
+ // Aktive Vereinsmitgliedschaften ermitteln
+ $query = "SELECT vereinsname"
+ . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $vereine = $db->loadObjectList();
+
+ // Aktive Organisationen ermitteln
+ $query = "SELECT veranstalterbezeichnung"
+ . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $veranstalter = $db->loadObjectList();
+
+ // Einstufungen ermitteln
+ $query = "SELECT einstufung_id, bezeichnung"
+ . "\n FROM #__sportsmanager_einstufung"
+ . "\n ORDER BY prioritaet";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $einstufungen = array();
+ foreach ($rows as $row)
+ $einstufungen[$row->einstufung_id] = $row->bezeichnung;
+
+ if ($unabhaengige_ansicht || strlen(trim($search)) < 3) {
+ $vorheriger_spieler_id = 0;
+ $naechster_spieler_id = 0;
+ } else {
+ $kategorieFilter = kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN");
+ $veranstalterFilter = $veranstalterid != 0 ? " AND #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid " : "";
+
+ $query = "SELECT COUNT(*)";
+ $query .= "\n FROM #__sportsmanager_spieler";
+ if (!empty($kategorieFilter) || !empty($veranstalterFilter))
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
+ if ($veranstaltungid != 0)
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
+ $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
+ if (!empty($kategorie))
+ $query .= " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) = '" . $db->escape($kategorie) . "'";
+ if (!empty($search))
+ $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
+ 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()) {
+ die($db->stderr(true));
+ }
+ $anzahl_gefundener_spieler = $db->loadResult();
+
+ if ($anzahl_gefundener_spieler <= 50) {
+ // Vorherigen und nächsten Spieler ermitteln
+ if ($sortierung == "vorname")
+ $sortierung_query = "vorname, nachname";
+ else if ($sortierung == "geschlecht")
+ $sortierung_query = "geschlecht, nachname, vorname";
+ else if ($sortierung == "kategorie")
+ $sortierung_query = "kategorie, nachname, vorname";
+ else if ($sortierung == "pseudonym")
+ $sortierung_query = "ISNULL(pseudonym) OR pseudonym = '', pseudonym, nachname, vorname";
+ else if ($sortierung == "elo_einzel")
+ $sortierung_query = "elo_einzel DESC, nachname, vorname";
+ else if ($sortierung == "elo_einzel_spiele")
+ $sortierung_query = "elo_einzel_spiele DESC, nachname, vorname";
+ else if ($sortierung == "elo_doppel")
+ $sortierung_query = "elo_doppel DESC, nachname, vorname";
+ else if ($sortierung == "elo_doppel_spiele")
+ $sortierung_query = "elo_doppel_spiele DESC, nachname, vorname";
+ else
+ $sortierung_query = "nachname, vorname";
+
+ $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, 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";
+ if (!empty($kategorieFilter) || !empty($veranstalterFilter))
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
+ if ($veranstaltungid != 0)
+ $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)";
+ $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
+ if (!empty($search))
+ $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
+ if ($einstufungid != 0)
+ $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)";
+ if (!empty($kategorie))
+ $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'";
+ $query .= "\n ORDER BY " . $sortierung_query
+ . "\n LIMIT $beginn, 50";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $n = count($rows);
+ $vorheriger_spieler_id = 0;
+ $naechster_spieler_id = 0;
+ for ($i = 0; $i < $n; $i++) {
+ if ($rows[$i]->spieler_id == $id) {
+ if ($i > 0)
+ $vorheriger_spieler_id = $rows[$i - 1]->spieler_id;
+ if ($i + 1 < $n)
+ $naechster_spieler_id = $rows[$i + 1]->spieler_id;
+ break;
+ }
+ }
+ } else {
+ $vorheriger_spieler_id = 0;
+ $naechster_spieler_id = 0;
+ }
+ }
+
+ // Spielernamen ermitteln
+ $query = "SELECT spieler_id, vorname, nachname"
+ . "\n FROM #__sportsmanager_spieler";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ $spielerNamen = array();
+ foreach ($rows as $row)
+ $spielerNamen[$row->spieler_id] = $row->nachname . ", " . $row->vorname;
+
+ // Teamnamen ermitteln
+ $query = "SELECT team_id, teamname"
+ . "\n FROM #__sportsmanager_team";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ $teamNamen = array();
+ foreach ($rows as $row)
+ $teamNamen[$row->team_id] = $row->teamname;
+
+ // Veranstaltungsbezeichnungen ermitteln
+ $query = "SELECT veranstaltung_id, bezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ $veranstaltungBezeichnungen = array();
+ foreach ($rows as $row)
+ $veranstaltungBezeichnungen[$row->veranstaltung_id] = $row->bezeichnung;
+
+ // Turnierdisziplinenbezeichnungen ermitteln
+ $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung"
+ . "\n FROM #__sportsmanager_turnierdisziplin"
+ . "\n INNER JOIN #__sportsmanager_turnier USING (turnier_id)";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ $turnierdisziplinBezeichnungen = array();
+ foreach ($rows as $row)
+ $turnierdisziplinBezeichnungen[$row->turnierdisziplin_id] = $row->turnierbezeichnung;
+
+ // Individualwettbewerbsbezeichnungen ermitteln
+ $query = "SELECT individualwettbewerb_id, bezeichnung"
+ . "\n FROM #__sportsmanager_individualwettbewerb";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ $individualwettbewerbBezeichnungen = array();
+ foreach ($rows as $row)
+ $individualwettbewerbBezeichnungen[$row->individualwettbewerb_id] = $row->bezeichnung;
+
+ // Ranglistenplatzierungen ermitteln
+ $query = "SELECT bezeichnung, saisonbezeichnung, platz, punkte,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id) AS teilnehmer"
+ . "\n FROM #__sportsmanager_rangliste_punkte"
+ . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $ranglistenplatzierungen = $db->loadObjectList();
+
+ // Turnierplatzierungen ermitteln
+ $query = "SELECT *, saisonbezeichnung,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AS teilnehmer"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $turnierplatzierungen = $db->loadObjectList();
+
+ // Teammitgliedschaften ermitteln
+ $query = "SELECT t1.teamname, t3.bezeichnung, 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, #__sportsmanager_mitglied_von_team AS t2, #__sportsmanager_veranstaltung AS t3"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\n WHERE t2.spieler_id = $id AND t1.team_id = t2.team_id AND t3.status > 0 AND t1.veranstaltung_id = t3.veranstaltung_id"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $teams = $db->loadObjectList();
+
+ // Elo-Verläufe ermitteln
+ $elo_einzel = array();
+ $elo_doppel = array();
+ $spiele_einzel = array();
+ $spiele_doppel = array();
+ $spieler_elo_verlauf_einzel = array();
+ $spieler_elo_verlauf_doppel = array();
+
+ if ($elo_anzeigen && ($spieler->elo_einzel_spiele > 0 || $spieler->elo_doppel_spiele > 0))
+ eloGenerieren(NULL, $elo_einzel, $elo_doppel, $spiele_einzel, $spiele_doppel, $id, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel);
+ else {
+ spieleVerlauf($id, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel);
+ $spieler_elo_verlauf_einzel = array_reverse($spieler_elo_verlauf_einzel);
+ $spieler_elo_verlauf_doppel = array_reverse($spieler_elo_verlauf_doppel);
+ }
+
+ $statistik = array();
+
+ $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE NOT ausgetreten), 1, 0)";
+ $db->setQuery($query);
+ if (!$result = $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()) {
+ die($db->stderr(true));
+ }
+ $statistik["spielernr_national"] = $db->loadResult();
+
+ $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $statistik["spielernr_international"] = $db->loadResult();
+
+ $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_einzel_spiele > 0), 1, 0)";
+ $db->setQuery($query);
+ if (!$result = $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()) {
+ 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);
+ } 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);
+ }
+}
+
+function mannschaften($ansicht_vereinigt) {
+ $db = & getDatabase();
+ global $params;
+ $jinput = JFactory::getApplication()->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');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_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;
+ }
+
+
+ if (!isJson()) {
+ HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
+ }
+ 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"
+ . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
+ . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
+ . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id"
+ . "\n WHERE #__sportsmanager_veranstaltung.status > 0" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN")
+ . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $teams = $db->loadObjectList();
+ if (isJSON()) {
+ $json = JSON_sportsmanager::mannschaften(NULL, $teams);
+ } else {
+ HTML_sportsmanager::mannschaften(NULL, $teams);
+ }
+ } else {
+ $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_veranstaltung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
+ . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team 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 GROUP BY veranstaltung_id"
+ . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $veranstaltungen = $db->loadObjectList();
+
+ foreach ($veranstaltungen as $veranstaltung) {
+ $query = "SELECT teamname, teamgruppe_id, team_id, veranstaltung_id, verein_id, vereinsname, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.name"
+ . "\n FROM #__sportsmanager_team"
+ . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
+ . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id"
+ . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
+ . "\n ORDER BY teamname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $teams = $db->loadObjectList();
+ $veranstaltung->teams = $teams;
+ if (isJson()) {
+ $json[] = JSON_sportsmanager::mannschaften($veranstaltung, $teams);
+ } else {
+ HTML_sportsmanager::mannschaften($veranstaltung, $teams);
+ }
+
+ }
+ }
+
+
+ if (isJson()) {
+ JSON_sportsmanager::JSON($json);
+ } else {
+ administrationFooter();
+ }
+
+}
+
+
+function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0) {
+ abortWithError("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');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
+ . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_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;
+ }
+ }
+
+ $details_anzeigen = currentUserHasAccessToDetails();
+ $ansprechpartner_anzeigen = einstellungswert("ansprechpartner_ausblenden") != "1" || $details_anzeigen;
+
+ // Team ermitteln
+ $query = "SELECT #__sportsmanager_team.*, #__sportsmanager_spielort.*, #__sportsmanager_verein.vereinsname, veranstalterbezeichnung, verein_id"
+ . "\n FROM #__sportsmanager_team"
+ . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
+ . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
+ . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id"
+ . "\n WHERE team_id = $id"
+ . "\n ORDER BY teamname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1) {
+ abortWithError("Wrong id!");
+ }
+ $team = $rows[0];
+ $teamgruppe_id = $team->teamgruppe_id != NULL ? $team->teamgruppe_id : $id;
+
+ $veranstaltungid = $team->veranstaltung_id;
+
+ // Veranstaltung ermitteln
+ $query = "SELECT *, IF(NOT ISNULL(letzter_tag) AND letzter_tag < CURDATE(), 1, 0) AS ist_vergangen"
+ . "\n FROM #__sportsmanager_veranstaltung"
+ . "\n WHERE veranstaltung_id = $veranstaltungid AND status > 0";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1) {
+ abortWithError("Wrong id!");
+ }
+ $veranstaltung = $rows[0];
+ $ist_vergangen = $veranstaltung->ist_vergangen;
+
+ // Weitere Wettbewerbe aktualisieren
+ $query = "SELECT team_id, veranstaltung_id, bezeichnung, IF(NOT ISNULL(letzter_tag) AND letzter_tag < CURDATE(), 1, 0) AS ist_vergangen"
+ . "\n FROM #__sportsmanager_team"
+ . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $weitere_veranstaltungen = $db->loadObjectList();
+
+ $veranstaltungsbezeichnungen = array();
+ $veranstaltungsbezeichnungen[$veranstaltung->veranstaltung_id] = $veranstaltung->bezeichnung;
+ foreach ($weitere_veranstaltungen as $weitere_veranstaltung) {
+ $veranstaltungsbezeichnungen[$weitere_veranstaltung->veranstaltung_id] = $weitere_veranstaltung->bezeichnung;
+ if ($ist_vergangen && !$weitere_veranstaltung->ist_vergangen)
+ $ist_vergangen = 0;
+ }
+
+ $team_moderator = benutzerMannschaftModerator($id) || ($team->verein_id != 0 && benutzerVereinModerator($team->verein_id)) || benutzerZugriff("spieler_lesen_erweiterte_daten");
+
+ // Mitglieder ermitteln
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_mitglied_von_team"
+ . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
+ . "\n INNER JOIN #__sportsmanager_team USING (team_id)"
+ . "\n WHERE (team_id = $id OR teamgruppe_id = $teamgruppe_id) AND NOT #__sportsmanager_mitglied_von_team.ausgetreten"
+ . "\n GROUP BY spieler_id"
+ . "\n ORDER BY nachname, vorname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $mitglieder = $db->loadObjectList();
+
+ $spielberechtigungen = array();
+ foreach ($mitglieder as $mitglied) {
+ $query = "SELECT mitglied_von_team_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag"
+ . "\n FROM #__sportsmanager_team"
+ . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
+ . "\n LEFT JOIN #__sportsmanager_mitglied_von_team ON #__sportsmanager_mitglied_von_team.team_id = #__sportsmanager_team.team_id AND #__sportsmanager_mitglied_von_team.spieler_id = $mitglied->spieler_id"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $mitgliedschaften = $db->loadObjectList();
+
+ foreach ($mitgliedschaften as $mitgliedschaft) {
+ if (empty($mitgliedschaft->mitglied_von_team_id) || (!empty($mitgliedschaft->erster_spieltag) && $mitgliedschaft->erster_spieltag >= 2) || !empty($mitgliedschaft->letzter_spieltag)) {
+ 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));
+ }
+ }
+ }
+
+ $query = "SELECT vorname, nachname, email"
+ . "\n FROM #__sportsmanager_mitglied_von_team"
+ . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
+ . "\n INNER JOIN #__sportsmanager_team USING (team_id)"
+ . "\n WHERE team_id = $id OR teamgruppe_id = $teamgruppe_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten"
+ . "\n GROUP BY spieler_id"
+ . "\n ORDER BY vorname, nachname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $mitglieder_sortiert_vorname = $db->loadObjectList();
+
+ $mailverteiler = array();
+ $mailverteiler["u"] = "";
+ $mailverteiler["p"] = "";
+ foreach ($mitglieder_sortiert_vorname as $row) {
+ if (empty($row->email)) {
+ continue;
+ }
+ $mailverteiler["u"] .= (!empty($mailverteiler["u"]) ? "; " : "") . urlencode($row->email);
+ $mailverteiler["p"] .= (!empty($mailverteiler["p"]) ? ", " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">";
+ }
+
+ // Mitgliederstatistik ermitteln
+ // Mitgliederstaatistik entfernt, da Berechnung teilweise 10 Sekunden beansprucht hat
+// if (!$team_moderator)
+ $mitglieder_statistiken = NULL;
+ /*
+ else {
+ $query = "SELECT vorname, nachname,"
+ . "\n werte.*,"
+ . "\n einzel_siege + einzel_unentschieden + einzel_niederlagen AS einzel_spiele,"
+ . "\n doppel_siege + doppel_unentschieden + doppel_niederlagen AS doppel_spiele,"
+ . "\n einzel_siege + doppel_siege AS gesamt_siege,"
+ . "\n einzel_unentschieden + doppel_unentschieden AS gesamt_unentschieden,"
+ . "\n einzel_niederlagen + doppel_niederlagen AS gesamt_niederlagen,"
+ . "\n einzel_siege + einzel_unentschieden + einzel_niederlagen + doppel_siege + doppel_unentschieden + doppel_niederlagen AS gesamt_spiele,"
+ . "\n einzel_punkte + doppel_punkte AS gesamt_punkte,"
+ . "\n einzel_punkte_gesamt + doppel_punkte_gesamt AS gesamt_punkte_gesamt,"
+ . "\n elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele"
+ . "\n FROM #__sportsmanager_spieler,"
+ . "\n (SELECT t1.spieler_id,"
+ . "\n (SELECT COALESCE(SUM(IF(heim_spieler_1_id = t1.spieler_id, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte)), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id)) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id)))) AS einzel_punkte,"
+ . "\n (SELECT COALESCE(SUM(teamspiel_heim_spielpunkte + teamspiel_gast_spielpunkte), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id)) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id)))) AS einzel_punkte_gesamt,"
+ . "\n (SELECT COALESCE(SUM(IF(heim_spieler_1_id = t1.spieler_id OR heim_spieler_2_id = t1.spieler_id, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte)), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) OR (gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))))) AS doppel_punkte,"
+ . "\n (SELECT COALESCE(SUM(teamspiel_heim_spielpunkte + teamspiel_gast_spielpunkte), 0) AS punkte FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) OR (gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))))) AS doppel_punkte_gesamt,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte))) AS einzel_siege,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte))) AS einzel_unentschieden,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND ((heim_spieler_1_id = t1.spieler_id AND ISNULL(heim_spieler_2_id) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte) OR (gast_spieler_1_id = t1.spieler_id AND ISNULL(gast_spieler_2_id) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte))) AS einzel_niederlagen,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte))) AS doppel_siege,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte))) AS doppel_unentschieden,"
+ . "\n (SELECT COUNT(*) FROM #__sportsmanager_teamspiel LEFT JOIN #__sportsmanager_begegnung USING (begegnung_id) LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id) WHERE ISNULL(unbestaetigtes_ergebnis_id) AND (heim_team_id = $id OR gast_team_id = $id) AND (((heim_spieler_2_id = t1.spieler_id OR (heim_spieler_1_id = t1.spieler_id AND NOT ISNULL(heim_spieler_2_id))) AND teamspiel_heim_spielpunkte < teamspiel_gast_spielpunkte) OR ((gast_spieler_2_id = t1.spieler_id OR (gast_spieler_1_id = t1.spieler_id AND NOT ISNULL(gast_spieler_2_id))) AND teamspiel_heim_spielpunkte > teamspiel_gast_spielpunkte))) AS doppel_niederlagen"
+ . "\n FROM #__sportsmanager_mitglied_von_team AS t1"
+ . "\n WHERE team_id = $id AND NOT ISNULL(aktueller_verein_id)"
+ . "\n GROUP BY spieler_id)"
+ . "\n AS werte"
+ . "\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)); }
+ $mitglieder_statistiken = $db->loadObjectList();
+ }
+ */
+
+ // Teamansprechpartner ermitteln
+ $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $teamansprechpartner = $db->loadObjectList();
+
+ // Begegnungen in der Veranstaltung ermitteln
+ $query = "SELECT t2.veranstaltung_id, #__sportsmanager_begegnung.*, t2.tischtyp, t2.tischeigenschaften, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, unterteilung, "
+ . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.teamname, t2.teamname) AS gegner,"
+ . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.team_id, t2.team_id) AS gegner_id,"
+ . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.teamgruppe_id, t2.teamgruppe_id) AS gegner_teamgruppe_id,"
+ . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, t3.verein_id, t2.verein_id) AS gegner_verein_id,"
+ . "\n IF(heim_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id, 0, 1) AS auswaerts,"
+ . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen,"
+ . "\n (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verantwortlich_team_id"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
+ . "\n INNER JOIN #__sportsmanager_veranstaltung ON #__sportsmanager_veranstaltung.veranstaltung_id = t2.veranstaltung_id"
+ . "\n LEFT JOIN #__sportsmanager_teamspiel_modus ON teamspiel_modus_id = modus_id"
+ . "\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()) {
+ abortWithError($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ if ($unabhaengige_ansicht) {
+ $vorheriges_team_id = 0;
+ $naechstes_team_id = 0;
+ } else {
+ // Vorheriges und nächstes Team ermitteln
+ if ($ansicht_vereinigt) {
+ $query = "SELECT team_id"
+ . "\n FROM #__sportsmanager_team"
+ . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
+ . "\n WHERE #__sportsmanager_veranstaltung.status > 0" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN")
+ . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
+ . "\n GROUP BY IF(teamgruppe_id <> 0 AND NOT ISNULL(teamgruppe_id), teamgruppe_id, team_id)"
+ . "\n ORDER BY teamname";
+ } else {
+ $query = "SELECT team_id"
+ . "\n FROM #__sportsmanager_team"
+ . "\n WHERE veranstaltung_id = $veranstaltungid"
+ . "\n ORDER BY teamname";
+ }
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+
+ $n = count($rows);
+ $vorheriges_team_id = 0;
+ $naechstes_team_id = 0;
+ for ($i = 0; $i < $n; $i++) {
+ if ($rows[$i]->team_id == $id) {
+ if ($i > 0) {
+ $vorheriges_team_id = $rows[$i - 1]->team_id;
+ }
+ if ($i + 1 < $n) {
+ $naechstes_team_id = $rows[$i + 1]->team_id;
+ }
+ break;
+ }
+ }
+ }
+
+ 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)
+ );
+ } 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);
+ }
+}
+
+function veranstaltungBegegnungeniCal() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $veranstaltung = $rows[0];
+
+ // Begegnungen in der Veranstaltung ermitteln
+ $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
+ . "\n t2.teamname AS heim_teamname,"
+ . "\n t3.teamname AS gast_teamname,"
+ . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\n WHERE t5.veranstaltung_id = $id"
+ . "\n ORDER BY zeitpunkt, heim_teamname";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ begegnungeniCal($veranstaltung->bezeichnung, SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id, -1), $begegnungen, $trigger);
+}
+
+function teamBegegnungeniCal() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ $trigger = $jinput->get('alarm', 0, 'INT');
+
+ // Team ermitteln
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_team"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
+ . "\n WHERE team_id = $id AND status > 0";
+ $db->setQuery($query);
+ if (!$result = $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 #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
+ . "\n t2.teamname AS heim_teamname,"
+ . "\n t3.teamname AS gast_teamname,"
+ . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ begegnungeniCal($team->teamname, SportsManagerURL('&task=team_begegnungen_ical&id=' . $team->team_id, -1), $begegnungen, $trigger);
+}
+
+function vereinBegegnungeniCal() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $verein = $rows[0];
+
+ // Begegnungen des Vereins ermitteln
+ $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
+ . "\n t2.teamname AS heim_teamname,"
+ . "\n t3.teamname AS gast_teamname,"
+ . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ begegnungeniCal($verein->vereinsname, SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id, -1), $begegnungen, $trigger);
+}
+
+function spielortBegegnungeniCal() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $spielort = $rows[0];
+
+ // Begegnungen am Spielort ermitteln
+ $query = "SELECT #__sportsmanager_begegnung.*, t2.tischtyp, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(#__sportsmanager_begegnung.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, s1.spielort_id, unbestaetigtes_ergebnis_id, zwischenergebnis, t5.bezeichnung, t5.unterteilung,"
+ . "\n t2.teamname AS heim_teamname,"
+ . "\n t3.teamname AS gast_teamname,"
+ . "\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 = #__sportsmanager_begegnung.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen"
+ . "\n FROM #__sportsmanager_begegnung"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON #__sportsmanager_begegnung.spielort_id = s1.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
+ . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
+ . "\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()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ begegnungeniCal($spielort->name, SportsManagerURL('&task=spielort_begegnungen_ical&id=' . $id, -1), $begegnungen, $trigger);
+}
+
+function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) {
+ 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');
+ echo "BEGIN:VCALENDAR\r\n";
+ echo "VERSION:2.0\r\n";
+ echo "PRODID:PHP\r\n";
+ echo "METHOD:REQUEST\r\n";
+ 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";
+ $beschreibung = $begegnung->bezeichnung;
+ if ($begegnung->spieltag != null)
+ $beschreibung .= " (" . Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0) . ")";
+ if ($begegnung->heim_spielpunkte != 0 || $begegnung->gast_spielpunkte != 0)
+ $beschreibung .= (empty($beschreibung) ? "" : "\\n") . "Ergebnis: " . $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte . " (" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")";
+ if (!empty($beschreibung))
+ echo "DESCRIPTION:" . $beschreibung . "\r\n";
+ $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());
+ 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";
+ echo "CATEGORIES:SPORT\r\n";
+ echo "DTSTAMP:" . $dtstamp . "\r\n";
+ if ($trigger != 0) {
+ echo "BEGIN:VALARM\r\n";
+ echo "ACTION:DISPLAY\r\n";
+ echo "TRIGGER:-PT" . ($trigger > 60 ? (floor($trigger / 60) . "H") : "") . ($trigger % 60 != 0 ? (($trigger % 60) . "M") : "") . "\r\n";
+ echo "END:VALARM\r\n";
+ }
+ echo "END:VEVENT\r\n";
+ }
+ echo "END:VCALENDAR\r\n";
+ die();
+}
+
+function teamSpielplanXML() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+ $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()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $veranstaltung = $rows[0];
+
+ // Team ermitteln
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_team"
+ . "\n WHERE team_id = $id"
+ . "\n ORDER BY teamname";
+ $db->setQuery($query);
+ if (!$result = $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,"
+ . "\n IF(t1.heim_team_id = $id, 0, 1) AS auswaerts,"
+ . "\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"
+ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
+ . "\n LEFT JOIN #__sportsmanager_spielort AS s2 ON t2.heimspielort_id = s2.spielort_id"
+ . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
+ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
+ . "\n WHERE t2.veranstaltung_id = $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()) {
+ die($db->stderr(true));
+ }
+ $begegnungen = $db->loadObjectList();
+
+ echo "<";
+ ?>?xml version="1.0" encoding="utf-8"?>
+
+
+
+
+
+
+
+
+ ]>
+
+ heim_punkte != NULL || $row->gast_punkte != NULL) ? true : false;
+ echo " spieltag . "\">\r\n";
+ echo " " . ($row->verlegung_eingetragen ? "wird verlegt" : FormatiertesDatum($row->zeitpunkt)) . "\r\n";
+ echo " " . utf8_encode(htmlspecialchars($row->gegner)) . "\r\n";
+ echo " " . utf8_encode(htmlspecialchars($row->heimspielort_name)) . "\r\n";
+ echo " ";
+ if ($ergebnis_vorhanden)
+ echo $row->auswaerts ? ($row->gast_punkte . " : " . $row->heim_punkte) : ($row->heim_punkte . " : " . $row->gast_punkte);
+ echo "\r\n";
+ echo " ";
+ if ($ergebnis_vorhanden)
+ echo $row->auswaerts ? ($row->gast_spielpunkte . " : " . $row->heim_spielpunkte) : ($row->heim_spielpunkte . " : " . $row->gast_spielpunkte);
+ echo "\r\n";
+ echo " \r\n";
+ $id++;
+ }
+ ?>
+
+ = $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;
+ }
+
+ function bildAnpassen($typ, $id = 0) {
+ global $sportsmanager_joomla_path;
+ $jinput = JFactory::getApplication()->input;
+
+ if (empty($id))
+ $id = $jinput->get('id', 0, 'INT');
+ $fixed_width = $jinput->get('w', 0, 'INT');
+ $fixed_height = $jinput->get('h', 0, 'INT');
+ $max_width = $jinput->get('mw', 0, 'INT');
+ $max_height = $jinput->get('mh', 0, 'INT');
+ $no_cache = $jinput->get('nc', 0, 'INT');
+
+ $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ . DIRECTORY_SEPARATOR . $id . '.';
+ if (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();
+ }
+
+ $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);
+ }
+
+ function vereine() {
+ $db = & getDatabase();
+ global $params;
+
+ $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $organisationAnzeigen = $db->loadResult() > 1;
+
+ $query = "SELECT *, 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();
+
+ HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen);
+
+ administrationFooter();
+ }
+
+ function vereinDetails() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->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 (!$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);
+ }
+
+ function spielorte() {
+ $db = & getDatabase();
+ global $params;
+
+ $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();
+ }
+ }
+
+ function spielort() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $id = $jinput->get('id', 0, 'INT');
+ if ($id == 0)
+ die("Missing id!");
+
+ // Spielort ermitteln
+ $query = "SELECT *"
+ . "\n FROM #__sportsmanager_spielort"
+ . "\n WHERE spielort_id = $id AND status > 0";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($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));
+ }
+ $rows = $db->loadObjectList();
+
+ $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;
+ }
+ }
+
+ // 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();
+
+ // 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 (!$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));
+ }
+
+ function begegnungSpielplan($teamansicht = false) {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->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 (!$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);
+ if ($db->execute()) {
+ $spielort = $db->loadObject();
+ $begegnung->spielort_name = $spielort->name;
+ }
+ 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);
+ }
+ }
+
+ 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);
+ }
+ }
+
+ 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');
+
+ if ($jinput->get('cancel', false, 'BOOL')) {
+ redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid);
+ return;
+ }
+
+ $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'));
+ }
+
+ $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;
+
+ $query = "LOCK TABLES #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_begegnung READ, #__sportsmanager_verschieberegel READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+
+ // 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)) {
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+ 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));
+ }
+ }
+ }
+ $query = "UNLOCK TABLES;";
+ $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);
+ }
+ }
+
+ 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');
+ $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 (!$result = $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 = "LOCK TABLES #__sportsmanager_veranstaltung READ, #__sportsmanager_team AS t1 READ,"
+ . "#__sportsmanager_begegnung AS ttb1 READ, "
+ . "#__sportsmanager_begegnung AS ttb2 READ, "
+ . "#__sportsmanager_begegnung AS ttb3 READ, "
+ . "#__sportsmanager_begegnung AS ttb4 READ, "
+ . "#__sportsmanager_begegnung AS ttb5 READ, "
+ . "#__sportsmanager_begegnung AS ttb6 READ, "
+ . "#__sportsmanager_begegnung AS ttb7 READ, "
+ . "#__sportsmanager_begegnung AS ttb8 READ, "
+ . "#__sportsmanager_begegnung AS ttb9 READ, "
+ . "#__sportsmanager_begegnung AS ttb10 READ, "
+ . "#__sportsmanager_begegnung AS ttb11 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu1 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu2 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu3 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu4 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu5 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu6 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu7 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu8 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu9 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu10 READ, "
+ . "#__sportsmanager_unbestaetigtes_ergebnis AS ttu11 READ, "
+ . "#__sportsmanager_team WRITE;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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 (!$result = $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 (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ 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();
+
+ $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;
+ }
+
+ $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();
+
+ 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 #__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));
+ }
+ }
+ }
+
+ $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()) {
+ 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;
+ 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 (!$result = $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
+ }
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE) {
+ $db = & getDatabase();
+
+ $query = "LOCK TABLES #__sportsmanager_berechnung WRITE, #__sportsmanager_rangliste READ, #__sportsmanager_rangliste AS r2 READ, #__sportsmanager_spieler READ, #__sportsmanager_rangliste_system READ, #__sportsmanager_rangliste_system_punkte READ, #__sportsmanager_rangliste_turnierdisziplin READ, #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turnierdisziplin READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ 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 . "'"));
+ $db->setQuery($query);
+ if (!$result = $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";
+ }
+ $db->setQuery($query);
+ if (!$result = $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;
+ $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_punkte WHERE rangliste_id = $rangliste_id;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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"
+ . "\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 (!$result = $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;
+ }
+ }
+
+ $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);
+
+ $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;
+ }
+
+ $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))
+ $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;
+ else if (!empty($rangliste->maxalter) && $jahr - $naechste_turnierplatzierung->geburtsjahr - 1 > $rangliste->maxalter)
+ $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;
+ if ($rangliste->geschlecht == 2 && $naechste_turnierplatzierung->geschlecht == 'M')
+ $meldung_einzelner_doppelspieler_gewertet = TRUE;
+ }
+ }
+ } 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 {
+ $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) {
+
+ }
+ $math->setVariable('m', $wertung_multiplikator_normal);
+ } else {
+ try {
+ $p = round($math->getValue());
+ } catch (Exception $e) {
+
+ }
+ }
+ }
+ 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);";
+ $db->setQuery($query);
+ if (!$result = $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;
+ }
+ }
+
+ error_reporting($error_level);
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_modus_id = 0) {
+ $db = & getDatabase();
+
+ $query = "LOCK TABLES #__sportsmanager_veranstaltung READ, #__sportsmanager_teamspiel_modus READ, #__sportsmanager_team READ, #__sportsmanager_begegnung WRITE, #__sportsmanager_teamspiel WRITE;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ 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";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rows = $db->loadObjectList();
+ if (count($rows) < 1)
+ die("Wrong id!");
+ $teamspiel_modus = $rows[0];
+
+ $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 (!$result = $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()) {
+ 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;
+ }
+ }
+ } 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()) {
+ 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 (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ $query = "UNLOCK TABLES;";
+ $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 = "LOCK TABLES #__sportsmanager_bestenliste READ, #__sportsmanager_bestenliste_veranstaltung READ, #__sportsmanager_bestenliste_individualwettbewerb READ, #__sportsmanager_bestenliste_punkte WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_teamspiel READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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 (!$result = $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 (!$result = $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 (!$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))";
+ $db->setQuery($query);
+ if (!$result = $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);
+ }
+ $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()) {
+ die($db->stderr(true));
+ }
+ }
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ 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 = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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));
+ }
+
+ $query = "UNLOCK TABLES;";
+ $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 = "LOCK TABLES #__sportsmanager_spieler WRITE;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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));
+ }
+ }
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ function eloGenerieren($datum_beginn, &$elo_einzel, &$elo_doppel, &$spiele_einzel, &$spiele_doppel, $spieler_id, &$spieler_elo_verlauf_einzel, &$spieler_elo_verlauf_doppel) {
+ $db = & getDatabase();
+
+ $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turnierspiel READ, #__sportsmanager_elo_cache WRITE, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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()) {
+ 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 (!$result = $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)";
+ $db->setQuery($query);
+ if (!$result = $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));
+ }
+ }
+
+ $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 ($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;
+
+ 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 = "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));
+ }
+ }
+ }
+
+// 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 ($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 (!$result = $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;
+ // 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;
+ $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"] = 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]["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 ((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"] = $individualwettbewerb_spiel->ergebnis;
+ $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->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;
+ $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"] = $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) {
+ $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]["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 ((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"] = $individualwettbewerb_spiel->ergebnis;
+ $spieler_elo_verlauf_doppel_nr++;
+ }
+ }
+ }
+ } else {
+ // Turnierdisziplin auswerten
+ $disziplin = $disziplinen[$disziplinen_nr++];
+
+ $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";
+ $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 ($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
+ 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;
+
+ // 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 ($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++;
+ }
+ }
+ }
+ }
+ }
+ $elo_einzel = $elo_einzel_neu;
+ $elo_doppel = $elo_doppel_neu;
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ function spieleVerlauf($spieler_id, &$spieler_verlauf_einzel, &$spieler_verlauf_doppel) {
+ $db = & getDatabase();
+
+ $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_begegnung READ, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turnierspiel READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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 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 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;
+
+ $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?
+// 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 ($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 {
+ // Doppel-Spiel
+ if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0)
+ continue;
+
+ $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++];
+
+ $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++;
+ }
+ }
+ }
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ }
+
+ 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";
+ $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()) {
+ 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);
+ }
+
+ $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";
+ $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();
+
+ $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_verein AS kategorie_verein READ, #__sportsmanager_veranstalter READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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);
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ 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();
+
+ $query = "LOCK TABLES #__sportsmanager_saison READ, #__sportsmanager_spieler READ, #__sportsmanager_spieler AS theim1 READ, #__sportsmanager_spieler AS theim2 READ, #__sportsmanager_spieler AS tgast1 READ, #__sportsmanager_spieler AS tgast2 READ, #__sportsmanager_verein READ, #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb_platzierung READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT');
+ if ($filter_saison_id == 0)
+ $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT');
+
+ $query = "SELECT saison_id, saisonbezeichnung"
+ . "\n FROM #__sportsmanager_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()) {
+ die($db->stderr(true));
+ }
+ $spiele = $db->loadObjectList();
+
+ HTML_sportsmanager::individualwettbewerbSpiele($individualwettbewerbe_bezeichnungen, $spiele, $details_anzeigen);
+ }
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ 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)");
+
+ $math->setVariable('n', 15);
+ $math->setVariable('p', 1);
+ // echo $math->getValue() . "
";
+
+ // 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
+
+ // 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)");
+
+ $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";
+ $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_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();
+
+ 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";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+ $rangliste_punkte = $db->loadObjectList();
+
+ $turnierdisziplinen = array();
+ $punkte = array();
+ $platzierung = array();
+
+ HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, FALSE, FALSE, $turnierdisziplinen, $punkte, $platzierung, $filter_saison_id, 0, 0, $details_anzeigen);
+ }
+
+ /*
+ 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();
+
+ if (count($ranglisten_uebrige) > 0)
+ HTML_sportsmanager::ranglistenListe($ranglisten_uebrige);
+ } s
+ */
+
+ administrationFooter();
+ }
+
+ function rangliste() {
+ $db = & getDatabase();
+ $jinput = JFactory::getApplication()->input;
+
+ $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_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 (!$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];
+
+ // 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 (!$result = $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);
+ }
+
+ function ranglistenpunkte() {
+ $db = & getDatabase();
+
+ $rangliste_id = JRequest::getInt('rangliste_id', 0);
+ if ($rangliste_id == 0)
+ die("Missing id!");
+ $spieler_id = JRequest::getInt('spieler_id', 0);
+ if ($spieler_id == 0)
+ die("Missing id!");
+
+ $filter_saison_id = JRequest::getInt('filter_saison_id', 0);
+ if ($filter_saison_id == 0)
+ $filter_saison_id = JRequest::getInt('sportsmanager_filter_saison_id', 0, 'cookie');
+
+ $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 (!$gefunden)
+ $filter_saison_id = $saisons[0]->saison_id;
+ }
+
+ $query = "LOCK TABLES #__sportsmanager_rangliste READ, #__sportsmanager_rangliste_punkte READ, #__sportsmanager_rangliste_turnierdisziplin_punkte READ, #__sportsmanager_rangliste_system READ, #__sportsmanager_rangliste_system_punkte READ, #__sportsmanager_rangliste_turnierdisziplin READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_turniermeldung READ, #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_spieler READ;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ // 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];
+
+ // 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];
+
+ $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 (!$result = $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 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));
+
+ if ($spieler_anzahl_turnierdisziplinen > $bewertete_turnierdisziplinen) {
+ foreach ($turnierdisziplinen as $turnierdisziplin)
+ $streichergebnisse[$turnierdisziplin->turnierdisziplin_id] = $turnierdisziplin->punkte;
+
+ 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;
+ }
+ }
+ }
+
+ // 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();
+
+ $query = "UNLOCK TABLES;";
+ $db->setQuery($query);
+ if (!$result = $db->execute()) {
+ die($db->stderr(true));
+ }
+
+ $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);
+ }
+ ?>