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\r\n\r\n
\r\n"; - if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) - begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); - else if ($aktualisieren == 0) - $aktualisieren = 60; - echo "\r\n"; - begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); - echo "
\r\n"; - } - } -} - -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 ($praesentation == 1 || $praesentation == 2) - echo "\r\n"; - if ($praesentation == 2 || $praesentation == 3) { - if ($praesentation == 3) - 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"; - echo "\r\n\r\n\r\n"; - } - - if ($praesentation == 1 || $praesentation == 2 || $praesentation == 3) - echo "\r\n\r\n
\r\n"; - if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) - begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); - echo "\r\n"; - begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); - echo "
\r\n"; - - 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\r\n\r\n
\r\n"; + if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) + begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); + else if ($aktualisieren == 0) + $aktualisieren = 60; + echo "\r\n"; + begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); + echo "
\r\n"; + } + } +} + +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 ($praesentation == 1 || $praesentation == 2) + echo "\r\n"; + if ($praesentation == 2 || $praesentation == 3) { + if ($praesentation == 3) + 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"; + echo "\r\n\r\n\r\n"; + } + + if ($praesentation == 1 || $praesentation == 2 || $praesentation == 3) + echo "\r\n\r\n
\r\n"; + if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) + begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); + echo "\r\n"; + begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); + echo "
\r\n"; + + 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); + } + ?>