diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 6314653..49d6ab5 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -1,19425 +1,19440 @@ -input; - - if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); - - $unabhaengige_ansicht = empty($content) || $content == "administration"; - - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); - if ($filter_saison_id == 0) - $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); - - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (count($saisons) != 0) { - $gefunden = false; - foreach ($saisons as $saison) { - if ($saison->saison_id == $filter_saison_id) { - $gefunden = true; - break; - } - } - if (!$gefunden) - $filter_saison_id = $saisons[0]->saison_id; - } - - $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_veranstaltungen) { - $query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen" - . "\n FROM #__sportsmanager_veranstaltung AS t1" - . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id" - . "\n WHERE " . veranstaltungFilter("t1.veranstaltung_id IN") - . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; - } - else { - $query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen" - . "\n FROM #__sportsmanager_veranstaltung AS t1" - . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) + (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) AS veranstaltungen" - . "\n FROM #__sportsmanager_bestenliste AS t1" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - - $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_turniere) { - $query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl" - . "\n FROM #__sportsmanager_turnier" - . "\n LEFT JOIN ((SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin) USING (turnier_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE " . turnierFilter("#__sportsmanager_turnier.turnier_id IN") - . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n GROUP BY turnier_id" - . "\n ORDER BY erster_tag DESC, turnierbezeichnung"; - } - else { - $query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl" - . "\n FROM #__sportsmanager_turnier" - . "\n LEFT JOIN ((SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin) USING (turnier_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n GROUP BY turnier_id" - . "\n ORDER BY erster_tag DESC, turnierbezeichnung"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniere = $db->loadObjectList(); - - $beschraenkter_zugriff_individualwettbewerbe = benutzerZugriff("individualwettbewerbe_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_individualwettbewerbe) { - $query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE " . individualwettbewerbFilter("individualwettbewerb_id IN") - . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - } - else { - $query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin AS t2 WHERE t1.rangliste_id = t2.rangliste_id) AS turnierdisziplinen" - . "\n FROM #__sportsmanager_rangliste AS t1" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - $statistik = array(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_saison), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["saisons"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel_modus), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["teamspielmodi"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstalter), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["veranstalter"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_system), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["ranglistensysteme"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["turnierdisziplinen"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["individualwettbewerbe"] = $db->loadResult(); - - HTML_sportsmanager_admin::adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $unabhaengige_ansicht, isExternalDatabase()); -} - -function adminVerteiler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verteiler_aendern") && !benutzerZugriff("verteiler_lesen")) - keinZugriff(true); - - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); - if ($filter_saison_id == 0) - $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); - - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $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_verteiler" - . "\n ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verteiler = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $organisationen = $db->loadObjectList(); - - $organisationen_mailverteiler = array(); - foreach ($organisationen as $organisation) { - $query = "SELECT vorname, nachname, email" - . "\n FROM #__sportsmanager_vereinsansprechpartner" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE " . ($organisation->veranstalter_id != null ? "veranstalter_id = $organisation->veranstalter_id" : "ISNULL(veranstalter_id)") - . " AND NOT ausgetreten AND email != ''" - . "\n ORDER BY vorname, nachname, email"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $organisationen_mailverteiler[$organisation->veranstalter_id] = ""; - $organisationen_mailverteiler[$organisation->veranstalter_id . "p"] = ""; - foreach ($rows as $row) { - $organisationen_mailverteiler[$organisation->veranstalter_id] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id]) ? "; " : "") . $row->email; - $organisationen_mailverteiler[$organisation->veranstalter_id . "p"] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; - } - } - - $query = "SELECT t1.*, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_veranstaltung AS t1" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") - . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, bezeichnung, t1.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $veranstaltungen_mailverteiler = array(); - foreach ($veranstaltungen as $veranstaltung) { - $query = "SELECT vorname, nachname, email" - . "\n FROM #__sportsmanager_teamansprechpartner, #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND #__sportsmanager_teamansprechpartner.team_id = #__sportsmanager_team.team_id AND email != ''" - . "\n ORDER BY vorname, nachname, email"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] = ""; - $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] = ""; - foreach ($rows as $row) { - $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id]) ? "; " : "") . $row->email; - $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; - } - } - - HTML_sportsmanager_admin::adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, benutzerZugriff("verteiler_aendern")); -} - -function adminEditVerteiler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_verteiler WHERE verteiler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditVerteiler($row); -} - -function adminSaveVerteiler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_verteiler'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $verteiler = $db->escape(trim($jinput->get('verteiler', '', 'RAW'))); - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_verteiler (bezeichnung, verteiler) VALUES ('$bezeichnung', '$verteiler');"; - else { - $query = "UPDATE #__sportsmanager_verteiler" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n verteiler = '$verteiler'" - . "\n WHERE verteiler_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_verteiler'); -} - -function adminRemoveVerteiler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_verteiler WHERE verteiler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_verteiler'); -} - -function adminRechnungen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); - - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); - if ($filter_saison_id == 0) - $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); - - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (count($saisons) == 0) - die("Wrong id!"); - - $gefunden = false; - foreach ($saisons as $saison) { - if ($saison->saison_id == $filter_saison_id) { - $filter_saison = $saison; - $gefunden = true; - break; - } - } - if (!$gefunden) { - $filter_saison_id = $saisons[0]->saison_id; - $saison = $saisons[0]; - } - - $query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," - . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" - . "\n FROM #__sportsmanager_rechnung" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" - . "\n WHERE saison_id = $filter_saison_id" - . "\n ORDER BY bezeichnung, zuordnungbezeichnung, notiz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rechnungen = $db->loadObjectList(); - - $query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," - . " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0," - . "\n (SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_veranstalter AS va1" - . "\n LEFT JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" - . "\n WHERE va1.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))" - . ")," - . "\n (SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_verein AS ve1" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" - . "\n WHERE ve1.verein_id = #__sportsmanager_verein.verein_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))" - . ") AS neuzugaenge" -// . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" - . "\n FROM #__sportsmanager_rechnung" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" - . "\n WHERE saison_id = $filter_saison_id" - . "\n HAVING neuzugaenge > 0" - . "\n ORDER BY zuordnungbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $neuzugaenge = $db->loadObjectList(); - - $query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," - . " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0," - . "\n (SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_veranstalter AS va1" - . "\n INNER JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)" - . "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" - . "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)" - . "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id)" - . ")," - . "\n (SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_verein AS ve1" - . "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" - . "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)" - . "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.verein_id = #__sportsmanager_verein.verein_id)" - . ") AS mitglieder" -// . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" - . "\n FROM #__sportsmanager_rechnung" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" - . "\n WHERE saison_id = $filter_saison_id" - . "\n ORDER BY zuordnungbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aufsummierung = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminRechnungen($rechnungen, $neuzugaenge, $aufsummierung, $saisons, $filter_saison_id, $saison); -} - -function adminEditRechnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung" - . "\n FROM #__sportsmanager_rechnung" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" - . "\n WHERE rechnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT #__sportsmanager_verein.verein_id, #__sportsmanager_verein.veranstalter_id, vereinsname, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten" - . "\n ORDER BY veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditRechnung($row, $veranstalter, $vereine); -} - -function adminSaveRechnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_rechnungen'); - - return; - } - - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); - if ($filter_saison_id == 0) - $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); - - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (count($saisons) != 0) { - $gefunden = false; - foreach ($saisons as $saison) { - if ($saison->saison_id == $filter_saison_id) { - $gefunden = true; - break; - } - } - if (!$gefunden) - $filter_saison_id = $saisons[0]->saison_id; - } - - if ($filter_saison_id == 0) - die ("Wrong id"); - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $notiz = $db->escape(trim($jinput->get('notiz', '', 'RAW'))); - $veranstalterid = $db->escape($jinput->get('veranstalterid', 0, 'RAW')); - $mitgliedsstatus = $jinput->get('mitgliedsstatus', 0, 'INT'); - $wertungskategorie = $jinput->get('wertungskategorie', 0, 'INT'); - if ($id == 0) { - $filter_mitgliedsstatus = ""; - for ($i = 1; $i <= 3; $i++) { - if (pow(2, $i) & $mitgliedsstatus) { - if (!empty($filter_mitgliedsstatus)) - $filter_mitgliedsstatus .= " OR "; - $filter_mitgliedsstatus .= "mitgliedsstatus = " . $i; - } - } - if (!empty($filter_mitgliedsstatus)) - $filter_mitgliedsstatus = " AND (" . $filter_mitgliedsstatus . ")"; - $filter_kategorie = ""; - if ($wertungskategorie != 15) { - $kategorien = array(); - foreach (array(1 => "H", 2 => "D", 4 => "J", 8 => "S") as $b => $wert) { - if ($b & $wertungskategorie) - array_push($kategorien, "\"" . $wert . "\""); - } - $jahr = date("Y"); - if (!empty($kategorien)) - $filter_kategorie = " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) IN (" . implode(", ", $kategorien) . ")"; - else - $filter_kategorie = " AND FALSE"; - } - if (strlen($veranstalterid) > 1 && $veranstalterid[0] == "v") { - $verein_id = substr($veranstalterid, 1); - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus', '$wertungskategorie');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" - . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if (strlen($veranstalterid) > 1 && $veranstalterid[0] == "a") { - $veranstalter_id = substr($veranstalterid, 1); - $query = "SELECT verein_id, (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE veranstalter_id = $veranstalter_id AND not ausgetreten" - . "\n ORDER BY mitglieder, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - foreach ($veranstalter as $row) { - $verein_id = $row->verein_id; - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" - . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else if ($veranstalterid == "0") { - $query = "SELECT veranstalter_id, (SELECT COUNT(*) FROM #__sportsmanager_verein LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY mitglieder, veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - foreach ($veranstalter as $row) { - $veranstalterid = $row->veranstalter_id; - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" - . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" - . "\n FROM #__sportsmanager_veranstalter" - . "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" - . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" - . "\n FROM #__sportsmanager_veranstalter" - . "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - $query = "UPDATE #__sportsmanager_rechnung" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n notiz = '$notiz'" - . "\n WHERE rechnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_rechnungen'); -} - -function adminRemoveRechnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_rechnung WRITE, #__sportsmanager_rechnung_spieler WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rechnung_spieler WHERE rechnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rechnung WHERE rechnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_rechnungen'); -} - -function adminEinstellungen() { - $db =& getDatabase(); - - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_einstellungen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $einstellungen = array(); - foreach ($rows as $row) - $einstellungen[$row->name] = $row->wert; - - HTML_sportsmanager_admin::adminEinstellungen($einstellungen); -} - -function adminSaveEinstellungen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $basis_spielernr = $db->escape(trim($jinput->get('basis_spielernr', '', 'RAW'))); - $ansprechpartner_ausblenden = $jinput->get('ansprechpartner_ausblenden', 0, 'INT'); - $ansprechpartner_spielerdaten = $jinput->get('ansprechpartner_spielerdaten', 0, 'INT'); - $ansprechpartner_importieren = $jinput->get('ansprechpartner_importieren', 0, 'INT'); - $ansprechpartner_exportieren = $jinput->get('ansprechpartner_exportieren', 0, 'INT'); - $spielerliste_elo = $jinput->get('spielerliste_elo', 0, 'INT'); - $termine_beantragen = $jinput->get('termine_beantragen', 0, 'INT'); - $spielerimport_persoenliche_daten_vorauswahl = $jinput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); - - $api_push_key = $jinput->get('api_push_key', '', 'RAW'); - - /* - $twitter_benutzername = $db->escape(trim( $jinput->get('twitter_benutzername', '', 'RAW') )); - $twitter_kennwort = !empty($twitter_benutzername) ? $db->escape(trim( $jinput->get('twitter_kennwort', '', 'RAW') )) : ""; - */ - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'basis_spielernr'" - . ", wert = '$basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'termine_beantragen'" - . ", wert = '$termine_beantragen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'spielerliste_elo'" - . ", wert = '$spielerliste_elo'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_ausblenden'" - . ", wert = '$ansprechpartner_ausblenden'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_spielerdaten'" - . ", wert = '$ansprechpartner_spielerdaten'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_importieren'" - . ", wert = '$ansprechpartner_importieren'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_exportieren'" - . ", wert = '$ansprechpartner_exportieren'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'spielerimport_persoenliche_daten_vorauswahl'" - . ", wert = '$spielerimport_persoenliche_daten_vorauswahl'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen SET name = 'api_push_key', wert = '$api_push_key'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - /* - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'twitter_benutzername'" - . ", wert = '$twitter_benutzername'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - if (empty($twitter_benutzername) || !empty($twitter_kennwort)) { - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'twitter_kennwort'" - . ", wert = '$twitter_kennwort'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - */ - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminDatenbank() { - $db =& getDatabase(true); - - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_einstellungen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $einstellungen = array(); - foreach ($rows as $row) - $einstellungen[$row->name] = $row->wert; - - HTML_sportsmanager_admin::adminDatenbank($einstellungen); -} - -function adminSaveDatenbank() { - $db =& getDatabase(true); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $database_driver = $db->escape(trim($jinput->get('database_driver', '', 'RAW'))); - $database_host = $db->escape(trim($jinput->get('database_host', '', 'RAW'))); - $database_user = $db->escape(trim($jinput->get('database_user', '', 'RAW'))); - $database_password = $db->escape(trim($jinput->get('database_password', '', 'RAW'))); - $database_database = $db->escape(trim($jinput->get('database_database', '', 'RAW'))); - $database_prefix = $db->escape(trim($jinput->get('database_prefix', '', 'RAW'))); - $joomla_path = $db->escape(trim($jinput->get('joomla_path', '', 'RAW'))); - $joomla_path = $joomla_path == "/" && $joomla_path != "\\" ? $joomla_path : rtrim(rtrim($joomla_path, "\\"), "/"); - $joomla_url = $db->escape(trim($jinput->get('joomla_url', '', 'RAW'))); - if (strlen($joomla_url) > 0 && substr($joomla_url, strlen($joomla_url) - 1, 1) != "/") - $joomla_url .= "/"; - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_driver'" - . ", wert = '$database_driver'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_host'" - . ", wert = '$database_host'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_user'" - . ", wert = '$database_user'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_password'" - . ", wert = '$database_password'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_database'" - . ", wert = '$database_database'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'database_prefix'" - . ", wert = '$database_prefix'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'joomla_path'" - . ", wert = '$joomla_path'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'joomla_url'" - . ", wert = '$joomla_url'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminSpieler($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); - $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); - $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; - $ansprechpartner_bilder_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; - else if (benutzerVereinModerator()) - $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - $filter = $jinput->get('filter', '', 'RAW'); - if (empty($filter)) - $filter = $jinput->get('spezialfilter', '', 'RAW'); - - $anzahlSpieler = array(); - $query = "SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_spieler"; - if ($beschraenkter_zugriff == 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - if ($beschraenkter_zugriff == 1) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["aktiv"] = $db->loadResult(); - $jahr = date("Y"); - $db->setQuery($query . "\n WHERE " . ($jahr - 18) . " <= geburtsjahr"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["J aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE " . ($jahr - 50) . " > geburtsjahr"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["S aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE geschlecht = 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["H aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE geschlecht <> 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["D aktiv"] = $db->loadResult(); - - $query = "SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_spieler"; - if ($beschraenkter_zugriff == 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - if ($beschraenkter_zugriff == 1) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["eingeschraenkt"] = $db->loadResult(); - - $query = "SELECT COUNT(DISTINCT spieler_id)" - . "\n FROM #__sportsmanager_spieler"; - if ($beschraenkter_zugriff == 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - if ($beschraenkter_zugriff == 1) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["passiv"] = $db->loadResult(); - - $search = stripslashes($filter); - if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT") { - $jahr = date("Y"); - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," - . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," - . "\n vereinsname" - . "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname" - . "\n FROM #__sportsmanager_spieler" - . "\n GROUP BY nachname, vorname" - . "\n HAVING identische_namen > 1) AS identische_namen" - . "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - else if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT_JAHR") { - $jahr = date("Y"); - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," - . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," - . "\n vereinsname" - . "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname, geburtsjahr" - . "\n FROM #__sportsmanager_spieler" - . "\n GROUP BY nachname, vorname, geburtsjahr" - . "\n HAVING identische_namen > 1) AS identische_namen" - . "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname, geburtsjahr)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n ORDER BY nachname, vorname, geburtsjahr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - else if ($beschraenkter_zugriff == 0 && $search == "_____KEINE_SPIELERNR") { - $jahr = date("Y"); - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," - . "\n IF (ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," - . "\n vereinsname" - . "\n FROM #__sportsmanager_spieler" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n WHERE #__sportsmanager_spieler.spielernr = ''" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - else if (isset($search) && $search != "" && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) { - $searchEscapedWildcards = strpos($search, "*") !== false ? ($db->escape(trim(mb_strtolower(str_replace("*", "%", $search), 'UTF-8')))) : ("%" . $db->escape(trim(mb_strtolower($search, 'UTF-8'))) . "%"); - $searchEscaped = $db->escape(trim($search)); - - $jahr = date("Y"); - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," - . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," - . "\n vereinsname" - . "\n FROM #__sportsmanager_spieler"; - if ($beschraenkter_zugriff == 1) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else - $query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"; - $query .= "\n WHERE (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')"; - $query .= "\n ORDER BY nachname, vorname LIMIT 101"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 100) { - redirectSportsManagerURL('&task=admin_spieler', "Mehr als 100 Spieler gefunden, bitte genaueren Filter verwenden."); - - return; - } - } - else if ($anzahlSpieler["aktiv"] <= 100 && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) { - $jahr = date("Y"); - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," - . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," - . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," - . "\n vereinsname" - . "\n FROM #__sportsmanager_spieler"; - if ($beschraenkter_zugriff == 1) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else - $query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"; - $query .= "\n ORDER BY nachname, vorname LIMIT 101"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 100) - $rows = null; - } - else - $rows = null; - - $statistik = array(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(spielernr) AND spielernr <> ''), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["spielernr_national"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["spielernr_international"] = $db->loadResult(); - - HTML_sportsmanager_admin::adminSpieler($filter, $rows, $anzahlSpieler, $admin_uebersicht, $beschraenkter_zugriff, $ansprechpartner_importieren, $ansprechpartner_exportieren, $ansprechpartner_spielerdaten_bearbeiten, $ansprechpartner_bilder_bearbeiten, $statistik); -} - -function adminEditSpieler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); - $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten) - $beschraenkter_zugriff = 1; - else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten) - $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - $filter = $jinput->get('filter', '', 'RAW'); - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - $spieler = null; - else { - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $spieler = $rows[0]; - else - $spieler = null; - } - - if ($beschraenkter_zugriff != 0) { - if ($id == 0) - keinZugriff(true); - if ($beschraenkter_zugriff == 1) - $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; - else // $beschraenkter_zugriff == 2 - $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) - keinZugriff(true); - } - - // Vereine ermitteln - $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, ausgetreten AS verein_ausgetreten, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n ORDER BY veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - $vereinsmitgliedschaften = null; - if (!empty($id)) { - $query = "SELECT DISTINCT verein_id, mitgliedsstatus" - . "\n FROM #__sportsmanager_verein" - . "\n INNER JOIN (SELECT verein_id, mitgliedsstatus FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id) AS mitgliedschaft USING (verein_id)" - . "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsmitgliedschaften = $db->loadObjectList(); - } - - // Nächste Spieler-Nr. ermitteln - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); - $naechste_spielernr = $rows[0]->wert; - if (empty($naechste_spielernr)) - $naechste_spielernr = "1"; - - for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { - if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') - break; - } - $spielernr_praefix = substr($naechste_spielernr, 0, $i + 1); - - $query = "SELECT spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'" - . "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) > 0) { - $naechste_spielernr = $rows[0]->spielernr; - for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { - if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { - $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); - break; - } - if ($naechste_spielernr[$i] <= '8') { - $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; - break; - } - // $naechste_spielernr[$i] == '9' - $naechste_spielernr[$i] = '0'; - } - if ($i < 0) - $naechste_spielernr = "1" . $naechste_spielernr; - } - - HTML_sportsmanager_admin::adminEditSpieler($spieler, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten); -} - -function adminSaveSpieler() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); - $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten) - $beschraenkter_zugriff = 1; - else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten) - $beschraenkter_zugriff = 2; - else - keinZugriff(); - - $filter = $jinput->get('filter', '', 'RAW'); - $id = $jinput->get('id', 0, 'INT'); - $vorname = $db->escape(trim($jinput->get('vorname', '', 'RAW'))); - $nachname = $db->escape(trim($jinput->get('nachname', '', 'RAW'))); - $lizenz = $db->escape(trim($jinput->get('lizenz', '', 'RAW'))); - $pseudonym = $db->escape(trim($jinput->get('pseudonym', '', 'RAW'))); - $geschlecht = $db->escape(trim($jinput->get('geschlecht', 'M', 'RAW'))); - $geburtsdatum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); - $geburtsjahr = $jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%d", $jinput->get('datum_jahr', 0, 'INT')); - $strasse = $db->escape(trim($jinput->get('strasse', '', 'RAW'))); - $plz = $db->escape(trim($jinput->get('plz', '', 'RAW'))); - $ort = $db->escape(trim($jinput->get('ort', '', 'RAW'))); - $landeskennung = $db->escape(trim($jinput->get('landeskennung', '', 'RAW'))); - $telefon = $db->escape(trim($jinput->get('telefon', '', 'RAW'))); - $mobil = $db->escape(trim($jinput->get('mobil', '', 'RAW'))); - $email = $db->escape(trim($jinput->get('email', '', 'RAW'))); - $spielernr = $db->escape(trim($jinput->get('spielernr', '', 'RAW'))); - $lizenznr = $db->escape(trim($jinput->get('lizenznr', '', 'RAW'))); - $bild_ausblenden = $jinput->get('bild_ausblenden', 0, 'INT'); - $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); - $elo_startwert_einzel = max(min($jinput->get('elo_startwert_einzel', 0, 'INT'), 9999), 0); - $elo_startwert_doppel = max(min($jinput->get('elo_startwert_doppel', 0, 'INT'), 9999), 0); - $vereinsauswahl_anzahl = $jinput->get('vereinsauswahl_anzahl', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); - - return; - } - - $vereinsmitgliedschaften = array(); - $verein_mitgliedsstatus = array(); - for ($i = 0; $i < $vereinsauswahl_anzahl; $i++) { - $verein_id = $jinput->get('verein_id_' . $i, 0, 'INT'); - if (empty($verein_id)) - continue; - array_push($vereinsmitgliedschaften, $verein_id); - array_push($verein_mitgliedsstatus, $jinput->get('verein_mitgliedsstatus_' . $i, 0, 'INT')); - } - - if ($beschraenkter_zugriff != 0) { - if ($id == 0) - keinZugriff(true); - if ($beschraenkter_zugriff == 1) - $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; - else // $beschraenkter_zugriff == 2 - $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) - keinZugriff(); - } - - $query = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_verein READ, #__sportsmanager_berechtigt_fuer_verein READ, #__sportsmanager_berechtigt_fuer_veranstalter READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (strlen($spielernr) > 0) { - $query = "SELECT COUNT(*) FROM #__sportsmanager_spieler WHERE spielernr = '$spielernr' AND spieler_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_PLAYER_NO_USED')); - - return; - } - } - - $rangliste_aktualisieren = false; - $elo_aktualisieren = false; - // Vereinsmitgliedschaften prüfen und ggf. aktualisieren - if ($id != 0 && !$beschraenkter_zugriff) { - $query = "SELECT verein_id, #__sportsmanager_mitglied_von_verein.ausgetreten, mitgliedsstatus" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_vereinsmitgliedschaften = $db->loadObjectList(); - - foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) { - $ist_mitglied = false; - foreach ($vereinsmitgliedschaften as $verein_id) { - if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) { - $ist_mitglied = true; - break; - } - } - if (!$ist_mitglied) { - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $bestehende_vereinsmitgliedschaft->verein_id AND spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - //if ($id != 0) - // $rangliste_und_elo_aktualisieren = TRUE; - } - } - - foreach ($vereinsmitgliedschaften as $index => $verein_id) { - $ist_mitglied = false; - foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) { - if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) { - $ist_mitglied = true; - $mitgliedsstatus = $bestehende_vereinsmitgliedschaft->mitgliedsstatus; - break; - } - } - if (!$ist_mitglied) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE verein_id = $verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - // if ($id != 0) - // $rangliste_und_elo_aktualisieren = TRUE; - } - } - else if ($mitgliedsstatus != $verein_mitgliedsstatus[$index]) { - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET mitgliedsstatus = '" . ($verein_mitgliedsstatus[$index]) . "'," - . "\n ausgetreten = " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") - . "\n WHERE verein_id = $verein_id AND spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - // if ($id != 0) - // $rangliste_und_elo_aktualisieren = TRUE; - } - } - } - - if ($id == 0 && !$beschraenkter_zugriff) { - $query = "INSERT INTO #__sportsmanager_spieler " - . "(vorname, nachname, lizenz, pseudonym, geschlecht, geburtsdatum, geburtsjahr, strasse, plz, ort, landeskennung, telefon, mobil, email, spielernr, lizenznr, elo_einzel_startwert, elo_doppel_startwert, bild_ausblenden) " - . "VALUES ('$vorname', " - . "'$nachname', " - . "'$lizenz', " - . "'$pseudonym', " - . "'$geschlecht', " - . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . ", " - . ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . ", " - . "'$strasse', " - . "'$plz', " - . "'$ort', " - . "'$landeskennung', " - . "'$telefon', " - . "'$mobil', " - . "'$email', " - . "'$spielernr', " - . "'$lizenznr', " - . "'$elo_startwert_einzel', " - . "'$elo_startwert_doppel', " - . ($bild_ausblenden ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - // Vereinsmitgliedschaften erzeugen - foreach ($vereinsmitgliedschaften as $index => $verein_id) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE verein_id = $verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - if ($id != 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2")) { - - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_spieler', "Der Spieler existiert nicht mehr!"); - - return; - } - $spieler = $rows[0]; - - if ($spieler->elo_einzel_startwert != $elo_startwert_einzel || $spieler->elo_doppel_startwert != $elo_startwert_doppel) - $elo_aktualisieren = true; - - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET pseudonym = '$pseudonym'," - . "\n strasse = '$strasse'," - . "\n plz = '$plz'," - . "\n ort = '$ort'," - . "\n landeskennung = '$landeskennung'," - . "\n telefon = '$telefon'," - . "\n mobil = '$mobil'," - . "\n bild_ausblenden = " . ($bild_ausblenden ? "TRUE" : "FALSE") . ","; - if (!$beschraenkter_zugriff) { - $query .= "\n vorname = '$vorname'," - . "\n nachname = '$nachname'," - . "\n lizenz = '$lizenz'," - . "\n geschlecht = '$geschlecht'," - . "\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . "," - . "\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . "," - . "\n spielernr = '$spielernr'," - . "\n lizenznr = '$lizenznr'," - . "\n elo_einzel_startwert = " . ($elo_startwert_einzel == null ? "NULL" : "'$elo_startwert_einzel'") . "," - . "\n elo_doppel_startwert = " . ($elo_startwert_doppel == null ? "NULL" : "'$elo_startwert_doppel'") . ","; - } - $query .= "\n email = '$email'" - . "\n WHERE spieler_id = $id"; - - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($geburtsjahr != $spieler->geburtsjahr || $geschlecht != $spieler->geschlecht) - $rangliste_aktualisieren = true; - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren) - eloAktualisieren($spieler->erstmals_gespielt); - - if ($bildbeibehalten == 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3")) { - bildLoeschen('spieler', $id); - - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; - if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); - - return; - } - } - } - } - - aktuellerVereinAktualisieren($id); - if ($rangliste_aktualisieren) { - ranglisteAktualisieren(0, 0, $id); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); -} - -function adminRemoveSpieler() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - $filter = $jinput->get('filter', '', 'RAW'); - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE spieler_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE spieler_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("spieler", $id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren(); - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); -} - -function adminGroomingMehrfacheMitgliedschaften() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - $query = "SELECT spieler_id, COUNT(*) AS mehrfach" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n GROUP BY spieler_id, verein_id" - . "\n HAVING mehrfach > 1" - . "\n ORDER BY spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitglieder = $db->loadObjectList(); - - foreach ($mitglieder as $mitglied) { - $query = "SELECT mitglied_von_verein_id, verein_id" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n WHERE spieler_id = $mitglied->spieler_id" - . "\n ORDER BY verein_id, ausgetreten, mitgliedsstatus"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $mitglied_verein_id = -1; - foreach ($rows as $row) { - if ($mitglied_verein_id != $row->verein_id) { - $mitglied_verein_id = $row->verein_id; - continue; - } - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminSpielerZusammenlegenForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - $filter = $jinput->get('filter', '', 'RAW'); - - $query = "SELECT spieler_id, vorname, nachname, spielernr, aktueller_verein_id" - . "\n FROM #__sportsmanager_spieler" - . "\n ORDER BY nachname, vorname, spielernr, aktueller_verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerZusammenlegen($spieler, $filter); -} - -function adminSpielerZusammenlegen() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); - - $spieler_beizubehalten_id = $jinput->get('spieler_beizubehalten_id', 0, 'INT'); - $spieler_zu_entfernen_id = $jinput->get('spieler_zu_entfernen_id', 0, 'INT'); - $filter = $jinput->get('filter', '', 'RAW'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); - - return; - } - - if ($spieler_beizubehalten_id == $spieler_zu_entfernen_id) { - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spieler gewählt werden"); - - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); - - $query = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_beizubehalten_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter), "Beizubehaltender Spieler existiert nicht."); - } - $spieler_beizubehalten = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zu entfernender Spieler existiert nicht."); - } - $spieler_zu_entfernen = $rows[0]; - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_punkte" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_turniermeldung_spieler" - . "\n SET spieler_id = $spieler_beizubehalten_id" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET heim_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET heim_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET gast_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET gast_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" - . "\n SET heim_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" - . "\n SET heim_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" - . "\n SET gast_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" - . "\n SET gast_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT DISTINCT individualwettbewerb_id" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - foreach ($individualwettbewerbe as $individualwettbewerb) { - $individualwettbewerbid = $individualwettbewerb->individualwettbewerb_id; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); - - $spieler_beizubehalten_platzierung = array_search($spieler_beizubehalten_id, $platzierungen); - $spieler_zu_entfernen_platzierung = array_search($spieler_zu_entfernen_id, $platzierungen); - if ($spieler_beizubehalten_platzierung !== false && $spieler_zu_entfernen_platzierung !== false) - array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1); - else if ($spieler_beizubehalten_platzierung === false) - array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1, $spieler_beizubehalten_id); - - $platzierungen_uebrig = $platzierungen; - foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { - $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); - if ($index !== false) { - $platz = $index + 1; - if ($platzierung_vorhanden->platz != $platz) { - $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET platz = '$platz'" - . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); - unset($platzierungen_uebrig[$index_uebrig]); - } - else { - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($platzierungen_uebrig as $platzierung_uebrig) { - $index = array_search($platzierung_uebrig, $platzierungen); - $platz = $index + 1; - $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET individualwettbewerb_id = '$individualwettbewerbid'," - . "\n spieler_id = '$platzierung_uebrig'," - . "\n platz = '$platz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UPDATE #__sportsmanager_mitglied_von_team" - . "\n SET spieler_id = $spieler_beizubehalten_id" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT mitglied_von_verein_id, verein_id" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n WHERE spieler_id = $spieler_beizubehalten_id OR spieler_id = $spieler_zu_entfernen_id" - . "\n ORDER BY verein_id, ausgetreten, IF(spieler_id = $spieler_beizubehalten_id, 0, 1), mitgliedsstatus"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $mitglied_verein_id = -1; - foreach ($rows as $row) { - if ($mitglied_verein_id != $row->verein_id) { - $mitglied_verein_id = $row->verein_id; - continue; - } - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET spieler_id = $spieler_beizubehalten_id" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; - $neues_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_beizubehalten_id . '.'; - - if (!JFile::exists($neues_bild_pfad . 'png') && !JFile::exists($neues_bild_pfad . 'jpg')) { - $altes_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_zu_entfernen_id . '.'; - - if (JFile::exists($altes_bild_pfad . 'png')) - JFile::copy($altes_bild_pfad . 'png', $neues_bild_pfad . 'png'); - else if (JFile::exists($altes_bild_pfad . 'jpg')) - JFile::copy($altes_bild_pfad . 'jpg', $neues_bild_pfad . 'jpg'); - } - - bildLoeschen("spieler", $spieler_zu_entfernen_id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (!empty($spieler_zu_entfernen->erstmals_gespielt)) { - wannGespieltAktualisieren(); - individualwettbewerbTabelleAktualisieren(); - eloAktualisieren($spieler_zu_entfernen->erstmals_gespielt); - } - spielerstatistikAktualisieren(); - aktuellerVereinAktualisieren($spieler_beizubehalten_id); - ranglisteAktualisieren(); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); -} - -function adminRemoveInaktiveSpielerForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - $filter = $jinput->get('filter', '', 'RAW'); - - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, lizenznr" - . "\n FROM #__sportsmanager_spieler" - . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id" - . "\n WHERE ISNULL(aktueller_verein_id)" - . "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)" - . "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)" - . "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)" - . "\n AND ISNULL(teamspiel1.heim_spieler_1_id)" - . "\n AND ISNULL(teamspiel2.heim_spieler_2_id)" - . "\n AND ISNULL(teamspiel3.gast_spieler_1_id)" - . "\n AND ISNULL(teamspiel4.gast_spieler_2_id)" - . "\n AND ISNULL(individualspiel1.heim_spieler_1_id)" - . "\n AND ISNULL(individualspiel2.heim_spieler_2_id)" - . "\n AND ISNULL(individualspiel3.gast_spieler_1_id)" - . "\n AND ISNULL(individualspiel4.gast_spieler_2_id)" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminRemoveInaktiveSpieler($spieler, $filter); -} - -function adminRemoveInaktiveSpieler() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); - - $spieler_beizubehalten_ids = $jinput->get('spielerids', array(), 'ARRAY'); - $filter = $jinput->get('filter', '', 'RAW'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_teamspiel AS teamspiel1 READ, #__sportsmanager_teamspiel AS teamspiel2 READ, #__sportsmanager_teamspiel AS teamspiel3 READ, #__sportsmanager_teamspiel AS teamspiel4 READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_spieler.spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id" - . "\n WHERE ISNULL(aktueller_verein_id)" - . "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)" - . "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)" - . "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)" - . "\n AND ISNULL(teamspiel1.heim_spieler_1_id)" - . "\n AND ISNULL(teamspiel2.heim_spieler_2_id)" - . "\n AND ISNULL(teamspiel3.gast_spieler_1_id)" - . "\n AND ISNULL(teamspiel4.gast_spieler_2_id)" - . "\n AND ISNULL(individualspiel1.heim_spieler_1_id)" - . "\n AND ISNULL(individualspiel2.heim_spieler_2_id)" - . "\n AND ISNULL(individualspiel3.gast_spieler_1_id)" - . "\n AND ISNULL(individualspiel4.gast_spieler_2_id)" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - $bilder_spieler_ids = array(); - - foreach ($spieler AS $s) { - $id = $s->spieler_id; - - if (in_array($id, $spieler_beizubehalten_ids)) - continue; - - array_push($bilder_spieler_ids, $id); - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren(); - - foreach ($bilder_spieler_ids AS $id) - bildLoeschen("spieler", $id); - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); -} - -function adminImportSpielerForm() { - $db =& getDatabase(); - - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - HTML_sportsmanager_admin::adminImportSpieler(); -} - -function adminImportSpielerDetailsForm() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $query = "SELECT DISTINCT session_id" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '$row->session_id'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED')); - - return; - } - - $handle = fopen($_FILES["daten"]["tmp_name"], "r"); - if (!$handle) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE')); - - return; - } - if (feof($handle)) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_FILE_IS_EMPTY')); - - return; - } - - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - if (substr($titelzeile, 0, 4) == "sep=") { - $trennzeichen = substr($titelzeile, 4); - if ($trennzeichen == "") // TAB am Ende wird aus irgendwelchen Gründen weggekürzt - $trennzeichen = "\t"; - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - } - else if ($titelzeile == "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM") - $trennzeichen = "#"; - else if (strpos($titelzeile, "\t") !== false) - $trennzeichen = "\t"; - else if (strpos($titelzeile, ";") !== false) - $trennzeichen = ";"; - else - $trennzeichen = ","; - - $spalte = array(); - - if (substr($titelzeile, 0, 14) == ";All licensees" || substr($titelzeile, 0, 24) == ";All validated licensees") { - // ITSF-Export - $lizenz_import = true; - $buffer = $titelzeile; - while (!feof($handle) && strpos($buffer, "Profession") === false) - $buffer = chop(utf8_encode(fgets($handle, 4096))); - $spalte["nachname"] = 3; - $spalte["vorname"] = 2; - $spalte["geschlecht"] = 1; - $spalte["spielernr"] = 6; - $spalte["lizenznr"] = 0; - $spalte["geburtsjahr"] = 5; - } - else { - $lizenz_import = false; - $titel = explode($trennzeichen, strtolower($titelzeile)); - - foreach ($titel as $index => $bezeichnung) { - $bezeichnung = trim($bezeichnung); - $len = strlen($bezeichnung); - if ($len >= 2 && $bezeichnung[0] == '"' && $bezeichnung[$len - 1] == '"') - $bezeichnung = trim(str_replace('""', '"', substr($bezeichnung, 1, $len - 2))); - - if ($bezeichnung == "name" || $bezeichnung == "nachname") - $spalte["nachname"] = $index; - else if ($bezeichnung == "vorname") - $spalte["vorname"] = $index; - else if ($bezeichnung == "name, vorname" || $bezeichnung == "name,vorname") - $spalte["name,vorname"] = $index; - else if ($bezeichnung == "pseudonym") - $spalte["pseudonym"] = $index; - else if ($bezeichnung == "geschlecht" || $bezeichnung == "anrede") - $spalte["geschlecht"] = $index; - else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr." || $bezeichnung == "spielerpass") - $spalte["spielernr"] = $index; - else if ($bezeichnung == "spielernr alt" || $bezeichnung == "spielernr. alt" || $bezeichnung == "spielernr_alt") - $spalte["spielernr_alt"] = $index; - else if ($bezeichnung == "lizenznr" || $bezeichnung == "lizenznr.") - $spalte["lizenznr"] = $index; - else if ($bezeichnung == "organisation") - $spalte["organisation"] = $index; - else if ($bezeichnung == "vereinssitz") - $spalte["vereinssitz"] = $index; - else if ($bezeichnung == "vereinsname" || $bezeichnung == "verein") - $spalte["vereinsname"] = $index; - else if ($bezeichnung == "mannschaft" || $bezeichnung == "teamname") - $spalte["teamname"] = $index; - else if ($bezeichnung == "geburtsdatum") - $spalte["geburtsdatum"] = $index; - else if ($bezeichnung == "geburtsjahr") - $spalte["geburtsjahr"] = $index; - else if ($bezeichnung == "email" || $bezeichnung == "e-mail") - $spalte["email"] = $index; - else if (substr($bezeichnung, 0, 4) == "stra") - $spalte["strasse"] = $index; - else if ($bezeichnung == "plz/ort") - $spalte["plz/ort"] = $index; - else if ($bezeichnung == "plz") - $spalte["plz"] = $index; - else if ($bezeichnung == "ort") - $spalte["ort"] = $index; - else if ($bezeichnung == "landeskennung") - $spalte["landeskennung"] = $index; - else if ($bezeichnung == "telefon") - $spalte["telefon"] = $index; - else if ($bezeichnung == "mobil") - $spalte["mobil"] = $index; - else if ($bezeichnung == "beruf") - $spalte["beruf"] = $index; - else if ($bezeichnung == "austritt" || $bezeichnung == "ausgetreten") - $spalte["ausgetreten"] = $index; - else if ($bezeichnung == "mitgliedsstatus") - $spalte["mitgliedsstatus"] = $index; - } - - if (((!isset($spalte["nachname"]) || !isset($spalte["vorname"])) && !isset($spalte["name,vorname"])) || !isset($spalte["spielernr"])) { - redirectSportsManagerURL('&task=admin_spieler', "Die übergebene Datei ist keine Spielerdatei."); - - return; - } - } - - $session_id = date('Y-m-d H:i:s'); - -// $veranstalter_import = array(); - - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - $daten = explode($trennzeichen, $buffer); - - foreach ($daten as $index => $wert) { - $wert = trim($wert); - $len = strlen($wert); - if ($len < 2 || $wert[$len - 1] != '"' || !($wert[0] == '"' || ($wert[0] == '=' && $wert[1] == '"'))) - $daten[$index] = $wert; - else if ($wert[0] == '"') - $daten[$index] = trim(str_replace('""', '"', substr($wert, 1, $len - 2))); - else - $daten[$index] = trim(str_replace('""', '"', substr($wert, 2, $len - 3))); - } - - if (isset($spalte["vorname"]) && isset($spalte["nachname"]) && isset($daten[$spalte["vorname"]]) && isset($daten[$spalte["nachname"]])) { - $nachname = $daten[$spalte["nachname"]]; - $vorname = $daten[$spalte["vorname"]]; - } - else if (isset($spalte["name,vorname"]) && isset($daten[$spalte["name,vorname"]])) { - $pos = strpos($daten[$spalte["name,vorname"]], ","); - if ($pos === false) - continue; - $nachname = trim(substr($daten[$spalte["name,vorname"]], 0, $pos)); - $vorname = trim(substr($daten[$spalte["name,vorname"]], $pos + 1)); - } - else - continue; - - if ($vorname == "" || $nachname == "") - continue; - - $mitgliedsstatus = 1; - if (isset($spalte["mitgliedsstatus"]) && isset($daten[$spalte["mitgliedsstatus"]]) && !empty($daten[$spalte["mitgliedsstatus"]])) { - $s = strtolower($daten[$spalte["mitgliedsstatus"]]); - if ($s == "ausgetreten") - $mitgliedsstatus = 0; - else if ($s == "passiv") - $mitgliedsstatus = 3; - else if (substr($s, 0, 9) == "eingeschr") - $mitgliedsstatus = 2; - } - else if (isset($spalte["ausgetreten"]) && isset($daten[$spalte["ausgetreten"]]) && !empty($daten[$spalte["ausgetreten"]])) { - if (strtolower($daten[$spalte["ausgetreten"]]) == "ja") - $mitgliedsstatus = 0; - } - - if ($mitgliedsstatus == 0) - continue; - - $geschlecht = isset($spalte["geschlecht"]) && isset($daten[$spalte["geschlecht"]]) ? (($daten[$spalte["geschlecht"]][0] == "M" || $daten[$spalte["geschlecht"]][0] == "m" || $daten[$spalte["geschlecht"]][0] == "H" || $daten[$spalte["geschlecht"]][0] == "h") ? "M" : "W") : "M"; - $spielernr = isset($spalte["spielernr"]) && isset($daten[$spalte["spielernr"]]) ? trim($daten[$spalte["spielernr"]]) : ""; - if (!empty($spielernr) && !ctype_digit(substr($spielernr, strlen($spielernr) - 1, 1))) - $spielernr = ""; - $spielernr_alt = isset($spalte["spielernr_alt"]) && isset($daten[$spalte["spielernr_alt"]]) ? trim($daten[$spalte["spielernr_alt"]]) : ""; - $lizenznr = isset($spalte["lizenznr"]) && isset($daten[$spalte["lizenznr"]]) ? $daten[$spalte["lizenznr"]] : ""; - if (!empty($lizenznr) && !ctype_digit(substr($lizenznr, strlen($lizenznr) - 1, 1))) - $lizenznr = ""; - $pseudonym = isset($spalte["pseudonym"]) && isset($daten[$spalte["pseudonym"]]) ? $daten[$spalte["pseudonym"]] : ""; - $organisation = isset($spalte["organisation"]) && isset($daten[$spalte["organisation"]]) ? $daten[$spalte["organisation"]] : ""; - $vereinssitz = isset($spalte["vereinssitz"]) && isset($daten[$spalte["vereinssitz"]]) ? $daten[$spalte["vereinssitz"]] : ""; - $vereinsname = isset($spalte["vereinsname"]) && isset($daten[$spalte["vereinsname"]]) ? $daten[$spalte["vereinsname"]] : ""; - $geburtsdatum = isset($spalte["geburtsdatum"]) && isset($daten[$spalte["geburtsdatum"]]) ? normalisiertesDatum($daten[$spalte["geburtsdatum"]]) : null; - $geburtsjahr = isset($spalte["geburtsjahr"]) && isset($daten[$spalte["geburtsjahr"]]) ? $daten[$spalte["geburtsjahr"]] : null; - if (empty($geburtsjahr) || !ctype_digit($geburtsjahr) || $geburtsjahr < 1800) - $geburtsjahr = null; - $email = isset($spalte["email"]) && isset($daten[$spalte["email"]]) ? $daten[$spalte["email"]] : ""; - $strasse = isset($spalte["strasse"]) && isset($daten[$spalte["strasse"]]) ? $daten[$spalte["strasse"]] : ""; - if (isset($spalte["plz/ort"]) && isset($daten[$spalte["plz/ort"]])) { - $pos = strpos($daten[$spalte["plz/ort"]], ' '); - if ($pos == false) { - $plz = ""; - $ort = ""; - } - else { - $plz = substr($daten[$spalte["plz/ort"]], 0, $pos); - $ort = substr($daten[$spalte["plz/ort"]], $pos + 1); - } - } - else { - $plz = ""; - $ort = ""; - } - if (isset($spalte["plz"])) - $plz = isset($daten[$spalte["plz"]]) ? $daten[$spalte["plz"]] : ""; - if (isset($spalte["ort"])) - $ort = isset($daten[$spalte["ort"]]) ? $daten[$spalte["ort"]] : ""; - $landeskennung = isset($spalte["landeskennung"]) && isset($daten[$spalte["landeskennung"]]) ? $daten[$spalte["landeskennung"]] : ""; - $telefon = isset($spalte["telefon"]) && isset($daten[$spalte["telefon"]]) ? $daten[$spalte["telefon"]] : ""; - $mobil = isset($spalte["mobil"]) && isset($daten[$spalte["mobil"]]) ? $daten[$spalte["mobil"]] : ""; - $beruf = isset($spalte["beruf"]) && isset($daten[$spalte["beruf"]]) ? $daten[$spalte["beruf"]] : ""; - - $query = "INSERT #__sportsmanager_spieler_import" - . "\n SET session_id = '" . $db->escape($session_id) . "'," - . "\n vorname = '" . $db->escape($vorname) . "'," - . "\n nachname = '" . $db->escape($nachname) . "'"; - if (isset($spalte["spielernr"])) - $query .= ",\n spielernr = '" . $db->escape($spielernr) . "'"; - if (isset($spalte["spielernr_alt"])) - $query .= ",\n spielernr_alt = '" . $db->escape($spielernr_alt) . "'"; - if (isset($spalte["lizenznr"])) - $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; - if (isset($spalte["pseudonym"])) - $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"; - $query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'"; - if (isset($spalte["geburtsdatum"])) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"])) - $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? ($geburtsdatum == null ? "NULL" : ("YEAR('" . $db->escape($geburtsdatum) . "')")) : ("'" . $db->escape($geburtsjahr) . "'")); - if (isset($spalte["strasse"])) - $query .= ",\n strasse = '" . $db->escape($strasse) . "'"; - if (isset($spalte["plz"])) - $query .= ",\n plz = '" . $db->escape($plz) . "'"; - if (isset($spalte["ort"])) - $query .= ",\n ort = '" . $db->escape($ort) . "'"; - if (isset($spalte["landeskennung"])) - $query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'"; - if (isset($spalte["telefon"])) - $query .= ",\n telefon = '" . $db->escape($telefon) . "'"; - if (isset($spalte["mobil"])) - $query .= ",\n mobil = '" . $db->escape($mobil) . "'"; - if (isset($spalte["email"])) - $query .= ",\n email = '" . $db->escape($email) . "'"; - if (isset($spalte["vereinsname"])) - $query .= ",\n vereinsname = '" . $db->escape($vereinsname) . "'"; - if (isset($spalte["vereinssitz"])) - $query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'"; - if (isset($spalte["organisation"])) - $query .= ",\n veranstalterbezeichnung = '" . $db->escape($organisation) . "'"; - $query .= ",\n mitgliedsstatus = '" . $mitgliedsstatus . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - -// if (!isset($veranstalter_import[$organisation])) -// $veranstalter_import[$organisation] = TRUE; - } - fclose($handle); - - if ($lizenz_import) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_spieler_import" - . "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $lizenzen_aktualisiert = $db->loadResult(); - - $query = "UPDATE #__sportsmanager_spieler_import" - . "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)" - . "\n SET #__sportsmanager_spieler.lizenznr = #__sportsmanager_spieler_import.lizenznr" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); - - return; - } - - $spalten = array(); - if (isset($spalte["pseudonym"])) - array_push($spalten, "pseudonym"); - if (isset($spalte["geschlecht"])) - array_push($spalten, "geschlecht"); - if (isset($spalte["spielernr"])) - array_push($spalten, "spielernr"); - if (isset($spalte["spielernr_alt"])) - array_push($spalten, "spielernr_alt"); - if (isset($spalte["lizenznr"])) - array_push($spalten, "lizenznr"); - if (isset($spalte["organisation"])) - array_push($spalten, "organisation"); - if (isset($spalte["vereinssitz"])) - array_push($spalten, "vereinssitz"); - if (isset($spalte["vereinsname"])) - array_push($spalten, "vereinsname"); - if (isset($spalte["geburtsdatum"])) - array_push($spalten, "geburtsdatum"); - if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"])) - array_push($spalten, "geburtsjahr"); - if (isset($spalte["email"])) - array_push($spalten, "email"); - if (isset($spalte["strasse"])) - array_push($spalten, "strasse"); - if (isset($spalte["strasse"])) - array_push($spalten, "strasse"); - if (isset($spalte["plz/ort"]) || isset($spalte["plz"])) - array_push($spalten, "plz"); - if (isset($spalte["plz/ort"]) || isset($spalte["ort"])) - array_push($spalten, "ort"); - if (isset($spalte["landeskennung"])) - array_push($spalten, "landeskennung"); - if (isset($spalte["telefon"])) - array_push($spalten, "telefon"); - if (isset($spalte["mobil"])) - array_push($spalten, "mobil"); - array_push($spalten, "mitgliedsstatus"); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter"; - if ($beschraenkter_zugriff) - $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); - $query .= "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT DISTINCT veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); - - $veranstalter_zugehoerigkeit = array(); - foreach ($veranstalter_import as $v) { - $query = "SELECT #__sportsmanager_veranstalter.veranstalter_id, COUNT(*) AS spieler" - . "\n FROM #__sportsmanager_spieler_import" - . "\n INNER JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" - . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" - . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr != '' AND " . (empty($v->veranstalterbezeichnung) ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v->veranstalterbezeichnung) . "'")) . " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" - . "\n GROUP BY #__sportsmanager_veranstalter.veranstalter_id" - . "\n ORDER BY spieler DESC" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) - $veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] = $rows[0]->veranstalter_id; - } - - $query = "SELECT DISTINCT vereinsname, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine_import = $db->loadObjectList(); - $vereine_import_anzahl = count($vereine_import); - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_verein"; - if ($beschraenkter_zugriff) - $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine_aktuell_anzahl = $db->loadResult(); - - if (!$beschraenkter_zugriff && count($vereine_import) == 1) { - $verein_import = $vereine_import[0]->vereinsname; - $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten" - . "\n ORDER BY veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - } - else { - $verein_import = ""; - $vereine = array(); - } - - HTML_sportsmanager_admin::adminImportSpielerDetails($beschraenkter_zugriff, $ansprechpartner_importieren, $veranstalter, $veranstalter_import, $veranstalter_zugehoerigkeit, $session_id, implode(",", $spalten), $verein_import, $vereine, einstellungswert("spielerimport_persoenliche_daten_vorauswahl"), $vereine_import_anzahl, $vereine_aktuell_anzahl); -} - -function adminImportSpielerVorschau() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); - - $session_id = $jinput->get('session_id', '', 'RAW'); - - $query = "SELECT DISTINCT veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); - - $spalten = array(); - foreach (explode(",", $jinput->get('spalten', '', 'RAW')) as $s) - $spalten[$s] = true; - $veranstalter = array(); - $n = 1; - foreach ($veranstalter_import as $v) { - $veranstalter_id = $jinput->get('veranstalter_' . $n . '_id', '', 'INT'); - if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id))) - $veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id; - else - $veranstalter[$v->veranstalterbezeichnung] = ""; - $n++; - } - - $spielernr_aendern = false; - if (isset($spalten["spielernr_alt"])) { - $query = "SELECT nachname, vorname, spielernr, spielernr_alt" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != ''" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielervergleich = $db->loadObjectList(); - - if (count($spielervergleich) > 0) { - $spielernr_aendern = true; - $s1 = $spielervergleich[0]; - $query = "SELECT nachname, vorname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE spielernr = '$s1->spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - if (count($spieler) > 0) { - $s2 = $spieler[0]; - if ($s1->vorname == $s2->vorname && $s1->nachname == $s1->nachname) { - $query = "UPDATE #__sportsmanager_spieler_import" - . "\n SET spielernr_alt = NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielernr_aendern = false; - } - } - - if ($spielernr_aendern) { - $query = "SELECT nachname, vorname" - . "\n FROM" - . "\n (SELECT nachname, vorname, spielernr, spielernr_alt" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import" - . "\n INNER JOIN" - . "\n (SELECT spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n ) AS bestand" - . "\n ON bestand.spielernr = import.spielernr" - . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $konflikte = $db->loadObjectList(); - - if (count($konflikte) > 0) { - HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); - - return; - } - } - } - } - - $query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt," - . "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) AS namensgleich" - . "\n FROM #__sportsmanager_spieler_import" - . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr") - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n HAVING namensgleich > 0 OR NOT ISNULL(nachname_alt) OR NOT ISNULL(vorname_alt)" - // "namensgleich" kann in der "ORDER"-Anweisung" nicht verwendet werden, da MySQL 5.0.x dies nicht akzeptiert - . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) > 0 DESC, nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_import = $db->loadObjectList(); - - $import_verweigern = false; - if ($beschraenkter_zugriff) { - $eintraege_zugeordnet = 0; - $eintraege_nicht_zugeordnet = 0; - foreach ($spieler_import as $s) { - if ($s->namensgleich > 0) { - $import_verweigern = true; - break; - } - $p1 = $p2 = 100; - if ($s->nachname_alt != null) - similar_text($s->nachname, $s->nachname_alt, $p1); - if ($s->vorname_alt != null) - similar_text($s->vorname, $s->vorname_alt, $p2); - if (floor($p1) < 75 && floor($p2) < 75) { - $p1 = $p2 = 100; - if ($s->nachname_alt != null) - similar_text($s->vorname, $s->nachname_alt, $p1); - if ($s->vorname_alt != null) - similar_text($s->nachname, $s->vorname_alt, $p2); - if (floor($p1) < 75 && floor($p2) < 75) { - $import_verweigern = true; - break; - } - } - } - if (!$import_verweigern) { - $query = "SELECT SUM(IF(ISNULL(spieler_id), 0, 1)) AS zugeordnet, SUM(IF(ISNULL(spieler_id), 1, 0)) AS nicht_zugeordnet" - . "\n FROM #__sportsmanager_spieler_import" - . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr") - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_zugeordnet = $db->loadObjectList(); - - if (count($spieler_zugeordnet) > 0 && $spieler_zugeordnet[0]->nicht_zugeordnet > ($spieler_zugeordnet[0]->zugeordnet / 2)) - $import_verweigern = true; - } - } - - if ($import_verweigern) { - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - HTML_sportsmanager_admin::adminImportSpielerVorschau($import_verweigern, $spieler_import, $veranstalter, $session_id, $jinput->get('persoenliche_daten', 0, 'INT'), $jinput->get('lizenznr_beibehalten', 0, 'INT'), $jinput->get('spalten', '', 'RAW')); -} - -function adminImportSpieler() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); - - - if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1) - $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" - else - $persoenliche_daten = 0; - $lizenznr_beibehalten = $jinput->get('lizenznr_beibehalten', 0, 'INT'); - - $session_id = $jinput->get('session_id', '', 'RAW'); - $query = "SELECT DISTINCT veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); - - $spalten = array(); - foreach (explode(",", $jinput->get('spalten', '', 'RAW')) as $s) - $spalten[$s] = true; - $veranstalter = array(); - $n = 1; - $verein_explizit = 0; - foreach ($veranstalter_import as $v) { - if (isset($_POST["veranstalter_" . $n . "_id"])) { - $veranstalter_id = $jinput->get('veranstalter_' . $n . '_id', '', 'INT'); - if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id))) { - if ($veranstalter_id == "") - $veranstalter_id = -1; - else if ($veranstalter_id < 0) { - $verein_explizit = abs($veranstalter_id); - break; - } - else - $veranstalter_id = intval($veranstalter_id); - $veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id; - } - else { - $veranstalter[$v->veranstalterbezeichnung] = -1; - } - } - $n++; - } - - $query = "LOCK TABLES #__sportsmanager_einstellungen READ, #__sportsmanager_spieler WRITE, #__sportsmanager_spieler AS tt1 READ, #__sportsmanager_spieler AS tt2 READ, #__sportsmanager_spieler_import WRITE, #__sportsmanager_spieler_import AS it1 READ, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_mitglied_von_verein AS t1 READ, #__sportsmanager_verein WRITE, #__sportsmanager_veranstalter READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - /* - // TODO: Importinhalt um Spielernummern ergänzen, dann UPDATE aller gegebenen Spalten. So kein Vorgehen Spieler für Spieler erforderlich. - - Immer Spieler neu hinzufügen, wenn Spieler über Spielernr. nicht gefunden werden konnte, d.h. - wenn keine Spielernr. vorhanden, dann Spielernr. generieren - sonst Spielernr. übernehmen - -*/ - - if (isset($spalten["spielernr_alt"])) { - $query = "SELECT nachname, vorname" - . "\n FROM" - . "\n (SELECT nachname, vorname, spielernr, spielernr_alt" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import" - . "\n INNER JOIN" - . "\n (SELECT spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n ) AS bestand" - . "\n ON bestand.spielernr = import.spielernr" - . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import AS it1 WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $konflikte = $db->loadObjectList(); - - if (count($konflikte) > 0) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); - - return; - } - - $query = "UPDATE #__sportsmanager_spieler" - . "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(spielernr_alt) AND spielernr_alt != '' AND spielernr_alt = #__sportsmanager_spieler.spielernr" - . "\n SET #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr_alt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT IF(EXISTS(" - . "\n SELECT * FROM #__sportsmanager_spieler" - . "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(#__sportsmanager_spieler_import.spielernr) AND #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" - . "\n WHERE #__sportsmanager_spieler_import.geschlecht != #__sportsmanager_spieler.geschlecht OR #__sportsmanager_spieler_import.geburtsjahr != #__sportsmanager_spieler.geburtsjahr" - . "\n), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $kategorie_potentiell_geaendert = $db->loadResult(); - - $query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt," - . "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt1 WHERE (#__sportsmanager_spieler_import.vorname = tt1.vorname AND #__sportsmanager_spieler_import.nachname = tt1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt1.geburtsjahr))), 0) AS namensgleich" - . "\n FROM #__sportsmanager_spieler_import" - . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND 1 = 1" - // "namensgleich", "nachname_alt", "vorname_alt" kann in der "ORDER"-Anweisung" nicht verwendet werden, da MySQL 5.0.x dies nicht akzeptiert - // . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt2 WHERE (#__sportsmanager_spieler_import.vorname = tt2.vorname AND #__sportsmanager_spieler_import.nachname = tt2.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt2.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt2.geburtsjahr))), 0) > 0 DESC, IF(NOT ISNULL(nachname_alt) OR NOT ISNULL(vorname_alt), 0, 1), nachname, vorname"; - . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt2 WHERE (#__sportsmanager_spieler_import.vorname = tt2.vorname AND #__sportsmanager_spieler_import.nachname = tt2.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt2.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt2.geburtsjahr))), 0) > 0 DESC, IF(NOT ISNULL(IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL)) OR NOT ISNULL(IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL)), 0, 1), nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_import = $db->loadObjectList(); - - if (empty($verein_explizit)) { - // Alle Vereinsmitgliedschaften des Verbandes vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können - foreach ($veranstalter as $v => $veranstalterid) { - if ($veranstalterid != -1) { - $query = "UPDATE #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id)" - . "\n SET mitgliedsstatus = 0," - . "\n #__sportsmanager_mitglied_von_verein.ausgetreten = TRUE" - . "\n WHERE " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else if ($verein_explizit != -1) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - - // Alle Vereinsmitgliedschaften des Vereins vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET mitgliedsstatus = 0," - . "\n ausgetreten = TRUE" - . "\n WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" - . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - - // Nächste Spieler-Nr. ermitteln - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); - $naechste_spielernr = $rows[0]->wert; - if (empty($naechste_spielernr)) - $naechste_spielernr = "1"; - - for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { - if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') - break; - } - $spielernr_praefix = substr($naechste_spielernr, 0, $i + 1); - - $query = "SELECT spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'" - . "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) > 0) { - $naechste_spielernr = $rows[0]->spielernr; - for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { - if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { - $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); - break; - } - if ($naechste_spielernr[$i] <= '8') { - $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; - break; - } - // $naechste_spielernr[$i] == '9' - $naechste_spielernr[$i] = '0'; - } - if ($i < 0) - $naechste_spielernr = "1" . $naechste_spielernr; - } - - $aktualisierungen = 0; - $spielerHinzugefuegt = array(); - $vereineHinzugefuegt = 0; - $vereineManuell = array(); - $spielerIdsHinzugefuegt = array(); - - $organisation = -1; - $veranstalterid = -1; - foreach ($spieler_import as $t) { - // wenn der Spieler ausgetreten ist, dann nicht prüfen - $mitgliedsstatus = $t->mitgliedsstatus; - if ($mitgliedsstatus == 0) - continue; - - if (empty($verein_explizit)) { - if ($organisation != $t->veranstalterbezeichnung) { - $organisation = $t->veranstalterbezeichnung; - $veranstalterid = isset($veranstalter[$organisation]) ? $veranstalter[$organisation] : -1; - } - if ($veranstalterid == -1) - continue; - } - - $spieler_id = $t->spieler_id; - $nachname = $t->nachname; - $vorname = $t->vorname; - $name = $t->vorname . " " . $t->nachname; - $geschlecht = $t->geschlecht; - $spielernr = $t->spielernr; - $lizenznr = $t->lizenznr; - $pseudonym = $t->pseudonym; - $vereinsname = $t->vereinsname; - $geburtsdatum = $t->geburtsdatum; - $geburtsjahr = $t->geburtsjahr; - $email = $t->email; - $strasse = $t->strasse; - $plz = $t->plz; - $ort = $t->ort; - $landeskennung = $t->landeskennung; - $telefon = $t->telefon; - $mobil = $t->mobil; - $spielernr = $t->spielernr; - - if ($spieler_id == null && !empty($spielernr) && isset($spielerIdsHinzugefuegt[$spielernr])) - $spieler_id = $spielerIdsHinzugefuegt[$spielernr]; // Wenn Spieler schon hinzugefügt wurde, dann vorhandenen Eintrag verwenden; verhindert doppeltes Hinterlegen von Spielernr. - - // Wenn kein Vereinsname angegeben ist, aber eine Organisation gewählt wurde, dann Spieler nicht ergänzen - if ($spieler_id == null && empty($vereinsname) && empty($verein_explizit)) - continue; - - // Spieler aktualisieren bzw. ergänzen - if ($spieler_id != null) { // Spieler aktualisieren - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET vorname = '" . $db->escape($vorname) . "'," - . "\n nachname = '" . $db->escape($nachname) . "'," - . "\n spielernr = '" . $db->escape($spielernr) . "'"; - if (isset($spalten["lizenznr"]) && ($lizenznr_beibehalten == 0 || !empty($lizenznr))) - $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; - if (isset($spalten["pseudonym"])) - $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"; - if (isset($spalten["geschlecht"])) - $query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'"; - if (isset($spalten["geburtsdatum"]) || isset($spalten["geburtsjahr"])) - $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); - if (($persoenliche_daten == 1 || $persoenliche_daten == 2) && isset($spalten["geburtsdatum"])) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - if ($persoenliche_daten == 2) { - if (isset($spalten["strasse"])) - $query .= ",\n strasse = '" . $db->escape($strasse) . "'"; - if (isset($spalten["plz"])) - $query .= ",\n plz = '" . $db->escape($plz) . "'"; - if (isset($spalten["ort"])) - $query .= ",\n ort = '" . $db->escape($ort) . "'"; - if (isset($spalten["landeskennung"])) - $query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'"; - if (isset($spalten["telefon"])) - $query .= ",\n telefon = '" . $db->escape($telefon) . "'"; - if (isset($spalten["mobil"])) - $query .= ",\n mobil = '" . $db->escape($mobil) . "'"; - if (isset($spalten["email"])) - $query .= ",\n email = '" . $db->escape($email) . "'"; - } - $query .= "\n WHERE spieler_id = $spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - // $bearbeitungsVerlauf .= "-> Spielerdaten aktualisiert "; - - $aktualisierungen++; - } - else { // Spieler ergänzen - // Neuen Spieler anlegen - $query = "INSERT #__sportsmanager_spieler" - . "\n SET vorname = '" . $db->escape($vorname) . "'" - . ",\n nachname = '" . $db->escape($nachname) . "'" - . ",\n spielernr = '" . $db->escape(!empty($spielernr) ? $spielernr : $naechste_spielernr) . "'" - . ",\n lizenznr = '" . $db->escape($lizenznr) . "'" - . ",\n geschlecht = '" . $db->escape($geschlecht) . "'" - . ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); - if ($persoenliche_daten == 1 || $persoenliche_daten == 2) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - if ($persoenliche_daten == 2) - $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'" - . ",\n strasse = '" . $db->escape($strasse) . "'" - . ",\n plz = '" . $db->escape($plz) . "'" - . ",\n ort = '" . $db->escape($ort) . "'" - . ",\n landeskennung = '" . $db->escape($landeskennung) . "'" - . ",\n telefon = '" . $db->escape($telefon) . "'" - . ",\n mobil = '" . $db->escape($mobil) . "'" - . ",\n email = '" . $db->escape($email) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_id = $db->insertid(); - - array_push($spielerHinzugefuegt, array($nachname, $vorname, !empty($spielernr) ? $spielernr : $naechste_spielernr)); - $spielerIdsHinzugefuegt[!empty($spielernr) ? $spielernr : $naechste_spielernr] = $spieler_id; - - if (empty($spielernr)) { - do { - for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { - if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { - $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); - break; - } - if ($naechste_spielernr[$i] <= '8') { - $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; - break; - } - // $naechste_spielernr[$i] == '9' - $naechste_spielernr[$i] = '0'; - } - if ($i < 0) - $naechste_spielernr = "1" . $naechste_spielernr; - } while (isset($spielerIdsHinzugefuegt[$naechste_spielernr])); - } - } - - // Wenn nicht ausgetreten und Vereisname angegeben, dann Vereinsmitgliedschaft herstellen - if (!empty($vereinsname) || !empty($verein_explizit)) { - // Prüfen, ob Vereinsmitgliedschaft besteht - if (!empty($verein_explizit)) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n WHERE spieler_id = $spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) { - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET mitgliedsstatus = '$mitgliedsstatus'," - . "\n ausgetreten = FALSE" - . "\n WHERE spieler_id = $spieler_id AND verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - // Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert - $query = "SELECT verein_id" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - // Wenn Verein existiert, dann Mitgliedschaft ergänzen - if (count($rows) > 0) { - $query = "INSERT #__sportsmanager_mitglied_von_verein" - . "\n SET spieler_id = $spieler_id, verein_id = $verein_explizit, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" - . "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" - . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) { - $query = "UPDATE #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" - . "\n SET mitgliedsstatus = '$mitgliedsstatus', #__sportsmanager_mitglied_von_verein.ausgetreten = FALSE" - . "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" - . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - // Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert - $query = "SELECT verein_id" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE vereinsname = '" . $db->escape($vereinsname) . "'" - . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - // Wenn mehrere Vereine existieren, dann Aktualisierung auslassen - if (count($rows) > 1) { - array_push($vereineManuell, $name); - // $bearbeitungsVerlauf .= "-> Vereinsaktualiesierung übersprungen, da mehrere Vereine mit Namen existieren"; - // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; - continue; - } - // Wenn Verein nicht existiert, dann ergänzen - if (count($rows) == 0) { - $query = "INSERT #__sportsmanager_verein" - . "\n SET vereinsname = '" . $db->escape($vereinsname) . "'"; - if (!empty($vereinssitz)) - $query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'"; - $query .= ",\n veranstalter_id = " . ($veranstalterid == 0 ? "NULL" : "$veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verein_id = $db->insertid(); - $vereineHinzugefuegt++; - // $bearbeitungsVerlauf .= "-> Verein ergänzt "; - } - // Sonst Verein merken - else { - $verein_id = $rows[0]->verein_id; - // $bearbeitungsVerlauf .= "-> Verein gefunden "; - } - - // Vereinsmitgliedschaft setzen - $query = "INSERT #__sportsmanager_mitglied_von_verein" - . "\n SET spieler_id = $spieler_id, verein_id = $verein_id, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - // $bearbeitungsVerlauf .= "-> Vereinsmitgliedschaft ergänzt "; - } - } - } - // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; - } - - $ausgetreteneVereineMitAktivenMitgliedern = array(); - /* - if ($verein_explizit != 0) { - // Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied des importierten Vereins waren - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET ausgetreten = TRUE" - . "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit AND #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id) > 0" - . " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0" - . " AND NOT ausgetreten"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - else { - // Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied in einem Verein des Verbandes waren oder sind - foreach ($veranstalter as $v => $veranstalterid) { - if ($veranstalterid != -1) { - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET ausgetreten = TRUE" - . "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid") . ") > 0" - . " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0" - . " AND NOT ausgetreten"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - } - */ - - if ($verein_explizit == 0) { - // Vereine der Organisation als ausgetreten notieren, die keine aktiven Mitglieder haben - foreach ($veranstalter as $v => $veranstalterid) { - if ($veranstalterid != -1) { - $query = "UPDATE #__sportsmanager_verein" - . "\n SET ausgetreten = TRUE" - . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND NOT ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - // Vereine der Organisation aus nicht ausgetreten notieren, die aktive Mitglieder haben, aber als ausgetreten notiert sind - foreach ($veranstalter as $v => $veranstalterid) { - if ($veranstalterid != -1) { - $query = "SELECT vereinsname" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $query = "UPDATE #__sportsmanager_verein" - . "\n SET ausgetreten = FALSE" - . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach ($rows as $row) - array_push($ausgetreteneVereineMitAktivenMitgliedern, $row->vereinsname); - - $query = "SELECT DISTINCT verein_id, #__sportsmanager_spieler_import.vereinsname, #__sportsmanager_spieler_import.vereinssitz" - . "\n FROM #__sportsmanager_spieler_import" - . "\n INNER JOIN #__sportsmanager_verein ON #__sportsmanager_verein.vereinsname = #__sportsmanager_spieler_import.vereinsname" - . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND " . ($v == null ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v) . "'")) . " AND #__sportsmanager_spieler_import.vereinsname != '' AND #__sportsmanager_spieler_import.vereinssitz != '' AND (ISNULL(#__sportsmanager_verein.vereinssitz) OR #__sportsmanager_verein.vereinssitz != #__sportsmanager_spieler_import.vereinssitz) AND NOT #__sportsmanager_verein.ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "UPDATE #__sportsmanager_verein" - . "\n SET vereinssitz = '" . $db->escape($row->vereinssitz) . "'" - . "\n WHERE verein_id = $row->verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - sort($vereineManuell); - sort($ausgetreteneVereineMitAktivenMitgliedern); - - aktuellerVereinAktualisieren(); - if ($kategorie_potentiell_geaendert) { - ranglisteAktualisieren(); - einstufungAktualisieren(); - } - - HTML_sportsmanager_admin::adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); -} - -function adminExportSpielerInternationalForm() { - $db =& getDatabase(); - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - HTML_sportsmanager_admin::adminExportSpielerInternational(); -} - -function csvFilter($value, $decode = true) { - if ($value === null) - return ""; - if ($decode) - $value = utf8_decode($value); - $value = str_replace('"', '""', $value); - /* - $value = str_replace("\t", ' ', $value); - $value = str_replace("\r", '', $value); - $value = str_replace("\n", ' ', $value); - */ - - // escape tab characters - $value = preg_replace("/\t/", "\\t", $value); - - // escape new lines - $value = preg_replace("/\r?\n/", "\\n", $value); - - /* - // convert 't' and 'f' to boolean values - if($str == 't') $str = 'TRUE'; - if($str == 'f') $str = 'FALSE'; - */ - - // force certain number/date formats to be imported as strings - /* - if (preg_match("/^0/", $value) || preg_match("/^\+?\d{8,}$/", $value) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $value)) - $value = "'$value"; - */ - - /* - // escape fields that include double quotes - if(strstr($value, '"')) $value = '"' . str_replace('"', '""', $value) . '"'; - */ - $value = '="' . $value . '"'; - - return $value; -} - -function adminExportSpielerInternational() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" - $landeskennung = $db->escape(trim($jinput->get('landeskennung', '', 'RAW'))); - - $jahr = date("Y"); - $query = "SELECT lizenznr, vorname, nachname, spielernr, geschlecht, geburtsjahr"; - if ($persoenliche_daten == 1) - $query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym"; - $query .= "\n FROM #__sportsmanager_spieler"// . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid AND NOT t1.ausgetreten AND NOT t2.ausgetreten)" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL('&task=admin_spieler_export_international_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); - - return; - } - - $dateiname = "Spieler international " . date('Y-m-d') . ".csv"; - $dateiname = bereinigterDateiname($dateiname); - - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - Header("Content-Type: text/x-csv"); - Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); - Header("Pragma: no-cache"); - - $trennzeichen = "\t"; - - $header = "ITSF Number\tGender\tFirst Name\tLAST NAME\tNationality\tYear of birth\tNational Code\tPlayer in wheelchair ?\tE-mail\tCountry of residence\tAddress\tZip/Postal Code\tCity\tPhone\tProfession"; - echo "sep=" . $trennzeichen . "\n" . $header . "\n"; - foreach ($rows as $row) { - echo csvFilter($row->lizenznr) . $trennzeichen - . csvFilter($row->geschlecht == "M" ? "M" : "F") . $trennzeichen - . csvFilter($row->vorname) . $trennzeichen - . csvFilter($row->nachname) . $trennzeichen - . csvFilter($landeskennung) . $trennzeichen - . csvFilter($row->geburtsjahr) . $trennzeichen - . csvFilter($row->spielernr) . $trennzeichen - . "N" . $trennzeichen; - if ($persoenliche_daten == 1) { - echo csvFilter($row->email) . $trennzeichen - . csvFilter($row->landeskennung) . $trennzeichen - . csvFilter($row->strasse) . $trennzeichen - . csvFilter($row->plz) . $trennzeichen - . csvFilter($row->ort) . $trennzeichen - . csvFilter($row->telefon) . $trennzeichen - . "\n"; - } - else { - echo $trennzeichen - . $trennzeichen - . $trennzeichen - . $trennzeichen - . $trennzeichen - . $trennzeichen - . "\n"; - } - } - die(); -} - -function adminExportSpielerForm() { - $db =& getDatabase(); - - $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)"; - if ($beschraenkter_zugriff) - $query .= " AND" . veranstalterFilter("veranstalter_id IN"); - $query .= "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - if (!$beschraenkter_zugriff) { - $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)" - . "\n ORDER BY veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - } - else { - $vereine = array(); - } - - HTML_sportsmanager_admin::adminExportSpieler($beschraenkter_zugriff, $ansprechpartner_exportieren, $veranstalter, $vereine); -} - -function adminExportSpieler() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $verein_explizit = 0; - if ($beschraenkter_zugriff) { - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - if (!benutzerVeranstalterModerator($veranstalterid)) - $veranstalterid = 0; - $verein_explizit = 0; - $ausgetretene = 0; - if ($ansprechpartner_exportieren != 1) - $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" - else - $persoenliche_daten = 0; - $organisatorische_daten = 0; - $statistische_daten = 1; - } - else { - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $verein_explizit = $veranstalterid < 0 ? abs($veranstalterid) : 0; - - $ausgetretene = $jinput->get('ausgetretene', 0, 'INT'); // "Nein", "Ja" - $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" - $organisatorische_daten = $jinput->get('organisatorische_daten', 0, 'INT'); // 0: "Verein, Vereinssitz, Wettbewerb, Mannschaft, Ausgetreten", 1: "Ausgetreten" - $statistische_daten = $jinput->get('statistische_daten', 0, 'INT'); // 0: "Elo-Werte, Kategorie, Zuletzt gespielt", 1: "Kategorie", 2: "Keine" - } - - if ($verein_explizit != 0) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $verein = $rows[0]; - } - else if ($veranstalterid != 0) { - $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $veranstalter = $rows[0]; - } - - $jahr = date("Y"); - $query = "SELECT nachname, vorname, spielernr, lizenznr, lizenz, geschlecht"; - if ($statistische_daten != 2) - $query .= ",\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie"; - if ($organisatorische_daten != 2) - $query .= ",\n vereinsname as verein, vereinssitz, veranstalterbezeichnung as organisation, IF(mitgliedsstatus = 1, 'Aktiv', IF(mitgliedsstatus = 0, 'Ausgetreten', IF(mitgliedsstatus = 2, 'Eingeschränkt', 'Passiv'))) AS mitgliedsstatus"; - else if ($ausgetretene != 0) - $query .= ", IF(ISNULL(aktueller_verein_id), 'Ausgetreten', 'Aktiv') as mitgliedsstatus"; - if ($persoenliche_daten == 0) - $query .= ",\n geburtsjahr"; - if ($persoenliche_daten != 0) - $query .= ",\n geburtsjahr, geburtsdatum"; - if ($persoenliche_daten == 2) - $query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym"; - if ($organisatorische_daten == 1) - $query .= ",\n (SELECT bezeichnung FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS wettbewerb," - . "\n (SELECT teamname FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS mannschaft"; - if ($statistische_daten == 0) - $query .= ",\n zuletzt_gespielt, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele"; - $query .= "\n FROM #__sportsmanager_spieler"; - if ($organisatorische_daten != 2) { - $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"; - } - if ($beschraenkter_zugriff == 2) - $query .= "\n WHERE " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"; - else if ($verein_explizit != 0) { - if ($ausgetretene != 0) - $query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit"; - else - $query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"; - } - else if ($veranstalterid != 0) { - if ($ausgetretene != 0) { - if ($organisatorische_daten == 0) - $query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterid"; - else - $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid) > 0"; - } - else { - if ($organisatorische_daten == 0) - $query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten"; - else - $query .= "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid AND NOT t1.ausgetreten AND NOT t2.ausgetreten)"; - } - } - else if ($ausgetretene == 0) { - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; - if ($organisatorische_daten == 0) - $query .= " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten"; - } - if ($organisatorische_daten == 0) - $query .= "\n ORDER BY nachname, vorname, IF(ISNULL(IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL)), 1, 0), IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL), verein"; - else - $query .= "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL('&task=admin_spieler_export_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); - - return; - } - - $dateiname = "Spieler"; - if ($verein_explizit != 0) - $dateiname .= " " . utf8_decode($verein->vereinsname); - else if ($veranstalterid != 0) - $dateiname .= " " . utf8_decode($veranstalter->veranstalterbezeichnung); - $dateiname .= " " . date('Y-m-d') . ".csv"; - $dateiname = bereinigterDateiname($dateiname); - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - Header("Content-Type: text/x-csv"); - Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); - Header("Pragma: no-cache"); - - $trennzeichen = "\t"; - - $header = ""; - foreach ($rows[0] as $field => $value) - $header .= $field . $trennzeichen; - - $data = ""; - foreach ($rows as $row) { - $line = ''; - foreach ($row as $value) { - if ((!isset($value)) OR ($value == "")) { - $value = $trennzeichen; - } - else { - $value = str_replace('"', '""', $value); - $value = str_replace("\t", ' ', $value); - $value = str_replace("\r", '', $value); - $value = str_replace("\n", ' ', $value); - $value = '="' . $value . '"' . $trennzeichen; - } - $line .= $value; - } - $data .= trim($line) . "\n"; - } - $data = str_replace("\r", "", $data); - - echo "sep=" . $trennzeichen . "\n" . $header . "\n" . utf8_decode($data); - - die(); -} - -function adminExportSpielerSport() { - $db =& getDatabase(); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - $jahr = date("Y"); - $query = "SELECT *," - . " IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie, vereinsname" -// . " (SELECT veranstalterbezeichnung FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein, #__sportsmanager_veranstalter WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_verein.spieler_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id ORDER BY #__sportsmanager_verein.verein_id DESC LIMIT 1) AS veranstalterbezeichnung" -// . "\n (SELECT bezeichnung FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS wettbewerb," -// . "\n (SELECT teamname FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS mannschaft" - . "\n FROM #__sportsmanager_spieler"; - - if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n INNER JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $dateiname = "Spieler " . date('Y-m-d') . ".csv"; - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - Header("Content-Type: text/x-csv; charset=utf-8;"); - Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); - Header("Pragma: no-cache"); - echo "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM\r\n"; - - $wiederholung_zaehler = 0; - foreach ($rows as $index => $row) { - $spielernr = $row->spielernr != null && $row->spielernr != "" ? $row->spielernr : "N/A"; - $lizenznr = $row->lizenznr != null && $row->lizenznr != "" ? $row->lizenznr : "N/A"; - $kategorie = array("H" => "Herren", "D" => "Damen", "J" => "Junioren", "S" => "Senioren"); - $kommentar = $kategorie[$row->kategorie]; - if ($lizenznr != null && $row->lizenznr != "") - $kommentar .= " / " . $lizenznr; - /* - echo $row->nachname . "#" . $row->vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#" - . ($row->vereinsname != NULL ? ($row->vereinsname . ($row->veranstalterbezeichnung != NULL ? (" (" . $row->veranstalterbezeichnung . ")") : "")) : "Keiner") . "#" . $row->strasse . "#" . trim($row->plz . " " . $row->ort) . "#" . $row->telefon . "#" - . "" . "#" . $row->mobil . "#" . $row->email . "#" . $kommentar . "#" . $spielernr . "#" . $row->geburtsdatum . "\r\n"; - */ - $vorname = $row->vorname; - $nachname = $row->nachname; - $naechster_name = isset($rows[$index + 1]) ? ($rows[$index + 1]->nachname . ", " . $rows[$index + 1]->vorname) : null; - $name = $nachname . ", " . $vorname; - if ($name == $naechster_name || $wiederholung_zaehler > 0) // Sports Manager macht einen case sensitive-Vergleich - $vorname .= " (" . ($wiederholung_zaehler + 1) . ")"; - if ($name == $naechster_name) - $wiederholung_zaehler++; - else - $wiederholung_zaehler = 0; - echo utf8_decode($nachname . "#" . $vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#" - . ($row->vereinsname != null ? $row->vereinsname : "Keiner") . "#######" . $kommentar . "#" . $spielernr . "#\r\n"); - } - die(); -} - -function adminVereine() { - $db =& getDatabase(); - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $organisationAnzeigen = $db->loadResult() > 1; - - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, ausgetreten, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen); -} - -function adminEditVerein() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - $berechtigt_fuer_verein = null; - $vereinsansprechpartner = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - - $query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_verein AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_verein_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_verein = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id ORDER BY vereinsansprechpartner_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsansprechpartner = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVerein($row, $users, $veranstalter, $berechtigt_fuer_verein, $vereinsansprechpartner); -} - -function adminSaveVerein() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $vereinsname = $db->escape(trim($jinput->get('vereinsname', '', 'RAW'))); - $vereinssitz = $db->escape(trim($jinput->get('vereinssitz', '', 'RAW'))); - $vereinssitz_ortsteil = $db->escape(trim($jinput->get('vereinssitz_ortsteil', '', 'RAW'))); - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - $url = $db->escape(trim($jinput->get('url', '', 'RAW'))); - $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); - $ausgetreten = $jinput->get('ausgetreten', 0, 'INT'); - $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); - - $berechtigt_fuer_verein_user_ids = array($jinput->get('berechtigt_fuer_verein_user_1_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_verein_user_2_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_verein_user_3_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_verein_user_4_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_verein_user_5_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_verein_user_6_id', 0, 'INT')); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine#id' . $id); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_verein WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_vereinsansprechpartner WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" - . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_verein" - . "\n SET vereinsname = '$vereinsname'," - . "\n vereinssitz = '$vereinssitz'," - . "\n vereinssitz_ortsteil = '$vereinssitz_ortsteil'," - . "\n veranstalter_id = " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . "," - . "\n url = '$url'," - . "\n beschreibung = '$beschreibung'," - . "\n ausgetreten = " . ($ausgetreten ? "TRUE" : "FALSE") - . "\n WHERE verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Vereinsvertreter speichern - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[5];"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - for ($nummer = 0; $nummer <= 5; $nummer++) { - $berechtigt_user_id = $berechtigt_fuer_verein_user_ids[$nummer]; - if ($berechtigt_user_id != 0) { - $gefunden = false; - foreach ($rows as $row) { - if ($row->berechtigt_user_id == $berechtigt_user_id) - $gefunden = true; - } - if (!$gefunden) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_verein (berechtigt_user_id, berechtigt_verein_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Ansprechpartner speichern - - for ($nummer = 1; $nummer <= 3; $nummer++) { - $vereinsansprechpartner_id = $jinput->get('vereinsansprechpartner_' . $nummer . '_id', 0, 'INT'); - $vereinsansprechpartner_vorname = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_vorname', '', 'RAW')); - $vereinsansprechpartner_nachname = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_nachname', '', 'RAW')); - $vereinsansprechpartner_telefon = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_telefon', '', 'RAW')); - $vereinsansprechpartner_mobil = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_mobil', '', 'RAW')); - $vereinsansprechpartner_email = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_email', '', 'RAW')); - - if ($vereinsansprechpartner_id == 0) { - if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) { - $query = "INSERT INTO #__sportsmanager_vereinsansprechpartner (verein_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$vereinsansprechpartner_vorname', '$vereinsansprechpartner_nachname', '$vereinsansprechpartner_telefon', '$vereinsansprechpartner_mobil', '$vereinsansprechpartner_email');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) { - $query = "UPDATE #__sportsmanager_vereinsansprechpartner" - . "\n SET vorname = '$vereinsansprechpartner_vorname'," - . "\n nachname = '$vereinsansprechpartner_nachname'," - . "\n telefon = '$vereinsansprechpartner_telefon'," - . "\n mobil = '$vereinsansprechpartner_mobil'," - . "\n email = '$vereinsansprechpartner_email'" - . "\n WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($bildbeibehalten == 0) { - bildLoeschen("vereine", $id); - - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=admin_vereine', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt."); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine'; - if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 240, 240, 0)) { - redirectSportsManagerURL('&task=admin_vereine', "Das Bild konnte nicht an die Zielposition kopiert werden."); - - return; - } - } - } - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine#id' . $id); -} - -function adminRemoveVerein() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_team WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_vereinsansprechpartner WRITE, #__sportsmanager_verein WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_team SET verein_id = NULL WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rechnung SET verein_id = NULL WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("vereine", $id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine'); -} - -function adminVereineZusammenlegenForm() { - $db =& getDatabase(); - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n ORDER BY veranstalterbezeichnung, vereinsname, ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineZusammenlegen($vereine); -} - -function adminVereineZusammenlegen() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); - - return; - } - - $verein_beizubehalten_id = $jinput->get('verein_beizubehalten_id', 0, 'INT'); - $verein_zu_entfernen_id = $jinput->get('verein_zu_entfernen_id', 0, 'INT'); - - if ($verein_beizubehalten_id == $verein_zu_entfernen_id) { - redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Vereine gewählt werden"); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_verein WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_mitglied_von_verein AS t1 WRITE, #__sportsmanager_vereinsansprechpartner WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_team WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET verein_id = $verein_beizubehalten_id" - . "\n WHERE verein_id = $verein_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT mitglied_von_verein_id, ausgetreten, spieler_id" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_beizubehalten_id" - . "\n ORDER BY spieler_id, IF(ausgetreten, 1, 0), ausgetreten DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $spieler_id = null; - foreach ($rows as $row) { - if ($row->spieler_id == $spieler_id) { - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $row->mitglied_von_verein_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else - $spieler_id = $row->spieler_id; - } - - - $query = "UPDATE #__sportsmanager_team" - . "\n SET verein_id = $verein_beizubehalten_id" - . "\n WHERE verein_id = $verein_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rechnung" - . "\n SET verein_id = $verein_beizubehalten_id" - . "\n WHERE verein_id = $verein_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("vereine", $verein_zu_entfernen_id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id); -} - -function adminVereinsmitglieder() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $vereinid = $jinput->get('vereinid', 0, 'INT'); - if ($vereinid == 0) die ("Wrong id!"); - - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - if (count($vereine) < 1) die ("Wrong id"); - $verein = $vereine[0]; - - $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern"); - - $query = "SELECT mitglied_von_verein_id, mitgliedsstatus, vorname, nachname, spielernr, #__sportsmanager_spieler.spieler_id" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $vereinid" - . "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsmitglieder = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereinsmitglieder($verein, $vereinsmitglieder, $berechtigt_spieler_aendern); -} - -function adminEditVereinsmitglied() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $vereinid = $jinput->get('vereinid', 0, 'INT'); - - if ($id == 0) - $row = null; - else { - $query = "SELECT t1.*, t2.vorname, t2.nachname FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_spieler AS t2 ON t1.spieler_id = t2.spieler_id WHERE mitglied_von_verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - if (count($vereine) < 1) die ("Wrong id"); - $verein = $vereine[0]; - - $query = "SELECT spieler_id, vorname, nachname, spielernr FROM #__sportsmanager_spieler ORDER BY nachname, vorname, spielernr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVereinsmitglied($row, $verein, $spieler); -} - -function adminSaveVereinsmitglied() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $spielerid = $jinput->get('spielerid', 0, 'INT'); - $vereinid = $jinput->get('vereinid', 0, 'INT'); - $mitgliedsstatus = $jinput->get('mitgliedsstatus', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); - - return; - } - - if (empty($id)) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$spielerid', '$vereinid', '1', FALSE);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET mitgliedsstatus = '" . $mitgliedsstatus . "'," - . "\n ausgetreten = " . ($mitgliedsstatus == 0 ? "TRUE" : "FALSE") - . "\n WHERE mitglied_von_verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - aktuellerVereinAktualisieren($spielerid); - - redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); -} - -function adminRemoveVereinsmitglied() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $vereinid = $jinput->get('vereinid', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); -} - -function adminSpielorte() { - $db =& getDatabase(); - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielorte($spielorte); -} - -function adminEditSpielort() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditSpielort($row); -} - -function adminSaveSpielort() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $name = $db->escape(trim($jinput->get('name', '', 'RAW'))); - $strasse = $db->escape(trim($jinput->get('strasse', '', 'RAW'))); - $plz = $db->escape(trim($jinput->get('plz', '', 'RAW'))); - $ortsname = $db->escape(trim($jinput->get('ortsname', '', 'RAW'))); - $ortsteil = $db->escape(trim($jinput->get('ortsteil', '', 'RAW'))); - $url = $db->escape(trim($jinput->get('url', '', 'RAW'))); - $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); - $status = $jinput->get('status', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spielorte#id' . $id); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_spielort WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_spielort (name, strasse, plz, ortsname, ortsteil, url, beschreibung, status)" - . "\n VALUES ('$name', '$strasse', '$plz', '$ortsname', '$ortsteil', '$url', '$beschreibung', '$status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_spielort" - . "\n SET name = '$name'," - . "\n strasse = '$strasse'," - . "\n plz = '$plz'," - . "\n ortsname = '$ortsname'," - . "\n ortsteil = '$ortsteil'," - . "\n url = '$url'," - . "\n beschreibung = '$beschreibung'," - . "\n status = '$status'" - . "\n WHERE spielort_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spielorte#id' . $id); -} - -function adminRemoveSpielort() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_spielort WRITE, #__sportsmanager_begegnung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_team SET heimspielort_id = NULL WHERE heimspielort_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_begegnung SET spielort_id = NULL WHERE spielort_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spielorte'); -} - -function adminSpielorteZusammenlegenForm() { - $db =& getDatabase(); - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielorteZusammenlegen($spielorte); -} - -function adminSpielorteZusammenlegen() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spielorte'); - - return; - } - - $spielort_beizubehalten_id = $jinput->get('spielort_beizubehalten_id', 0, 'INT'); - $spielort_zu_entfernen_id = $jinput->get('spielort_zu_entfernen_id', 0, 'INT'); - - if ($spielort_beizubehalten_id == $spielort_zu_entfernen_id) { - redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spielorte gewählt werden"); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_spielort WRITE, #__sportsmanager_begegnung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_team" - . "\n SET heimspielort_id = $spielort_beizubehalten_id" - . "\n WHERE heimspielort_id = $spielort_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET spielort_id = $spielort_beizubehalten_id" - . "\n WHERE spielort_id = $spielort_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $spielort_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id); -} - -function adminEinstufungen() { - $db =& getDatabase(); - - if (!benutzerZugriff("einstufungen_aendern")) - keinZugriff(true); - - $query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_einstufung_rangliste WHERE #__sportsmanager_einstufung.einstufung_id = #__sportsmanager_einstufung_rangliste.einstufung_id) AS ranglisten" - . "\n FROM #__sportsmanager_einstufung" - . "\n ORDER BY typ, prioritaet, bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $einstufungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEinstufungen($einstufungen); -} - -function adminEditEinstufung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("einstufungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_einstufung WHERE einstufung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - // Ranglisten ermitteln - if ($id == 0) { - $query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - } - else { - $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, ranglisten.einstufung_rangliste_id, ranglisten.platz_min, ranglisten.platz_max, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT rangliste_id, einstufung_rangliste_id, platz_min, platz_max FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id) AS ranglisten USING (rangliste_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditEinstufung($row, $ranglisten); -} - -function adminSaveEinstufung() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("einstufungen_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $prioritaet = $jinput->get('prioritaet', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'INT'); - $elo_min = $jinput->get('elo_min', 0, 'INT'); - $elo_max = $jinput->get('elo_max', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_einstufungen#id' . $id); - - return; - } - - $ranglisten_beruecksichtigt = array(); - $ranglisten_beruecksichtigt_platz_min = array(); - $ranglisten_beruecksichtigt_platz_max = array(); - $i = 0; - $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); - $rangliste_platz_min = $jinput->get('rangliste_platz_min_' . $i, 0, 'INT'); - $rangliste_platz_max = $jinput->get('rangliste_platz_max_' . $i, 0, 'INT'); - while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) { - array_push($ranglisten_beruecksichtigt, $rangliste_id); - array_push($ranglisten_beruecksichtigt_platz_min, $rangliste_platz_min); - array_push($ranglisten_beruecksichtigt_platz_max, $rangliste_platz_max); - $i++; - $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); - $rangliste_platz_min = $jinput->get('rangliste_platz_min_' . $i, 0, 'INT'); - $rangliste_platz_max = $jinput->get('rangliste_platz_max_' . $i, 0, 'INT'); - } - - $query = "LOCK TABLES #__sportsmanager_einstufung WRITE, #__sportsmanager_einstufung_rangliste WRITE, #__sportsmanager_rangliste READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_einstufung (bezeichnung, prioritaet, typ, elo_min, elo_max)" - . "\n VALUES ('$bezeichnung', '$prioritaet', '$typ', '$elo_min', '$elo_max');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_einstufung" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n prioritaet = '$prioritaet'," - . "\n typ = '$typ'," - . "\n elo_min = '$elo_min'," - . "\n elo_max = '$elo_max'" - . "\n WHERE einstufung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Berücksichtige Ranglisten prüfen und ggf. aktualisieren - $query = "SELECT *" - . "\n FROM #__sportsmanager_einstufung_rangliste" - . "\n WHERE einstufung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); - - $einstufungen_aktualisieren = false; - foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { - $ist_beruecksichtigt = false; - foreach ($ranglisten_beruecksichtigt as $rangliste_id) { - if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { - $ist_beruecksichtigt = true; - break; - } - } - if (!$ist_beruecksichtigt) { - $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND einstufung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { - $ist_beruecksichtigt = false; - foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { - if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { - $ist_beruecksichtigt = true; - $bestehende_rangliste_platz_min = $bestehende_rangliste_beruecksichtigt->platz_min; - $bestehende_rangliste_platz_min = $bestehende_rangliste_beruecksichtigt->platz_max; - break; - } - } - $platz_min = $ranglisten_beruecksichtigt_platz_min[$index]; - $platz_max = $ranglisten_beruecksichtigt_platz_max[$index]; - if (!$ist_beruecksichtigt) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) { - $query = "INSERT INTO #__sportsmanager_einstufung_rangliste (einstufung_id, rangliste_id, platz_min, platz_max) VALUES ('$id', '$rangliste_id', '$platz_min', '$platz_max');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else if ($platz_min != $bestehende_rangliste_platz_min || $platz_max != $bestehende_rangliste_platz_max) { - $query = "UPDATE #__sportsmanager_einstufung_rangliste" - . "\n SET platz_min = '$platz_min'," - . "\n platz_max = '$platz_max'" - . "\n WHERE einstufung_id = $id AND rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_einstufungen#id' . $id); -} - -function adminRemoveEinstufung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("einstufungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_einstufung WRITE, #__sportsmanager_einstufung_rangliste WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_einstufung WHERE einstufung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_einstufungen'); -} - -function einstufungAktualisieren($berechnungen_auswerten = false) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $query = "LOCK TABLES #__sportsmanager_berechnung WRITE, #__sportsmanager_rangliste_punkte READ, #__sportsmanager_spieler WRITE, #__sportsmanager_einstufung READ, #__sportsmanager_einstufung_rangliste READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($berechnungen_auswerten) { - $session_id = redirectRequestGetSessionId(); - - $query = "SELECT IF(EXISTS(" - . "\n SELECT *" - . "\n FROM #__sportsmanager_berechnung" - . "\n WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")) - . "\n ), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechnungen = $db->loadResult();; - - if (empty($berechnungen) || laufzeit() >= 5) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - return; - } - } - else if (!redirectSessionIdEmpty() || laufzeit() >= 5) { - $session_id = redirectSessionIdSetzen(); - - $query = "INSERT INTO #__sportsmanager_berechnung (session_id, typ, id) VALUES ('$session_id', 'einstufung', NULL);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - return; - } - - $query = "SELECT einstufung_id, prioritaet, typ, elo_min, elo_max" - . "\n FROM #__sportsmanager_einstufung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $einstufung_prioritaet = array(); - $einstufung_typ = array(); - foreach ($rows as $row) { - $einstufung_prioritaet[$row->einstufung_id] = $row->prioritaet; - $einstufung_typ[$row->einstufung_id] = $row->typ; - } - - $spieler_einstufung_allgemein = array(); - $spieler_einstufung_einzel = array(); - $spieler_einstufung_doppel = array(); - $query = "SELECT rangliste_id, einstufung_id, platz_min, platz_max" - . "\n FROM #__sportsmanager_einstufung_rangliste" - . "\n ORDER BY rangliste_id, platz_min, platz_max"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $einstufung_ranglisten = $db->loadObjectList(); - - $einstufungen_per_ranglisten = array(); - foreach ($einstufung_ranglisten as $einstufung_rangliste) { - $platz_min = $einstufung_rangliste->platz_min; - $platz_max = $einstufung_rangliste->platz_max; - if (empty($platz_min) && empty($platz_max)) - continue; - if (!isset($einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id])) - $einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id] = array(); - array_push($einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id], array($einstufung_rangliste->einstufung_id, $platz_min, $platz_max)); - } - - foreach ($einstufungen_per_ranglisten as $rangliste_id => $einstufung) { - $query = "SELECT spieler_id, platz" - . "\n FROM #__sportsmanager_rangliste_punkte" - . "\n WHERE rangliste_id = $rangliste_id" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rangliste_punkte = $db->loadObjectList(); - - foreach ($rangliste_punkte as $punkte) { - foreach ($einstufung as $einstufung_platzierung) { - $platz_min = $einstufung_platzierung[1]; - $platz_max = $einstufung_platzierung[2]; - if (($punkte->platz >= $platz_min || $platz_min == 0) && ($punkte->platz <= $platz_max || $platz_max == 0)) { - $einstufung_id = $einstufung_platzierung[0]; - if ($einstufung_typ[$einstufung_id] == 0) { - if (!isset($spieler_einstufung_allgemein[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_allgemein[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) - $spieler_einstufung_allgemein[$punkte->spieler_id] = $einstufung_id; - } - else if ($einstufung->typ == 1) { - if (!isset($spieler_einstufung_einzel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_einzel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) - $spieler_einstufung_einzel[$punkte->spieler_id] = $einstufung_id; - } - else { - if (!isset($spieler_einstufung_doppel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_doppel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) - $spieler_einstufung_doppel[$punkte->spieler_id] = $einstufung_id; - } - } - } - } - } - - $query = "SELECT spieler_id, elo_einzel, elo_doppel" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(elo_einzel) OR NOT ISNULL(elo_doppel) OR elo_einzel > 0 OR elo_doppel > 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - foreach ($spieler as $s) { - $spieler_id = $s->spieler_id; - $elo_einzel = $s->elo_einzel; - $elo_doppel = $s->elo_doppel; - foreach ($rows as $einstufung) { - $einstufung_id = $einstufung->einstufung_id; - $elo_min = $einstufung->elo_min; - $elo_max = $einstufung->elo_max; - if (empty($elo_min) && empty($elo_max)) - continue; - if ($einstufung_typ[$einstufung_id] == 0) { - if (($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max))) - || ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max)))) { - if (!isset($spieler_einstufung_allgemein[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_allgemein[$spieler_id]])) - $spieler_einstufung_allgemein[$spieler_id] = $einstufung_id; - } - } - else if ($einstufung->typ == 1) { - if ($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max))) { - if (!isset($spieler_einstufung_einzel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_einzel[$spieler_id]])) - $spieler_einstufung_einzel[$spieler_id] = $einstufung_id; - } - } - else { - if ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max))) { - if (!isset($spieler_einstufung_doppel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_doppel[$spieler_id]])) - $spieler_einstufung_doppel[$spieler_id] = $einstufung_id; - } - } - } - } - - $db->transactionStart(); - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET einstufung_allgemein_id = NULL," - . "\n einstufung_einzel_id = NULL," - . "\n einstufung_doppel_id = NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $spieler_ids = array_keys($spieler_einstufung_allgemein) + array_keys($spieler_einstufung_einzel) + array_keys($spieler_einstufung_doppel); - foreach ($spieler_ids as $spieler_id) { - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET einstufung_allgemein_id = " . (isset($spieler_einstufung_allgemein[$spieler_id]) ? $spieler_einstufung_allgemein[$spieler_id] : "NULL") . "," - . "\n einstufung_einzel_id = " . (isset($spieler_einstufung_einzel[$spieler_id]) ? $spieler_einstufung_einzel[$spieler_id] : "NULL") . "," - . "\n einstufung_doppel_id = " . (isset($spieler_einstufung_doppel[$spieler_id]) ? $spieler_einstufung_doppel[$spieler_id] : "NULL"); - $query .= "\n WHERE spieler_id = $spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - $db->transactionCommit(); - - if ($berechnungen_auswerten) { - $query = "DELETE FROM #__sportsmanager_berechnung WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } -} - -function adminTeamspielmodi() { - $db =& getDatabase(); - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE teamspiel_modus_id = modus_id), 1, 0) AS veranstaltungen" - . "\n FROM #__sportsmanager_teamspiel_modus" - . "\n ORDER BY status DESC, bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTeamspielmodi($rows); -} - -function adminEditTeamspielmodus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTeamspielmodus($row); -} - -function adminSaveTeamspielmodus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $punktetyp = $jinput->get('punktetyp', 0, 'INT'); - $punkte_sieg_einzel = $jinput->get('punkte_sieg_einzel', 0, 'INT'); - $punkte_sieg_doppel_separat = $jinput->get('punkte_sieg_doppel_separat', 0, 'INT'); - $punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jinput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel; - $heimtausch = $jinput->get('heimtausch', 0, 'INT'); - $status = $jinput->get('status', 0, 'INT'); - $spielpunkte_wertung_einzel = $jinput->get('spielpunkte_wertung_einzel', 0, 'INT'); - $spielpunkte_wertung_doppel_separat = $jinput->get('spielpunkte_wertung_doppel_separat', 0, 'INT'); - $spielpunkte_wertung_doppel = $spielpunkte_wertung_doppel_separat ? $jinput->get('spielpunkte_wertung_doppel', 0, 'INT') : $spielpunkte_wertung_einzel; - $spielpunkte_bedingung = $jinput->get('spielpunkte_bedingung', 0, 'INT'); - $spielernamen = $jinput->get('spielernamen', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_teamspiel_modi'); - - return; - } - - $modus = ""; - $spiel_nr = 1; - do { - $spiel_heim = $jinput->get('spiel_' . $spiel_nr . '_heim', '', 'RAW'); - $spiel_gast = $jinput->get('spiel_' . $spiel_nr . '_gast', '', 'RAW'); - $spiel_auflage = $jinput->get('spiel_' . $spiel_nr . '_auflage', '', 'RAW'); - if (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0 && ($spiel_auflage == "" || $spiel_auflage == "H" || $spiel_auflage == "G")) { - if (strlen($modus) != 0) - $modus .= ","; - $modus .= $spiel_heim . $spiel_gast . $spiel_auflage; - } - $spiel_nr++; - } while (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0); - - $verknuepfungen = ""; - $verknuepfung_nr = 1; - for (; ;) { - $verknuepfung_doppel = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_doppel', '', 'RAW'); - $verknuepfung_einzel1 = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_einzel1', '', 'RAW'); - $verknuepfung_einzel2 = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_einzel2', '', 'RAW'); - if (strlen($verknuepfung_doppel) == 0 || strlen($verknuepfung_einzel1) == 0 || strlen($verknuepfung_einzel2) == 0) - break; - if (strpos($verknuepfungen, $verknuepfung_doppel) !== false || strpos($verknuepfungen, $verknuepfung_einzel1) !== false || strpos($verknuepfungen, $verknuepfung_einzel2) !== false || - $verknuepfung_einzel1 == $verknuepfung_einzel2) - break; - if (strlen($verknuepfungen) != 0) - $verknuepfungen .= ","; - $verknuepfungen .= $verknuepfung_doppel . $verknuepfung_einzel1 . $verknuepfung_einzel2; - $verknuepfung_nr++; - } - - if (strlen($verknuepfungen) > 0) - $modus .= "|" . $verknuepfungen; - $modus = $db->escape($modus); - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel', '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_teamspiel_modus" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n punktetyp = '$punktetyp'," - . "\n punkte_sieg_einzel = '$punkte_sieg_einzel'," - . "\n punkte_sieg_doppel = '$punkte_sieg_doppel'," - . "\n spielpunkte_wertung_einzel = '$spielpunkte_wertung_einzel'," - . "\n spielpunkte_wertung_doppel = '$spielpunkte_wertung_doppel'," - . "\n spielpunkte_bedingung = '$spielpunkte_bedingung'," - . "\n spielernamen = '$spielernamen'," - . "\n heimtausch = '$heimtausch'," - . "\n modus = '$modus'," - . "\n status = '$status'" - . "\n WHERE teamspiel_modus_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - begegnungenAktualisieren(0, $id); - teamstatistikAktualisieren(0, $id); - spielerstatistikAktualisieren(0, 0, 0, $id); - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminRemoveTeamspielmodus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE modus_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminKopierenTeamspielmodus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $teamspiel_modus = $rows[0]; - - $query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('" . $db->escape($teamspiel_modus->bezeichnung) . " (Kopie)', '$teamspiel_modus->punktetyp', '$teamspiel_modus->punkte_sieg_einzel', '$teamspiel_modus->punkte_sieg_doppel', '$teamspiel_modus->spielpunkte_wertung_einzel', '$teamspiel_modus->spielpunkte_wertung_doppel', '$teamspiel_modus->spielpunkte_bedingung', '$teamspiel_modus->spielernamen', '$teamspiel_modus->heimtausch', '$teamspiel_modus->modus', '$teamspiel_modus->status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminVerschiebenModi() { - $db =& getDatabase(); - - if (!benutzerZugriff("verschieberegeln_aendern")) - keinZugriff(true); - - $query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.verschieberegel_id = #__sportsmanager_verschieberegel.verschieberegel_id), 1, 0) AS veranstaltungen" - . "\n FROM #__sportsmanager_verschieberegel" - . "\n ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVerschiebenModi($rows); -} - -function adminEditVerschiebenModus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verschieberegeln_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditVerschiebenModus($row); -} - -function adminSaveVerschiebenModus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verschieberegeln_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_verschieben_modi'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $initial_ohne_termin = $jinput->get('initial_ohne_termin', 0, 'INT'); - $keine_gegenvorschlaege = $jinput->get('keine_gegenvorschlaege', 0, 'INT'); - $vorlaufzeit_tage = $jinput->get('vorlaufzeit_tage', 0, 'INT'); - $termine_minimal = $jinput->get('termine_minimal', 1, 'INT'); - $termine_maximal = $jinput->get('termine_maximal', 3, 'INT'); - $ablehnen = $jinput->get('ablehnen', 0, 'INT'); - - if ($termine_minimal > 0 && $termine_maximal > 0 && $termine_minimal > $termine_maximal) { - $t = $termine_minimal; - $termine_minimal = $termine_maximal; - $termine_maximal = $t; - } - - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen) VALUES ('$bezeichnung', '$initial_ohne_termin', '$keine_gegenvorschlaege', '$vorlaufzeit_tage', '$termine_minimal', '$termine_maximal', '$ablehnen');"; - else { - $query = "UPDATE #__sportsmanager_verschieberegel" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n initial_ohne_termin = '$initial_ohne_termin'," - . "\n keine_gegenvorschlaege = '$keine_gegenvorschlaege'," - . "\n vorlaufzeit_tage = '$vorlaufzeit_tage'," - . "\n termine_minimal = '$termine_minimal'," - . "\n termine_maximal = '$termine_maximal'," - . "\n ablehnen = '$ablehnen'" - . "\n WHERE verschieberegel_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_verschieben_modi'); -} - -function adminRemoveVerschiebenModus() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verschieberegeln_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_verschieberegel WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE verschieberegel_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_verschieben_modi'); -} - -function adminKategorien() { - $db =& getDatabase(); - - if (!benutzerZugriff("kategorien_aendern")) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $kategorien = array(); - $kategorien[1] = array(); - $kategorien[2] = array(); - $kategorien[3] = array(); - $kategorien[4] = array(); - - foreach ($rows as $row) - $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; - - HTML_sportsmanager_admin::adminKategorien($kategorien); -} - -function adminSaveKategorien() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("kategorien_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_kategorie WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $kategorien = array(); - $kategorien[1] = array(); - $kategorien[2] = array(); - $kategorien[3] = array(); - $kategorien[4] = array(); - $kategorien[5] = array(); - $kategorien[6] = array(); - - foreach ($rows as $row) - $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; - - for ($typ = 1; $typ <= 6; $typ++) { - for ($nummer = 1; $nummer <= 30; $nummer++) { - $bezeichnung = $db->escape($jinput->get('bezeichnung_' . $typ . '_' . $nummer, '', 'RAW')); - if (empty($bezeichnung)) { - if (isset($kategorien[$typ][$nummer])) { - $query = "DELETE FROM #__sportsmanager_kategorie WHERE typ = $typ AND nummer = $nummer;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (isset($kategorien[$typ][$nummer])) { - $query = "UPDATE #__sportsmanager_kategorie" - . "\n SET bezeichnung = '$bezeichnung'" - . "\n WHERE typ = $typ AND nummer = $nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "INSERT INTO #__sportsmanager_kategorie (typ, nummer, bezeichnung) VALUES ('$typ', '$nummer', '$bezeichnung');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRanglistensysteme() { - $db =& getDatabase(); - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - $query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_rangliste WHERE rangliste_system_id = system_id) AS ranglisten, (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_system_id = system_id) AS ranglistenturnierdisziplinen FROM #__sportsmanager_rangliste_system ORDER BY status DESC, systembezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $error_level = error_reporting(E_ERROR); - $math = new MathParserSM; - $math->setVariable('n', 100); - $math->setVariable('m', 1); - $math->setVariable('p', 5); - $pruefung = array(); - foreach ($rows as $row) { - $korrekt = true; - $pruefung[$row->rangliste_system_id] = $korrekt; - if (!empty($row->funktion)) { - try { - $math->setExpression($row->funktion); - $n = $math->getValue(); - } - catch (Exception $e) { - $korrekt = false; - } - } - $pruefung[$row->rangliste_system_id] = $korrekt; - } - error_reporting($error_level); - - HTML_sportsmanager_admin::adminRanglistensysteme($rows, $pruefung); -} - -function adminEditRanglistensystem() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - $row = null; - $punkte = null; - - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'INT'); - if ($id != null) { - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $punkte = $db->loadObjectList(); - } - - HTML_sportsmanager_admin::adminEditRanglistensystem($row, $punkte, $row != null ? ($row->funktion != null) : $typ); -} - -function adminSaveRanglistensystem() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $status = $jinput->get('status', 0, 'INT'); - $funktion = $db->escape(trim($jinput->get('funktion', '', 'RAW'))); - $typ = $jinput->get('typ', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_rangliste_system WRITE, #__sportsmanager_rangliste_system_punkte WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - if ($typ != 1) - $query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status) VALUES ('$bezeichnung', '$status');"; - else - $query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status, funktion) VALUES ('$bezeichnung', '$status', '$funktion');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_rangliste_system" - . "\n SET systembezeichnung = '$bezeichnung'," - . "\n status = '$status'"; - if ($typ == 1) - $query .= ",\n funktion = '$funktion'"; - $query .= "\n WHERE rangliste_system_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($typ != 1) { - for ($punkte_nr = 1; $punkte_nr <= 50; $punkte_nr++) { - $platz_min = $jinput->get('punkte_' . $punkte_nr . '_platz_min', 0, 'INT'); - $platz_max = $jinput->get('punkte_' . $punkte_nr . '_platz_max', 0, 'INT'); - $teilnehmer_min = $jinput->get('punkte_' . $punkte_nr . '_teilnehmer_min', 0, 'INT'); - $teilnehmer_max = $jinput->get('punkte_' . $punkte_nr . '_teilnehmer_max', 0, 'INT'); - $punkte = $jinput->get('punkte_' . $punkte_nr . '_punkte', 0, 'INT'); - - if ($punkte != 0) { - $query = "INSERT INTO #__sportsmanager_rangliste_system_punkte (system_id, platz_min, platz_max, teilnehmer_min, teilnehmer_max, punkte) VALUES ('$id', '$platz_min', '$platz_max', '$teilnehmer_min', '$teilnehmer_max', '$punkte');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren(); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_ranglistensysteme'); -} - -function adminRanglistensystemAuswertung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $teilnehmer = $jinput->get('teilnehmer', 100, 'INT'); - $multiplikator = $jinput->get('multiplikator', 1, 'FLOAT'); - - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $system = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systempunkte = $db->loadObjectList(); - - if ($system->funktion != NULL) { - $math = new MathParserSM; - try { - $math->setVariable('n', $teilnehmer); - $math->setVariable('m', $multiplikator); - $math->setExpression($system->funktion); - } catch (Exception $e) { - } - } - - $teilnehmerpunkte = array(); - for ($platz = 1; $platz <= $teilnehmer; $platz++) { - $p = 0; - if ($system->funktion == NULL) { - foreach ($systempunkte as $sp) { - if (($sp->platz_min == 0 || $sp->platz_min <= $platz) && ($sp->platz_max == 0 || $platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { - $p = round($sp->punkte * $multiplikator); - break; - } - } - } else { - try { - $math->setVariable('p', $platz); - $p = round($math->getValue()); - } catch (Exception $e) { - } - } - $teilnehmerpunkte[$platz] = $p; - } - - HTML_sportsmanager_admin::adminRanglistensystemAuswertung($system, $teilnehmer, $multiplikator, $teilnehmerpunkte); -} - -function adminRanglistensystemAuswertungOLd() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $row = null; - $punkte = null; - - $id = $jinput->get('id', 0, 'INT'); - $teilnehmer = $jinput->get('teilnehmer', 100, 'INT'); - $multiplikator = $jinput->get('multiplikator', 1, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $system = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systempunkte = $db->loadObjectList(); - - $teilnehmerpunkte = array(); - $math = new MathParserSM; - for ($platz = 1; $platz <= $teilnehmer; $platz++) { - $p = 0; - if ($id != 0 && $system->funktion == NULL) { - foreach ($systempunkte as $sp) { - if (($sp->platz_min == 0 || $sp->platz_min <= $platz) && ($sp->platz_max == 0 || $platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { - $p = round($sp->punkte * $wertung_multiplikator_normal); - break; - } - } - } else { - $math->setVariable('p', $turnierplatzierung->platz); - $math->setVariable('m', $wertung_multiplikator_normal); - $math->setExpression($system->funktion); - try { - $p = round($math->getValue()); - } catch (Exception $e) { - - } - } - $teilnehmerpunkte[$platz] = $p; - } - - HTML_sportsmanager_admin::adminRanglistensystemAuswertung($row, $teilnehmer, $multiplikator, $teilnehmerpunkte); -} - -function adminRemoveRanglistensystem() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_rangliste_system WRITE, #__sportsmanager_rangliste_system_punkte WRITE, #__sportsmanager_rangliste READ, #__sportsmanager_rangliste_turnierdisziplin READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste WHERE system_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE system_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_ranglistensysteme'); -} - -function adminEditRangliste() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - $rangliste = null; - else { - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $rangliste = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status > 0 " . ($id != 0 ? "OR rangliste_system_id = $rangliste->system_id " : "") . "ORDER BY systembezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 4 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - HTML_sportsmanager_admin::adminEditRangliste($rangliste, $systeme, $kategorien, $saisons); -} - -function adminSaveRangliste() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $saison_id = $jinput->get('saison_id', 0, 'INT'); - $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); - $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); - $system_id = $jinput->get('system_id', 0, 'INT'); - $maximal_gewertet_typ = $jinput->get('maximal_gewertet_typ', 0, 'INT'); - if ($maximal_gewertet_typ == 0) - $maximal_gewertet_zahl = 0; - else if ($maximal_gewertet_typ == 1) - $maximal_gewertet_zahl = -$jinput->get('maximal_gewertet_zahl', 0, 'INT'); - else - $maximal_gewertet_zahl = max(0, 100 - $jinput->get('maximal_gewertet_zahl', 0, 'INT')); - $minalter = $jinput->get('minalter', 0, 'INT'); - $maxalter = $jinput->get('maxalter', 0, 'INT'); - $ohnealter = $jinput->get('ohnealter', 0, 'INT'); - $geschlecht = $jinput->get('geschlecht', 0, 'INT'); - $status = $jinput->get('status', 0, 'INT'); - $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_rangliste (bezeichnung, saison_id, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "system_id, streichergebnisse, geschlecht, minalter, maxalter, ohnealter, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$system_id', '$maximal_gewertet_zahl', " . ($geschlecht == null ? "null" : "'$geschlecht'") . ", " . ($minalter == null ? "null" : "'$minalter'") . ", " . ($maxalter == null ? "null" : "'$maxalter'") . ", '$ohnealter', '$status', '$reihenfolge', '$kategorie');"; - else { - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n erster_tag = '$erster_tag'," - . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") - . "\n system_id = '$system_id'," - . "\n streichergebnisse = '$maximal_gewertet_zahl'," - . "\n geschlecht = " . ($geschlecht != null ? "'$geschlecht'," : "NULL,") - . "\n minalter = " . ($minalter != null ? "'$minalter'," : "NULL,") - . "\n maxalter = " . ($maxalter != null ? "'$maxalter'," : "NULL,") - . "\n ohnealter = '$ohnealter'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'" - . "\n WHERE rangliste_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - if ($id == 0) - $id = $db->insertid(); - - ranglisteAktualisieren($id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveRangliste() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste WRITE, #__sportsmanager_einstufung_rangliste WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_turnierdisziplin" - . "\n SET voranmeldungen_rangliste_id = NULL" - . "\n WHERE voranmeldungen_rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminKopierenRangliste() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_rangliste WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $rangliste = $rows[0]; - - $query = "INSERT INTO #__sportsmanager_rangliste (saison_id, system_id, streichergebnisse, geschlecht, minalter, maxalter, ohnealter, bezeichnung, erster_tag, letzter_tag, status, reihenfolge, kategorie)" - . "\n VALUES ('$rangliste->saison_id', " . ($rangliste->system_id == null ? "null" : "'$rangliste->system_id'") . ", '" . $db->escape($rangliste->streichergebnisse) . "', " . ($rangliste->geschlecht == null ? "null" : "'$rangliste->geschlecht'") . ", " . ($rangliste->minalter == null ? "null" : "'$rangliste->minalter'") . ", " . ($rangliste->maxalter == null ? "null" : "'$rangliste->maxalter'") . ", '$rangliste->ohnealter', '" . $db->escape($rangliste->bezeichnung . " (Kopie)") . "', '" . $db->escape($rangliste->erster_tag) . "', '" . $db->escape($rangliste->letzter_tag) . "', '0', '" . $db->escape($rangliste->reihenfolge) . "', '" . $db->escape($rangliste->kategorie) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_rangliste_id = $db->insertid(); - - // Disziplinen kopieren - - $query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung)" - . "\n VALUES ($ziel_rangliste_id, '$row->turnierdisziplin_id', " . ($row->system_id == null ? "null" : "'$row->system_id'") . ", '$row->wertung', '$row->doppel_teilwertung');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRanglisteTurnierdisziplinen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - if ($rangliste_id == 0) die ("Wrong id!"); - - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - if (count($ranglisten) < 1) die ("Wrong id"); - $rangliste = $ranglisten[0]; - - $query = "SELECT #__sportsmanager_rangliste_turnierdisziplin.*, disziplin, turnierbezeichnung, turnierort, systembezeichnung, beginn" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n LEFT JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)" - . "\n LEFT JOIN #__sportsmanager_rangliste_system ON system_id = rangliste_system_id" - . "\n WHERE rangliste_id = $rangliste_id" - . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC, disziplin"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turnierdisziplinen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminRanglisteTurnierdisziplinen($rangliste, $turnierdisziplinen); -} - -function adminEditRanglisteTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - - if ($id == 0) - $ranglisteTurnierdisziplin = null; - else { - $query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $ranglisteTurnierdisziplin = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - if (count($ranglisten) < 1) die ("Wrong id"); - $rangliste = $ranglisten[0]; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierdisziplin, #__sportsmanager_turnier" - . "\n WHERE #__sportsmanager_turnierdisziplin.turnier_id = #__sportsmanager_turnier.turnier_id"; - if ($rangliste->erster_tag != null) - $query .= " AND (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$rangliste->erster_tag') >= -1096" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")"; - if ($rangliste->letzter_tag != null) - $query .= " AND (ISNULL(erster_tag) OR DATEDIFF('$rangliste->letzter_tag', letzter_Tag) >= -366" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")"; - $query .= "\n ORDER BY erster_tag DESC, turnierbezeichnung, reihenfolge, disziplin"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turnierdisziplinen = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status != 0 " . ($id != 0 && $ranglisteTurnierdisziplin->system_id != null ? "OR rangliste_system_id = $ranglisteTurnierdisziplin->system_id " : "") . "ORDER BY systembezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditRanglisteTurnierdisziplin($rangliste, $ranglisteTurnierdisziplin, $turnierdisziplinen, $systeme); -} - -function adminSaveRanglisteTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - $turnierdisziplin_id = $db->escape($jinput->get('turnierdisziplin_id', 0, 'INT')); - $system_id = $jinput->get('system_id', 0, 'INT'); - $wertung = $jinput->get('wertung', 0, 'RAW'); - $doppel_teilwertung = $jinput->get('doppel_teilwertung', 0, 'RAW'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); - - return; - } - - $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET rangliste_id = '$rangliste_id'," - . "\n turnierdisziplin_id = '$turnierdisziplin_id'," - . "\n system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . "," - . "\n wertung = '" . $db->escape($wertung) . "'," - . "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'"; - if ($id != 0) - $query .= "\n WHERE rangliste_turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRemoveRanglisteTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRanglisteDisziplinenEntfernen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $rangliste_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRanglisteSystemZuruecksetzen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - - $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET system_id = NULL," - . "\n wertung = 1" - . "\n WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminEditSpielerstatistik() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - $spielerstatistik = null; - else { - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistik = $rows[0]; - } - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 5 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistik($spielerstatistik, $kategorien, $saisons); -} - -function adminSaveSpielerstatistik() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $saison_id = $jinput->get('saison_id', 0, 'INT'); - $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); - $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); - $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'INT'); - $status = $jinput->get('status', 0, 'INT'); - $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_bestenliste (bezeichnung, saison_id, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "tabellenwertung, typ, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$tabellenwertung', '$typ', '$status', '$reihenfolge', '$kategorie');"; - $spielerstatistik_aktualisieren = false; - } - else { - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistik = $rows[0]; - - $query = "UPDATE #__sportsmanager_bestenliste" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n erster_tag = '$erster_tag'," - . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") - . "\n tabellenwertung = '$tabellenwertung'," - . "\n typ = '$typ'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'" - . "\n WHERE bestenliste_id = $id"; - - if ($spielerstatistik->tabellenwertung != $tabellenwertung || $spielerstatistik->typ != $typ) - $spielerstatistik_aktualisieren = true; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - if ($id == 0) - $id = $db->insertid(); - - if ($spielerstatistik_aktualisieren) - spielerstatistikAktualisieren($id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveSpielerstatistik() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_bestenliste_punkte WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE, #__sportsmanager_bestenliste WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminKopierenSpielerstatistik() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_bestenliste WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $spielerstatistik = $rows[0]; - - $query = "INSERT INTO #__sportsmanager_bestenliste (saison_id, bezeichnung, tabellenwertung, typ, erster_tag, letzter_tag, status, reihenfolge, kategorie)" - . "\n VALUES ('$spielerstatistik->saison_id', '" . $db->escape($spielerstatistik->bezeichnung . " (Kopie)") . "', '$spielerstatistik->tabellenwertung', '$spielerstatistik->typ', '" . $db->escape($spielerstatistik->erster_tag) . "', '" . $db->escape($spielerstatistik->letzter_tag) . "', '0', '" . $db->escape($spielerstatistik->reihenfolge) . "', '" . $db->escape($spielerstatistik->kategorie) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_spielerstatistik_id = $db->insertid(); - - $query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_bestenliste_veranstaltung (bestenliste_id, veranstaltung_id)" - . "\n VALUES ($ziel_spielerstatistik_id, $row->veranstaltung_id);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_bestenliste_individualwettbewerb (bestenliste_id, individualwettbewerb_id)" - . "\n VALUES ($ziel_spielerstatistik_id, $row->individualwettbewerb_id);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($ziel_spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminSpielerstatistikVeranstaltungen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - if ($spielerstatistik_id == 0) die ("Wrong id!"); - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - if (count($spielerstatistiken) < 1) die ("Wrong id"); - $spielerstatistik = $spielerstatistiken[0]; - - $query = "SELECT #__sportsmanager_bestenliste_veranstaltung.*, bezeichnung, erster_tag, letzter_tag, saisonbezeichnung" - . "\n FROM #__sportsmanager_bestenliste_veranstaltung" - . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_veranstaltung.saison_id" - . "\n WHERE bestenliste_id = $spielerstatistik_id" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $query = "SELECT #__sportsmanager_bestenliste_individualwettbewerb.*, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_bestenliste_individualwettbewerb" - . "\n LEFT JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_individualwettbewerb.saison_id" - . "\n WHERE bestenliste_id = $spielerstatistik_id" - . "\n ORDER BY saisonbezeichnung, reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerstatistikVeranstaltungen($spielerstatistik, $veranstaltungen, $individualwettbewerbe); -} - -function adminEditSpielerstatistikVeranstaltung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - - if ($id == 0) - $spielerstatistikVeranstaltung = null; - else { - $query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistikVeranstaltung = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - if (count($spielerstatistiken) < 1) die ("Wrong id"); - $spielerstatistik = $spielerstatistiken[0]; - - $query = "SELECT * FROM #__sportsmanager_veranstaltung"; - if ($spielerstatistik->erster_tag != null) - $query .= "\n WHERE (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$spielerstatistik->erster_tag') >= -1096" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")"; - if ($spielerstatistik->letzter_tag != null) - $query .= ($spielerstatistik->erster_tag != null ? " AND" : "\n WHERE") . " (ISNULL(erster_tag) OR DATEDIFF('$spielerstatistik->letzter_tag', letzter_Tag) >= -366" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")"; - $query .= "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistikVeranstaltung($spielerstatistik, $spielerstatistikVeranstaltung, $veranstaltungen); -} - -function adminSaveSpielerstatistikVeranstaltung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - $veranstaltung_id = $jinput->get('veranstaltung_id', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); - - return; - } - - $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_veranstaltung" - . "\n SET bestenliste_id = '$spielerstatistik_id'," - . "\n veranstaltung_id = '$veranstaltung_id'"; - if ($id != 0) - $query .= "\n WHERE bestenliste_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminRemoveSpielerstatistikVeranstaltung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminEditSpielerstatistikIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - - if ($id == 0) - $spielerstatistikIndividualwettbewerb = null; - else { - $query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistikIndividualwettbewerb = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - if (count($spielerstatistiken) < 1) die ("Wrong id"); - $spielerstatistik = $spielerstatistiken[0]; - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb" - . "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistikIndividualwettbewerb($spielerstatistik, $spielerstatistikIndividualwettbewerb, $individualwettbewerbe); -} - -function adminSaveSpielerstatistikIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - $individualwettbewerb_id = $jinput->get('individualwettbewerb_id', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); - - return; - } - - $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_individualwettbewerb" - . "\n SET bestenliste_id = '$spielerstatistik_id'," - . "\n individualwettbewerb_id = '$individualwettbewerb_id'"; - if ($id != 0) - $query .= "\n WHERE bestenliste_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminRemoveSpielerstatistikIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminSpielerstatistikVeranstaltungenEntfernen() { - $db =& getDatabase(); - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $spielerstatistik_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $spielerstatistik_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminModeratoren() { - $db =& getDatabase(); - - if (!benutzerZugriff("moderatoren_aendern")) - keinZugriff(true); - - $query = "SELECT t1.moderator_id, t1.moderator_user_id, t2.name, t2.username, (SELECT COUNT(*) FROM #__sportsmanager_moderator_zugriff WHERE #__sportsmanager_moderator_zugriff.moderator_id = t1.moderator_id) AS zugriffe FROM #__sportsmanager_moderator as t1 LEFT JOIN #__users AS t2 ON t1.moderator_user_id=t2.id ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminModeratoren($rows); -} - -function adminEditModerator() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("moderatoren_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $row = null; - if ($id != 0) { - $query = "SELECT * FROM #__sportsmanager_moderator WHERE moderator_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - if (empty($id)) { - $zugriffe = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zugriffe = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditModerator($row, $zugriffe, $users); -} - -function adminSaveModerator() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("moderatoren_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_moderatoren'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $userid = $jinput->get('userid', 0, 'INT'); - $zugriffe = $jinput->get('zugriffe', array(), 'ARRAY'); - - $query = "LOCK TABLES #__sportsmanager_moderator WRITE, #__sportsmanager_moderator_zugriff WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_moderator (moderator_user_id)" - . "\n VALUES ('$userid');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_moderator" - . "\n SET moderator_user_id = '$userid'" - . "\n WHERE moderator_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $alte_zugriffe = $db->loadObjectList(); - - foreach ($alte_zugriffe as $alter_zugriff) { - if (!in_array($alter_zugriff->zugriff, $zugriffe)) { - $alter_zugriff_id = $alter_zugriff->moderator_zugriff_id; - $query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_zugriff_id = $alter_zugriff_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $index = array_search($alter_zugriff->zugriff, $zugriffe); - if ($index !== false) { - unset($zugriffe[$index]); - } - } - } - - foreach ($zugriffe as $zugriff) { - $query = "INSERT #__sportsmanager_moderator_zugriff" - . "\n SET moderator_id = '$id'," - . "\n zugriff = '$zugriff'," - . "\n zusatz = ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_moderatoren'); -} - -function adminRemoveModerator() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("moderatoren_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_moderator WRITE, #__sportsmanager_moderator_zugriff WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_moderator WHERE moderator_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_moderatoren'); -} - -function adminVeranstalter() { - $db =& getDatabase(); - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(true); - - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_veranstaltung.veranstalter_id) AS veranstaltungen," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_verein WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id) AS vereine," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_turnier WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_turnier.veranstalter_id) AS turniere," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_individualwettbewerb.veranstalter_id) AS individualwettbewerbe" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVeranstalter($rows); -} - -function adminEditVeranstalter() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) { - $row = null; - $berechtigt_fuer_veranstalter = array(); - } - else { - $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - - $query = "SELECT #__sportsmanager_berechtigt_fuer_veranstalter.* FROM #__sportsmanager_berechtigt_fuer_veranstalter, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstalter_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_veranstalter = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 1 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - HTML_sportsmanager_admin::adminEditVeranstalter($row, $berechtigt_fuer_veranstalter, $users, $kategorien); -} - -function adminSaveVeranstalter() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_veranstalter'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $kuerzel = $db->escape(trim($jinput->get('kuerzel', '', 'RAW'))); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - - $berechtigt_fuer_veranstalter_user_ids = array($jinput->get('berechtigt_fuer_veranstalter_user_1_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_veranstalter_user_2_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_veranstalter_user_3_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_veranstalter_user_4_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_veranstalter_user_5_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_veranstalter_user_6_id', 0, 'INT')); - - $query = "LOCK TABLES #__sportsmanager_veranstalter WRITE, #__sportsmanager_berechtigt_fuer_veranstalter WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_veranstalter (veranstalterbezeichnung, veranstalterkuerzel, kategorie) VALUES ('$bezeichnung', '$kuerzel', '$kategorie');"; - else { - $query = "UPDATE #__sportsmanager_veranstalter" - . "\n SET veranstalterbezeichnung = '$bezeichnung'," - . "\n veranstalterkuerzel = '$kuerzel'," - . "\n kategorie = '$kategorie'" - . "\n WHERE veranstalter_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - if ($id == 0) - $id = $db->insertid(); - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[5];"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - for ($nummer = 0; $nummer <= 5; $nummer++) { - $berechtigt_user_id = $berechtigt_fuer_veranstalter_user_ids[$nummer]; - if ($berechtigt_user_id != 0) { - $gefunden = false; - foreach ($rows as $row) { - if ($row->berechtigt_user_id == $berechtigt_user_id) - $gefunden = true; - } - if (!$gefunden) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstalter (berechtigt_user_id, berechtigt_veranstalter_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_veranstalter'); -} - -function adminRemoveVeranstalter() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_berechtigt_fuer_veranstalter WRITE, #__sportsmanager_verein WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_veranstalter WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_verein WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnier WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "UPDATE #__sportsmanager_rechnung SET veranstalter_id = NULL WHERE veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_veranstalter'); -} - -function adminSaisons() { - $db =& getDatabase(); - - if (!benutzerZugriff("saisons_aendern")) - keinZugriff(true); - - $query = "SELECT *," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSaisons($rows); -} - -function adminEditSaison() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("saisons_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_saison WHERE saison_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditSaison($row); -} - -function adminSaveSaison() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("saisons_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_saisons'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $saisonbezeichnung = $db->escape(trim($jinput->get('saisonbezeichnung', '', 'RAW'))); - - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_saison (saisonbezeichnung) VALUES ('$saisonbezeichnung');"; - else { - $query = "UPDATE #__sportsmanager_saison" - . "\n SET saisonbezeichnung = '$saisonbezeichnung'" - . "\n WHERE saison_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_saisons'); -} - -function adminRemoveSaison() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("saisons_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_saison WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_turnier READ, #__sportsmanager_rangliste READ, #__sportsmanager_bestenliste READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT *," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten," - . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten" - . "\n FROM #__sportsmanager_saison" - . "\n WHERE saison_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $row = $rows[0]; - if ($row->veranstaltungen != 0 || $row->turniere != 0 || $row->ranglisten != 0 || $row->bestenlisten != 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_saison WHERE saison_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_saisons'); -} - -function adminEditVeranstaltung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - if (!benutzerZugriff("mannschaftswettbewerb_aendern")) - keinZugriff(true); - - if ($id == 0) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - $vorlage = $jinput->get('vorlage', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielmodi = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_verschieberegel ORDER BY bezeichnung"; // WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verschieberegeln = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 2 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (empty($id)) { - $berechtigt_fuer_veranstaltung = array(); - } - else { - $query = "SELECT #__sportsmanager_berechtigt_fuer_veranstaltung.* FROM #__sportsmanager_berechtigt_fuer_veranstaltung, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstaltung_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_veranstaltung = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVeranstaltung($row, $veranstalter, $spielmodi, $verschieberegeln, $kategorien, $saisons, $users, $berechtigt_fuer_veranstaltung, $vorlage); -} - -function adminSaveVeranstaltung() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $vorlage = $jinput->get('vorlage', 0, 'INT'); - $id = $vorlage ? 0 : $jinput->get('id', 0, 'INT'); - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $saison_id = $jinput->get('saison_id', 0, 'INT'); - $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); - $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); - $modus_id = $jinput->get('modus_id', 0, 'INT'); - $verschieberegel_id = $jinput->get('verschieberegel_id', 0, 'INT'); - $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); - $unterteilung = $jinput->get('unterteilung', 0, 'INT'); - $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); - $logo_url = $db->escape(trim($jinput->get('logo_url', '', 'RAW'))); - $ticker_logo_url = $db->escape(trim($jinput->get('ticker_logo_url', '', 'RAW'))); - $status = $jinput->get('status', 0, 'INT'); - $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - $bildbeibehalten_logo = $jinput->get('bildbeibehalten_logo', 0, 'INT'); - $bildbeibehalten_ticker_logo = $jinput->get('bildbeibehalten_ticker_logo', 0, 'INT'); - $aktualisieren_ab_datum = $erster_tag; - $berechtigt_fuer_veranstaltung_user_ids = array(); - for ($i = 1; $i <= 6; $i++) { - $berechtigt_user_id = $jinput->get('berechtigt_fuer_veranstaltung_user_' . $i . '_id', 0, 'INT'); - if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids)) - array_push($berechtigt_fuer_veranstaltung_user_ids, $berechtigt_user_id); - } - - $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_berechtigt_fuer_veranstaltung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $elo_aktualisieren = false; - $spielerstatistik_aktualisieren = false; - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_veranstaltung (veranstalter_id, saison_id, bezeichnung, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "modus_id, verschieberegel_id, tabellenwertung, unterteilung, elo_wertung, logo_url, ticker_logo_url, status, reihenfolge, kategorie) VALUES - ('$veranstalterid', '$saison_id', '$bezeichnung', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$modus_id', '$verschieberegel_id', '$tabellenwertung', '$unterteilung', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht', "Die Veranstaltung existiert nicht mehr!"); - - return; - } - $row = $rows[0]; - - if (!empty($row->erster_tag) && $row->erster_tag < $erster_tag) - $aktualisieren_ab_datum = $erster_tag; - - $query = "UPDATE #__sportsmanager_veranstaltung" - . "\n SET veranstalter_id = '$veranstalterid'," - . "\n bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n erster_tag = '$erster_tag'," - . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") - . "\n modus_id = '$modus_id'," - . "\n verschieberegel_id = '$verschieberegel_id'," - . "\n tabellenwertung = '$tabellenwertung'," - . "\n unterteilung = '$unterteilung'," - . "\n elo_wertung = '$elo_wertung'," - . "\n logo_url = '$logo_url'," - . "\n ticker_logo_url = '$ticker_logo_url'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'" - . "\n WHERE veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0)) - $elo_aktualisieren = true; - if ((($modus_id != 0 || $row->modus_id != 0) && $status != $row->status) - || (($status != 0 || $row->status != 0) && $modus_id != $row->modus_id)) - $spielerstatistik_aktualisieren = true; - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; - if (!empty($berechtigt_fuer_veranstaltung_user_ids)) - $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_veranstaltung_user_ids, ", ") . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids); - if ($index !== false) { - unset($berechtigt_fuer_veranstaltung_user_ids[$index]); - } - } - - foreach ($berechtigt_fuer_veranstaltung_user_ids as $berechtigt_user_id) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstaltung (berechtigt_user_id, berechtigt_veranstaltung_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - teamstatistikAktualisieren($id); - - if ($spielerstatistik_aktualisieren) { - begegnungenAktualisieren($id, 0); - spielerstatistikAktualisieren(0, $id); - } - - if ($bildbeibehalten_ticker_logo == 0) { - bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id); - - if (!empty($_FILES["bild_ticker_logo"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild_ticker_logo"]["tmp_name"])) { - $size = getimagesize($_FILES["bild_ticker_logo"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=admin_ubersicht', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit maximal 8192*8192 Bildpunkten vorliegt."); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe'; - if (!JFile::copy($_FILES["bild_ticker_logo"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . 'ticker_logo' . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) { - redirectSportsManagerURL('&task=admin_uebersicht', "Das Bild konnte nicht an die Zielposition kopiert werden."); - - return; - } - } - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveVeranstaltung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_berechtigt_fuer_veranstaltung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_team WHERE veranstaltung_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE veranstaltung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren(0, $id); - - bildLoeschen("mannschaftswettbewerbe/logo", $id); - bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminMannschaften() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT #__sportsmanager_team.*, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.*," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND NOT ausgetreten) AS mitglieder_aktiv," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id) AS mitglieder," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung WHERE heim_team_id = #__sportsmanager_team.team_id OR gast_team_id = #__sportsmanager_team.team_id) AS begegnungen" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_verein.verein_id = #__sportsmanager_team.verein_id" - . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id" - . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows); -} - -function adminEditMannschaft() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - if ($id == 0) { - $row = null; - $berechtigt_fuer_team = null; - $teamansprechpartner = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - - if ($veranstaltungid != $row->veranstaltung_id) - die("Wrong id!"); - - $query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_team_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_team = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamansprechpartner = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten" . (!empty($row) && !empty($row->verein_id) ? " OR verein_id = $row->verein_id" : "") - . "\n ORDER BY veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_veranstaltungen) { - if (empty($id) || empty($row->teamgruppe_id)) { - $query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - else { - $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)" - . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND ((saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") . ") OR NOT ISNULL(team_id))" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - } - else { - if (empty($id) || empty($row->teamgruppe_id)) { - $query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - else { - $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)" - . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND (saison_id = $veranstaltung->saison_id OR NOT ISNULL(team_id))" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditMannschaft($veranstaltung, $row, $veranstaltungen, $vereine, $users, $berechtigt_fuer_team, $teamansprechpartner, $spielorte, $beschraenkter_zugriff_veranstaltungen); -} - -function adminSaveMannschaft() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltung_id)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); - - return; - } - - $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - $beschraenkter_zugriff_veranstaltungen_ids = $beschraenkter_zugriff_veranstaltungen ? benutzerVeranstaltungIdsModerator() : null; - - $teamname = $db->escape(trim($jinput->get('teamname', '', 'RAW'))); - $platz = $jinput->get('platz', 0, 'INT'); - $verein_id = $jinput->get('verein_id', 0, 'INT'); - $tischtyp = $db->escape(trim($jinput->get('tischtyp', '', 'RAW'))); - $tischeigenschaften = $db->escape(trim($jinput->get('tischeigenschaften', '', 'RAW'))); - $heimspiel_wochentag = $jinput->get('heimspiel_wochentag', 0, 'INT'); - $heimspiel_uhrzeit = sprintf("%02d%02d", $jinput->get('heimspiel_uhrzeit_stunden', 0, 'INT'), $jinput->get('heimspiel_uhrzeit_minuten', 0, 'INT')); - $heimspielort_id = $jinput->get('heimspielort_id', 0, 'INT'); - $nichtraucherschutz = $jinput->get('nichtraucherschutz', 0, 'INT'); - $zusatzpunkte = $jinput->get('zusatzpunkte', 0, 'FLOAT'); - $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); - - $berechtigt_fuer_team_user_ids = array($jinput->get('berechtigt_fuer_team_user_1_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_team_user_2_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_team_user_3_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_team_user_4_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_team_user_5_id', 0, 'INT'), - $jinput->get('berechtigt_fuer_team_user_6_id', 0, 'INT')); - $pin = $db->escape(trim($jinput->get('pin', '', 'RAW'))); - - $weitere_veranstaltungen_anzahl = $jinput->get('weitere_veranstaltungen_anzahl', 0, 'INT'); - $weitere_veranstaltungen_beruecksichtigt = array(); - for ($i = 0; $i < $weitere_veranstaltungen_anzahl; $i++) { - $weitere_veranstaltung_id = $jinput->get('weitere_veranstaltung_id_' . $i, 0, 'INT'); - if ($weitere_veranstaltung_id != 0 && !in_array($weitere_veranstaltung_id, $weitere_veranstaltungen_beruecksichtigt)) - array_push($weitere_veranstaltungen_beruecksichtigt, $weitere_veranstaltung_id); - } - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_begegnung_historie READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, zusatzpunkte" . ($veranstaltung->tabellenwertung == -2 ? ", platz" : "") . ", pin)" - . "\n VALUES (" . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ", '$veranstaltungid', '$teamname', '$tischtyp', '$tischeigenschaften', '$heimspiel_wochentag', '$heimspiel_uhrzeit', " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ", '$nichtraucherschutz', '$zusatzpunkte'" . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? ", '$platz'" : ", NULL") : "") . ", '$pin');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - $teamgruppe_id = $id; - $team_alt = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) == 0) die("Wrong id!"); - $team_alt = $teams[0]; - $teamgruppe_id = $team_alt->teamgruppe_id != null ? $team_alt->teamgruppe_id : $id; - - if ($veranstaltungid != $team_alt->veranstaltung_id) - die("Wrong id!"); - - $query = "UPDATE #__sportsmanager_team" - . "\n SET verein_id = " . ($verein_id != 0 ? "'$verein_id'" : "NULL") . "," - . "\n teamname = '$teamname'," - . "\n tischtyp = '$tischtyp'," - . "\n tischeigenschaften = '$tischeigenschaften'," - . "\n heimspiel_wochentag = '$heimspiel_wochentag'," - . "\n heimspiel_uhrzeit = '$heimspiel_uhrzeit'," - . "\n heimspielort_id = " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . "," - . "\n nichtraucherschutz = '$nichtraucherschutz'," - . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? "\n platz = '$platz'," : "\n platz = NULL,") : "") - . "\n zusatzpunkte = '$zusatzpunkte'," - . "\n pin = '$pin'" - . "\n WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Teamvertreter speichern - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[5];"; - - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - for ($nummer = 0; $nummer <= 5; $nummer++) { - $berechtigt_user_id = $berechtigt_fuer_team_user_ids[$nummer]; - if ($berechtigt_user_id != 0) { - $gefunden = false; - foreach ($rows as $row) { - if ($row->berechtigt_user_id == $berechtigt_user_id) - $gefunden = true; - } - if (!$gefunden) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Ansprechpartner speichern - for ($nummer = 1; $nummer <= 2; $nummer++) { - $teamansprechpartner_id = $jinput->get('teamansprechpartner_' . $nummer . '_id', 0, 'INT'); - $teamansprechpartner_vorname = trim($jinput->get('teamansprechpartner_' . $nummer . '_vorname', '', 'RAW')); - $teamansprechpartner_nachname = trim($jinput->get('teamansprechpartner_' . $nummer . '_nachname', '', 'RAW')); - $teamansprechpartner_telefon = trim($jinput->get('teamansprechpartner_' . $nummer . '_telefon', '', 'RAW')); - $teamansprechpartner_mobil = trim($jinput->get('teamansprechpartner_' . $nummer . '_mobil', '', 'RAW')); - $teamansprechpartner_email = trim($jinput->get('teamansprechpartner_' . $nummer . '_email', '', 'RAW')); - - if ($teamansprechpartner_id == 0) { - if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) { - $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$teamansprechpartner_vorname', '$teamansprechpartner_nachname', '$teamansprechpartner_telefon', '$teamansprechpartner_mobil', '$teamansprechpartner_email');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) { - $query = "UPDATE #__sportsmanager_teamansprechpartner" - . "\n SET vorname = '$teamansprechpartner_vorname'," - . "\n nachname = '$teamansprechpartner_nachname'," - . "\n telefon = '$teamansprechpartner_telefon'," - . "\n mobil = '$teamansprechpartner_mobil'," - . "\n email = '$teamansprechpartner_email'" - . "\n WHERE kontaktperson_id = $teamansprechpartner_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $teamansprechpartner_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit)) - heimspieltag_aktualisieren($id); - - $bild_aktualisieren_gescheitert = 0; - if ($bildbeibehalten == 0) { - bildLoeschen("mannschaften", $id); - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { - $bild_aktualisieren_gescheitert = 1; - } - else { - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften'; - $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'); - if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $ziel_pfad, 240, 240, 0)) - $bild_aktualisieren_gescheitert = 2; - } - } - } - } - - // Weitere Wettbewerbe aktualisieren - $query = "SELECT team_id, veranstaltung_id" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id != $id AND teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); - - $veranstaltungen_aktualisieren = array(); - foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) { - if ($beschraenkter_zugriff_veranstaltungen && !in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids)) - continue; - $ist_beruecksichtigt = false; - foreach ($weitere_veranstaltungen_beruecksichtigt as $weitere_veranstaltung_id) { - if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) { - $ist_beruecksichtigt = true; - break; - } - } - if (!$ist_beruecksichtigt) - mannschaftsgruppe_entfernen($bestehende_weitere_veranstaltung_beruecksichtigt->team_id); - else { - mannschaftsgruppe_verknuepfen($id, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, true, false, $bildbeibehalten == 0); - if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit)) - heimspieltag_aktualisieren($bestehende_weitere_veranstaltung_beruecksichtigt->team_id); - } - if (!in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $veranstaltungen_aktualisieren)) - array_push($veranstaltungen_aktualisieren, $bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id); - } - - foreach ($weitere_veranstaltungen_beruecksichtigt as $index => $weitere_veranstaltung_id) { - if ($beschraenkter_zugriff_veranstaltungen && !in_array($weitere_veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids)) - continue; - - $ist_beruecksichtigt = false; - foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) { - if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) { - $ist_beruecksichtigt = true; - break; - } - } - if (!$ist_beruecksichtigt) - mannschaftsgruppe_hinzufuegen($id, $weitere_veranstaltung_id); - if (!in_array($weitere_veranstaltung_id, $veranstaltungen_aktualisieren)) - array_push($veranstaltungen_aktualisieren, $weitere_veranstaltung_id); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - teamstatistikAktualisieren($veranstaltungid); - foreach ($veranstaltungen_aktualisieren as $weitere_veranstaltung_id) - teamstatistikAktualisieren($weitere_veranstaltung_id); - - if ($bild_aktualisieren_gescheitert > 0) { - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid, $bild_aktualisieren_gescheitert == 1 ? "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt." : "Das Bild konnte nicht an die Zielposition kopiert werden."); - - return; - } - - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); -} - -function mannschaftsgruppe_hinzufuegen($quelle_team_id, $ziel_veranstaltung_id) { - $db =& getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $quelle_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) == 0) die("Wrong id!"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id; - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_team" - . "\n WHERE teamgruppe_id = $teamgruppe_id AND veranstaltung_id = $ziel_veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) - return false; - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE veranstaltung_id = $ziel_veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) die("Wrong id!"); - - $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)" - . "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltung_id', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_team_id = $db->insertid(); - - return mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, true, true, true); -} - -function mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, $mannschaftsdaten_aktualisieren, $mannschaftsspieler_aktualisieren, $mannschaftsbild_aktualisieren) { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - - if ($quelle_team_id == $ziel_team_id) - return false; - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $quelle_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id; - - if ($team->teamgruppe_id == null) { - $query = "UPDATE #__sportsmanager_team" - . "\n SET teamgruppe_id = '$teamgruppe_id'" - . "\n WHERE team_id = $quelle_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Mannschaftsdaten aktualisieren - if ($mannschaftsdaten_aktualisieren) { - $query = "UPDATE #__sportsmanager_team" - . "\n SET teamgruppe_id = '$teamgruppe_id'," - . "\n verein_id = " . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . "," - . "\n teamname = '" . $db->escape($team->teamname) . "'," - . "\n tischtyp = '" . $db->escape($team->tischtyp) . "'," - . "\n tischeigenschaften = '" . $db->escape($team->tischeigenschaften) . "'," - . "\n heimspiel_wochentag = '" . $db->escape($team->heimspiel_wochentag) . "'," - . "\n heimspiel_uhrzeit = '" . $db->escape($team->heimspiel_uhrzeit) . "'," - . "\n heimspielort_id = " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . "," - . "\n nichtraucherschutz = '$team->nichtraucherschutz'," - . "\n pin = '" . $db->escape($team->pin) . "'" - . "\n WHERE team_id = $ziel_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // Teamvertreter kopieren - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $quelle_team_id ORDER BY berechtigt_fuer_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_teamvertreter = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id ORDER BY berechtigt_fuer_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_teamvertreter = $db->loadObjectList(); - - $quelle_teamvertreter_anzahl = count($quelle_teamvertreter); - $ziel_teamvertreter_anzahl = count($ziel_teamvertreter); - for ($i = 0; $i < $quelle_teamvertreter_anzahl; $i++) { - $berechtigt_user_id = $quelle_teamvertreter[$i]->berechtigt_user_id; - if ($i < $ziel_teamvertreter_anzahl) { - $berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id; - $query = "UPDATE #__sportsmanager_berechtigt_fuer_team" - . "\n SET berechtigt_user_id = '$berechtigt_user_id'" - . "\n WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id"; - } - else { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)" - . "\n VALUES ('$berechtigt_user_id', '$ziel_team_id');"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - for ($i = $quelle_teamvertreter_anzahl; $i < $ziel_teamvertreter_anzahl; $i++) { - $berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id; - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Ansprechpartner kopieren - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $quelle_team_id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_ansprechpartner = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_ansprechpartner = $db->loadObjectList(); - - $quelle_ansprechpartner_anzahl = count($quelle_ansprechpartner); - $ziel_ansprechpartner_anzahl = count($ziel_ansprechpartner); - for ($i = 0; $i < $quelle_ansprechpartner_anzahl; $i++) { - if ($i < $ziel_ansprechpartner_anzahl) { - $kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id; - $query = "UPDATE #__sportsmanager_teamansprechpartner" - . "\n SET nachname = '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "'," - . "\n vorname = '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "'," - . "\n telefon = '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "'," - . "\n mobil = '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "'," - . "\n email = '" . $db->escape($quelle_ansprechpartner[$i]->email) . "'" - . "\n WHERE kontaktperson_id = $kontaktperson_id"; - } - else { - $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)" - . "\n VALUES ('$ziel_team_id', '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "', '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "', '" . $db->escape($quelle_ansprechpartner[$i]->email) . "');"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - for ($i = $quelle_ansprechpartner_anzahl; $i < $ziel_ansprechpartner_anzahl; $i++) { - $kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id; - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $kontaktperson_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - // Mitglieder aktualisieren - if ($mannschaftsspieler_aktualisieren) { - $query = "SELECT spieler_id, ausgetreten, SUM(IF(team_id = $quelle_team_id, 1, 0)) AS mitglied_quelle, SUM(IF(team_id = $ziel_team_id, 1, 0)) AS mitglied_ziel" // , SUM(IF(team_id = $quelle_team_id, 1, IF(team_id = $ziel_team_id, 10000, 0))) AS teammitgliedschaften" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE team_id = $quelle_team_id OR team_id = $ziel_team_id" - . "\n GROUP BY spieler_id, ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinte_mitglieder = $db->loadObjectList(); - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder'; - foreach ($vereinte_mitglieder as $mitglied) { - $query = "SELECT mitglied_von_team_id" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_mitglieder = $db->loadObjectList(); - - foreach ($ziel_mitglieder as $ziel_mitglied) - bildLoeschen("mannschaftsmitglieder", $ziel_mitglied->mitglied_von_team_id); - - if ($mitglied->mitglied_quelle == 0 && $mitglied->mitglied_ziel > 0) { - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - continue; - } - - if ($mitglied->mitglied_quelle > 0 && $mitglied->mitglied_ziel == 0) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id, ausgetreten)" - . "\n VALUES ('$mitglied->spieler_id', '$ziel_team_id', '$mitglied->ausgetreten');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT mitglied_von_team_id" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_mitglieder = $db->loadObjectList(); - } - - $query = "SELECT mitglied_von_team_id" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $quelle_team_id AND ausgetreten = $mitglied->ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_mitglieder = $db->loadObjectList(); - - $bild_kopiert = false; - foreach ($quelle_mitglieder as $quelle_mitglied) { - foreach ($ziel_mitglieder as $ziel_mitglied) { - $pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_mitglied->mitglied_von_team_id . '.'; - if (JFile::exists($pfad . 'png')) { - JFile::copy($pfad . 'png', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.png'); - $bild_kopiert = true; - } - else if (JFile::exists($pfad . 'jpg')) { - JFile::copy($pfad . 'jpg', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.jpg'); - $bild_kopiert = true; - } - } - if ($bild_kopiert) - break; - } - } - } - - // Mannschaftsbild aktualisieren - if ($mannschaftsbild_aktualisieren) { - bildLoeschen("mannschaften", $ziel_team_id); - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften'; - $quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_team_id . '.'; - $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_team_id . '.'; - if (JFile::exists($quelle_pfad . 'png')) - $ext = "png"; - else if (JFile::exists($quelle_pfad . 'jpg')) - $ext = "jpg"; - else - $ext = ""; - if (!empty($ext) && !JFile::copy($quelle_pfad . $ext, $ziel_pfad . $ext)) - return false; - } - - return true; -} - -function mannschaftsgruppe_entfernen($ziel_team_id) { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $ziel_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id; - if ($teamgruppe_id == null) - return false; - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $ziel_team_id OR gast_team_id = $ziel_team_id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) - return false; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE team_id = $ziel_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) - bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_team" - . "\n WHERE teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n == 1) { - $query = "UPDATE #__sportsmanager_team" - . "\n SET teamgruppe_id = NULL" - . "\n WHERE teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - return true; -} - -function heimspieltag_aktualisieren($team_id) { - $db =& getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - - if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7) - return; - - $query = "SELECT begegnung_id, zeitpunkt" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)" - . "\n WHERE heim_team_id = $team_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)" - . "\n ORDER BY spieltag DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - foreach ($begegnungen as $begegnung) { - $ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1)); - $neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100); - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET zeitpunkt = '$neuer_zeitpunkt'" - . "\n WHERE begegnung_id = $begegnung->begegnung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } -} - -function termin_aktualisieren($begegnung_id) { - $db =& getDatabase(); - - $query = "SELECT heim_team_id, zeitpunkt" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)" - . "\n WHERE begegnung_id = $begegnung_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)" - . "\n ORDER BY spieltag DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - if (count($begegnungen) < 1) - return; - $begegnung = $begegnungen[0]; - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - - if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7) - return; - - $ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1)); - $neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100); - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET zeitpunkt = '$neuer_zeitpunkt'" - . "\n WHERE begegnung_id = $begegnung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } -} - -function adminRemoveMannschaft() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_team WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT teamgruppe_id, veranstaltung_id FROM #__sportsmanager_team WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $teamgruppe_id = $rows[0]->teamgruppe_id != null ? $rows[0]->teamgruppe_id : $id; - - if ($veranstaltungid != $rows[0]->veranstaltung_id) - die("Wrong id!"); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $id OR gast_team_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - if ($rows[0]->teamgruppe_id != null) { - mannschaftsgruppe_entfernen($id); - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) - bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("mannschaften", $id); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - teamstatistikAktualisieren($veranstaltungid); - - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); -} - -function adminKopierenMannschaftForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT #__sportsmanager_team.*, vereinsname" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_veranstaltungen) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE " . veranstaltungFilter("veranstaltung_id IN") - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminKopierenMannschaft($veranstaltung, $teams, $veranstaltungen); -} - -function adminKopierenMannschaft() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $ids = $jinput->get('ids', array(), 'ARRAY'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - $mitglieder_kopieren = $jinput->get('mitglieder_kopieren', 0, 'INT'); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); - - return; - } - - $beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - - $ziel_veranstaltungen_ids = array(); - for ($i = 1; $i <= 4; $i++) { - $ziel_veranstaltungid = $jinput->get('ziel_veranstaltungid_' . $i, 0, 'INT'); - if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid))) - continue; - if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids)) - array_push($ziel_veranstaltungen_ids, $ziel_veranstaltungid); - } - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) { - foreach ($ids as $id) { - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - - if ($veranstaltungid != $team->veranstaltung_id) - die("Wrong id!"); - - $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)" - . "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltungid', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_teamid = $db->insertid(); - - // Mitglieder kopieren - if ($mitglieder_kopieren) { - $query = "SELECT * FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id AND NOT ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id)" - . "\n VALUES ('$row->spieler_id', '$ziel_teamid');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_mitglied_von_team_id = $db->insertid(); - - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . '.'; - if (JFile::exists($pfad . 'png')) - JFile::copy($pfad . 'png', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.png'); - else if (JFile::exists($pfad . 'jpg')) - JFile::copy($pfad . 'jpg', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.jpg'); - } - } - - // Teamvertreter kopieren - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id ORDER BY berechtigt_fuer_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)" - . "\n VALUES ('$row->berechtigt_user_id', '$ziel_teamid');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Ansprechpartner kopieren - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)" - . "\n VALUES ('$ziel_teamid', '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->telefon) . "', '" . $db->escape($row->mobil) . "', '" . $db->escape($row->email) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $id . '.'; - if (JFile::exists($pfad . 'png')) - JFile::copy($pfad . "png", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.png'); - else if (JFile::exists($pfad . 'jpg')) - JFile::copy($pfad . "jpg", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.jpg'); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - teamstatistikAktualisieren($ziel_veranstaltungid); - - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); -} - -function adminVerknuepfenMannschaftForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT #__sportsmanager_team.*, vereinsname" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - if ($beschraenkter_zugriff_veranstaltungen) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE saison_id = $veranstaltung->saison_id" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVerknuepfenMannschaft($veranstaltung, $teams, $veranstaltungen); -} - -function adminVerknuepfenMannschaft() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $ids = $jinput->get('ids', array(), 'ARRAY'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); - - return; - } - - $beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; - - $ziel_veranstaltungen_ids = array(); - for ($i = 1; $i <= 4; $i++) { - $ziel_veranstaltungid = $jinput->get('ziel_veranstaltungid_' . $i, 0, 'INT'); - if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid))) - continue; - if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids)) - array_push($ziel_veranstaltungen_ids, $ziel_veranstaltungid); - } - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_veranstaltung READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) { - foreach ($ids as $id) { - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 0) die("Wrong id!"); - $team = $teams[0]; - - if ($veranstaltungid != $team->veranstaltung_id) - die("Wrong id!"); - - mannschaftsgruppe_hinzufuegen($id, $ziel_veranstaltungid); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - teamstatistikAktualisieren($ziel_veranstaltungid); - - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); -} - -function adminMitglieder() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) - keinZugriff(true); - - $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern"); - - $teamid = $jinput->get('teamid', 0, 'INT'); - if ($teamid == 0) die ("Wrong id!"); - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT mitglied_von_team_id, spieler_id, aktueller_verein_id, MAX(IF(team_id = $teamid, #__sportsmanager_mitglied_von_team.ausgetreten, 0)) AS ausgetreten, MAX(IF(team_id = $teamid, erster_spieltag, NULL)) AS erster_spieltag, MAX(IF(team_id = $teamid, letzter_spieltag, NULL)) AS letzter_spieltag, vorname, nachname, spielernr, MIN(IF(team_id = $teamid, 0, 1)) AS anderes_team" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_team USING (team_id)" - . "\n WHERE (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" - . "\n GROUP BY spieler_id" - . "\n ORDER BY anderes_team, IF(#__sportsmanager_mitglied_von_team.ausgetreten, 1, 0), nachname, vorname, erster_spieltag"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitglieder = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminMitglieder($team, $veranstaltung, $mitglieder, $berechtigt_spieler_aendern); -} - -function adminEditMitglied() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $teamid = $jinput->get('teamid', 0, 'INT'); - $alle_anzeigen = $jinput->get('alle_anzeigen', 0, 'INT'); - $entfernen = $jinput->get('entfernen', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; - - if (empty($id)) - $row = null; - else { - $query = "SELECT #__sportsmanager_mitglied_von_team.*, vorname, nachname FROM #__sportsmanager_mitglied_von_team LEFT JOIN #__sportsmanager_spieler USING (spieler_id) INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - if (empty($id)) { - $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, team_id, NULL AS mitglied_von_team_id, NULL AS erster_spieltag, NULL AS letzter_spieltag, NULL AS ausgetreten" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)" - . "\n WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") - . "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung"; - } - else { - $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, veranstaltungen.team_id, mitglied_von_team_id, erster_spieltag, letzter_spieltag, #__sportsmanager_mitglied_von_team.ausgetreten" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE #__sportsmanager_team.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team ON veranstaltungen.team_id = #__sportsmanager_mitglied_von_team.team_id AND spieler_id = " . $row->spieler_id - . "\n WHERE veranstaltungen.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") - . "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $veranstaltungen_begegnungen = array(); - foreach ($veranstaltungen as $v) { - $query = "SELECT spieltag, zeitpunkt" - . "\n FROM #__sportsmanager_begegnung" - . "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt < CURDATE()" - . "\n ORDER BY zeitpunkt DESC" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - $veranstaltungen_begegnungen[$v->veranstaltung_id] = array(); - $begegnungen = array_reverse($begegnungen); - foreach ($begegnungen as $begegnung) - array_push($veranstaltungen_begegnungen[$v->veranstaltung_id], array($begegnung->spieltag, $begegnung->zeitpunkt)); - - $query = "SELECT spieltag, zeitpunkt" - . "\n FROM #__sportsmanager_begegnung" - . "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt >= CURDATE()" - . "\n ORDER BY zeitpunkt" - . "\n LIMIT 4"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - foreach ($begegnungen as $begegnung) - array_push($veranstaltungen_begegnungen[$v->veranstaltung_id], array($begegnung->spieltag, $begegnung->zeitpunkt)); - } - - /* - $query = "SELECT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler"; - if ($team->verein_id != NULL) - $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT ISNULL(aktueller_verein_id)"; - else - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; - $query .= "\n ORDER BY nachname, vorname"; -*/ - if ($team->verein_id != null) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $team->verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - if (count($vereine) < 1) die ("Wrong id"); - $verein = $vereine[0]; - } - else - $verein = null; - - if (empty($id)) { - if (!empty($team->verein_id) && !$alle_anzeigen) { - $query = "SELECT DISTINCT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, 1 AS aktives_mitglied" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten" - . " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" - . "\n ORDER BY nachname, vorname"; - } - else { - $query = "SELECT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" - . " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" - . "\n ORDER BY nachname, vorname"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - if (!empty($team->verein_id) && !$alle_anzeigen) { - $query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1)" - . " AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)" - . "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - - } - else { - $query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1) AND NOT ISNULL(aktueller_verein_id)" - . "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitgliedschaften = $db->loadObjectList(); - - $spielberechtigungen = array(); - foreach ($mitgliedschaften as $mitgliedschaft) { - if (!isset($spielberechtigungen[$mitgliedschaft->spieler_id])) - $spielberechtigungen[$mitgliedschaft->spieler_id] = array(); - array_push($spielberechtigungen[$mitgliedschaft->spieler_id], array($mitgliedschaft->veranstaltung_id, $mitgliedschaft->unterteilung, $mitgliedschaft->erster_spieltag, $mitgliedschaft->letzter_spieltag, $mitgliedschaft->team_id, $mitgliedschaft->ausgetreten)); - } - - // Veranstaltungsbezeichnungen ermitteln - $query = "SELECT veranstaltung_id, bezeichnung" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE saison_id = $veranstaltung->saison_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $veranstaltungsbezeichnungen = array(); - foreach ($rows as $v) - $veranstaltungsbezeichnungen[$v->veranstaltung_id] = $v->bezeichnung; - - // Mannschaftsbezeichnungen ermitteln - $query = "SELECT team_id, teamname" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n WHERE saison_id = $veranstaltung->saison_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $mannschaftsnamen = array(); - foreach ($rows as $m) - $veranstaltungsbezeichnungen[$m->team_id] = $m->teamname; - - } - else { - $spieler = array(); - $spielberechtigungen = null; - $veranstaltungsbezeichnungen = null; - $mannschaftsnamen = null; - } - - HTML_sportsmanager_admin::adminEditMitglied($row, $team, $verein, $veranstaltung, $spieler, $spielberechtigungen, $veranstaltungsbezeichnungen, $mannschaftsnamen, $veranstaltungen, $veranstaltungen_begegnungen, $alle_anzeigen, $entfernen); -} - -function adminSaveMitglied() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $spielerids = $id != 0 ? array($id) : $jinput->get('spielerids', array(), 'ARRAY'); - $teamid = $jinput->get('teamid', 0, 'INT'); - $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid); - - return; - } - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id"); - $team = $teams[0]; - $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) - keinZugriff(); - - $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_begegnung READ, #__sportsmanager_veranstaltung READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // Sicherstellen, dass Mannschaftsmitglied zum Team gehört - if (!empty($id)) { - $query = "SELECT * FROM #__sportsmanager_mitglied_von_team INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - } - - $query = "SELECT DISTINCT veranstaltung_id, team_id" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $teamid" . (!empty($teamgruppe_id) ? " OR teamgruppe_id = $teamgruppe_id" : null); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - foreach ($veranstaltungen as $v) { - $status = $jinput->get('status_' . $v->veranstaltung_id, -1, 'INT'); - if ($status == -1) - continue; - $erster_spieltag = $jinput->get('erster_spieltag_' . $v->veranstaltung_id, 0, 'INT'); - $letzter_spieltag = $jinput->get('letzter_spieltag_' . $v->veranstaltung_id, 0, 'INT'); - - $erste_runde_typ = $jinput->get('erste_runde_typ_' . $v->veranstaltung_id, -1, 'INT'); - $erste_runde = max(min(abs($jinput->get('erste_runde_' . $v->veranstaltung_id, 1, 'INT')), $erste_runde_typ == -2 ? 99 : 9999), 1); - $erste_runde_platzierung_ende = max(min(abs($jinput->get('erste_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $erste_runde + 99), 1); - - if ($erste_runde_typ >= 10000) - $erste_runde = $erste_runde_typ; - else if ($erste_runde_typ == -2) - $erste_runde = 20000 + ((99 - abs($erste_runde_platzierung_ende - $erste_runde)) * 100) + 99 - min($erste_runde, $erste_runde_platzierung_ende); - else if ($erste_runde_typ == 0) - $erste_runde = 0; - - $letzte_runde_typ = $jinput->get('letzte_runde_typ_' . $v->veranstaltung_id, -1, 'INT'); - $letzte_runde = max(min(abs($jinput->get('letzte_runde_' . $v->veranstaltung_id, 1, 'INT')), $letzte_runde_typ == -2 ? 99 : 9999), 1); - $letzte_runde_platzierung_ende = max(min(abs($jinput->get('letzte_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $letzte_runde + 99), 1); - - if ($letzte_runde_typ >= 10000) - $letzte_runde = $letzte_runde_typ; - else if ($letzte_runde_typ == -2) - $letzte_runde = 20000 + ((99 - abs($letzte_runde_platzierung_ende - $letzte_runde)) * 100) + 99 - min($letzte_runde, $letzte_runde_platzierung_ende); - else if ($letzte_runde_typ == 0) - $letzte_runde = 0; - - if ($letzte_runde != 0 && $erste_runde != 0 && $erste_runde > $letzte_runde) { - $t = $erste_runde; - $erste_runde = $letzte_runde; - $letzte_runde = $t; - } - - if ($id == 0) { - foreach ($spielerids as $spielerid) { - if ($status == 0) - continue; - - $query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = '" . $db->escape($spielerid) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) > 0) - continue; - - $query = "INSERT #__sportsmanager_mitglied_von_team" - . "\n SET spieler_id = '" . $db->escape($spielerid) . "'," - . "\n team_id = '$v->team_id'," - . "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," - . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," - . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE") . ";"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - $query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if ($status == 0) { - foreach ($rows as $row) { - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE mitglied_von_team_id = " . $row->mitglied_von_team_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); - } - } - else { - if (count($rows) == 0) { - $query = "INSERT #__sportsmanager_mitglied_von_team" - . "\n SET spieler_id = '$id'," - . "\n team_id = '$v->team_id'," - . "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," - . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," - . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE"); - } - else { - $query = "UPDATE #__sportsmanager_mitglied_von_team" - . "\n SET erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," - . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," - . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE") - . "\n WHERE mitglied_von_team_id = " . $rows[0]->mitglied_von_team_id; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($bildbeibehalten == 0) { - foreach ($rows as $row) { - bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); - - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt."); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder'; - if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild konnte nicht an die Zielposition kopiert werden."); - - return; - } - } - } - } - } - } - } - } - - $query = "SELECT team_id" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id != $teamid AND teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); - - foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) - mannschaftsgruppe_verknuepfen($teamid, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, false, false, false); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid); -} - -function adminBegegnungen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $modus_id = $veranstaltung->modus_id; - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $modus = $rows[0]; - - $query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t2.nichtraucherschutz AS heim_nichtraucherschutz, t3.nichtraucherschutz AS gast_nichtraucherschutz," - . "\n EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id AND aktion IN (1, 5)) AS verlegt," - . "\n (SELECT IF(#__sportsmanager_begegnung_historie.aktion NOT IN (0, 3, 4), NULL, #__sportsmanager_begegnung_historie.eingetragen) AS eingetragen FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" - . "\n FROM #__sportsmanager_begegnung AS t1" - . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" - . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" - . "\n WHERE t2.veranstaltung_id = $veranstaltungid" - . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, " : "") . "t1.zeitpunkt, heim_name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows); -} - -function adminEditBegegnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - if (empty($id)) { - $query = "SELECT #__sportsmanager_begegnung.*" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY zeitpunkt DESC LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $row = count($rows) < 1 ? null : $rows[0]; // Falls keine Begegnung als Vorlage verfügbar ist - } - else { - $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $row = $rows[0]; - - // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - // Vorgeschlagene Termine ermitteln - $query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)" - . "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id" - . "\n LEFT JOIN #__users AS user ON user.id = user_id" - . "\n WHERE begegnung_id = $id" - . "\n ORDER BY begegnung_historie_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte); - HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); -} - -function adminSaveBegegnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $update = $id != 0; - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); - - return; - } - - $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); - $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); - $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); - $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); - $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); - $spielort_id = $jinput->get('spielort_id', 0, 'INT'); - $tisch = $db->escape(trim($jinput->get('tisch', '', 'RAW'))); - $nichtraucherschutz = $jinput->get('nichtraucherschutz', 0, 'INT'); - $rundentyp = $jinput->get('rundentyp', -1, 'INT'); - $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); - $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); - $aktualisieren_ab_datum = $datum; - - if ($rundentyp >= 10000) - $runde = $rundentyp; - else if ($rundentyp == -2) - $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); - else if ($rundentyp == 0) - $runde = 0; - - $query = "SELECT status, elo_wertung" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong Id!"); - $veranstaltung = $rows[0]; - - // Sicherstellen, dass Teams zu Veranstaltung gehören - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $heim_team_id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - $heim_team = $teams[0]; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $gast_team_id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - $gast_team = $teams[0]; - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_begegnung_historie WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id, tisch, nichtraucherschutz)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ", '$tisch', '$nichtraucherschutz');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - // Begegnung ermitteln - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" - . "\n FROM #__sportsmanager_begegnung" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung = $rows[0]; - - if (!empty($begegnung->zeitpunkt) && substr($begegnung->zeitpunkt, 0, 10) < $aktualisieren_ab_datum) - $aktualisieren_ab_datum = substr($begegnung->zeitpunkt, 0, 10); - - if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id) { - $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($begegnung->zeitpunkt != $zeitpunkt && $begegnung->verlegen_aktionen != 0) { - $aktueller_zeitpunkt = date('Y-m-d H:i:s'); - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 5, " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$user_id', NULL, NULL, NULL, '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) { - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET zeitpunkt = " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . "," - . "\n spieltag = " . ($runde != null ? "'$runde'" : "NULL") . "," - . "\n heim_team_id = '$heim_team_id'," - . "\n gast_team_id = '$gast_team_id'," - . "\n spielort_id = " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . "," - . "\n tisch = '$tisch'," - . "\n nichtraucherschutz = '$nichtraucherschutz'" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($veranstaltung->status > 0) { - if ($update && (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch)) { - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" - . "\n FROM #__sportsmanager_begegnung" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung = $rows[0]; - begegnungTischChanged($begegnung, $heim_team, $gast_team); - } - - wannGespieltAktualisieren(); - if ($veranstaltung->elo_wertung > 0) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); -} - -function adminRemoveBegegnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung WRITE, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // Sicherstellen, dass Begegnung zu Veranstaltung gehört und Elo-Status abrufen - $query = "SELECT status, elo_wertung, zeitpunkt" - . "\n FROM #__sportsmanager_begegnung" - . "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n WHERE begegnung_id = $id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - return; - } - $row = $rows[0]; - - $elo_aktualisieren = $row->status != 0 && $row->elo_wertung != 0; - $aktualisieren_ab_datum = !empty($row->zeitpunkt) ? substr($row->zeitpunkt, 0, 10) : null; - - $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, $veranstaltungid); - teamstatistikAktualisieren($veranstaltungid); - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); -} - -function adminHeimtauschBegegnung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_begegnung_historie READ, #__sportsmanager_team READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $row = $rows[0]; - - // Sicherstellen, dass mindestens ein Team zur Veranstaltung gehört - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id," - . "\n gast_team_id = @temp_heim_team_id," - . "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte," - . "\n gast_punkte = @temp_heim_punkte," - . "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte," - . "\n gast_spielpunkte = @temp_heim_spielpunkte" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id," - . "\n gast_spieler_1_id = @temp_heim_spieler_1_id," - . "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id," - . "\n gast_spieler_2_id = @temp_heim_spieler_2_id," - . "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte," - . "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte," - . "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte," - . "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termin_aktualisieren($id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); -} - -function adminEditBegegnungSpielplan($bestaetigen) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); - - if ($bestaetigen == 2) { - $pin = $db->escape(trim($jinput->get('pin', '', 'RAW'))); - if (empty($pin)) { - $encrypted_pin = $db->escape($jinput->get('epin', '', 'RAW')); - if (empty($encrypted_pin)) { - redirectSportsManagerURL(null, "Keine PIN eingegeben."); - jexit(); - } - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) die("Missing id!"); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); - } - - $query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id" - . "\n FROM #__sportsmanager_begegnung AS t1" - . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" - . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" - . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))" - . "\n ORDER BY t1.zeitpunkt" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL(null, "Keine offene Begegnung zur PIN gefunden."); - jexit(); - } - - $id = $rows[0]->begegnung_id; - $veranstaltungid = $rows[0]->veranstaltung_id; - $aus_uebersicht = 0; - $aktion_team_id = $rows[0]->aktion_team_id; - $anderes_team_id = $rows[0]->anderes_team_id; - } - else { - $pin = ""; - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) die("Missing id!"); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $teamspiel_modus_id = $veranstaltung->modus_id; - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $teamspiel_modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $teamspiel_modus = $rows[0]; - - $query = "SELECT t1.*, t2.unbestaetigtes_ergebnis_id, t2.kommentar, t2.zwischenergebnis,"; - $query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND (tt1.berechtigt_team_id = t1.heim_team_id OR tt1.berechtigt_team_id = t1.gast_team_id)) AS berechtigt_fuer_team_eintragen,"; - if ($bestaetigen != 2) { - $query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND ((tt1.berechtigt_team_id = t1.heim_team_id AND t4.vorschlagendes_team_id = t1.gast_team_id) OR (tt1.berechtigt_team_id = t1.gast_team_id AND t4.vorschlagendes_team_id = t1.heim_team_id))) AS berechtigt_fuer_team_akzeptieren"; - } else { - $query .= "\n IF(t4.vorschlagendes_team_id = $anderes_team_id, 1, 0) AS berechtigt_fuer_team_akzeptieren"; - } - $query .= "\n FROM #__sportsmanager_begegnung AS t1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t2 ON t1.begegnung_id = t2.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" - . "\n WHERE t1.begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung = $rows[0]; - - // Vorgeschlagene Termine ermitteln - $query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)" - . "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id" - . "\n LEFT JOIN #__users AS user ON user.id = user_id" - . "\n WHERE begegnung_id = $id" - . "\n ORDER BY begegnung_historie_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - if ($bestaetigen == 1) { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) - keinZugriff(); - - $query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - keinZugriff(true); - } - else if ($bestaetigen == 2) { - // - } - else { - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - } - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $heim_team = $rows[0]; - - if ($veranstaltungid != $heim_team->veranstaltung_id) - die("Wrong id!"); - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $gast_team = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_mitglied_von_team as t1" - . "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)" - . "\n WHERE team_id = $begegnung->heim_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "") - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $heim_spieler = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_mitglied_von_team as t1" - . "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)" - . "\n WHERE team_id = $begegnung->gast_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "") - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $gast_spieler = $db->loadObjectList(); - - $encrypted_pin = encrypt($pin, "a9cZ" . $veranstaltung->veranstaltung_id . "oDS7" . $id . "2eA"); - // Spielort ermitteln - $spielortQuery = "SELECT name FROM #__sportsmanager_spielort WHERE spielort_id = \"" - . (JFactory::getApplication()->input->getCmd('spielort_heim') == 1 - ? $heim_team->heimspielort_id - : $begegnung->spielort_id) . "\""; - $db->setQuery($spielortQuery); - $begegnung->spielort_name = $db->loadResult(); - - - if (isJson()) { - $response = JSON_sportsmanager::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht); - JSON_sportsmanager::JSON($response); - } else { - HTML_sportsmanager_admin::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht); - HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); - } - -} - - -function adminSaveBegegnungSpielplan() { - $app = &JFactory::getApplication(); - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - $begegnung_input = isJson() ? $jinput->json : $jinput; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $id = $jinput->get('id', 0, 'INT'); - $bestaetigen = $begegnung_input->get('bestaetigen', 0, 'INT'); - $zwischenergebnis = isJson() && $jinput->getMethod() === 'PATCH' ? true : $begegnung_input->get('live', false, 'BOOL'); - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) { - abortWithError("Missing id!"); - } - $kommentar = $db->escape($jinput->get('kommentar', '', 'RAW')); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - $anzahl_historie = $jinput->get('anzahl_historie', 0, 'INT'); - $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); - $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); - $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - if ($bestaetigen == 1) { - if ($aus_uebersicht) { - redirectSportsManagerURL('#id' . $id); - } - else { - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - } - else if ($bestaetigen == 2) { - if ($aus_uebersicht) { - redirectSportsManagerURL(); - } - else { - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid); - } - } - else { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - - return; - } - - $benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungid); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_team WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," - . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - $mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id; - $aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null; - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $veranstaltung = $rows[0]; - - // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) { - abortWithError("Wrong id!"); - } - - // Spielmodus ermitteln - $modus_id = $veranstaltung->modus_id; - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $teamspiel_modus = $rows[0]; - - $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; - $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; - $modus = explode("|", $teamspiel_modus->modus); - $spieltypen = isset($modus[0]) ? explode(",", $modus[0]) : array(); - - if ($bestaetigen == 1) { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { - keinZugriff(); - } - - $query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) { - keinZugriff(); - } - $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; - } - else if ($bestaetigen == 2) { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { - keinZugriff(); - } - - $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); - $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); - if (empty($pin)) { - keinZugriff(); - } - - $query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - keinZugriff(); - } - - $vorschlagendes_team_id = $rows[0]->team_id; - } - else { - if (!$benutzer_ist_moderator) { - keinZugriff(); - } - } - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) { - abortWithError("Missing id!"); - } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - if ($zwischenergebnis) { - $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, zwischenergebnis, kommentar, vorgeschlagen)" - . "\n VALUES ('$id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "'0'") . ", '1', '$kommentar', now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 9, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - else if ($bestaetigen != 0) { - $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)" - . "\n VALUES ('$id', '$vorschlagendes_team_id', '$kommentar', now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 6, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - else { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 8, NULL, '$user_id', NULL, NULL, NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - $spiele_nummern = array(); - foreach ($spiele as $spiel) { - $spiele_nummern[$spiel->teamspiel_nummer] = $spiel; - } - - $ergebnis_vereinen = $zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie; - - $total_heim_punkte = 0; - $total_gast_punkte = 0; - $total_heim_spielpunkte = 0; - $total_gast_spielpunkte = 0; - $spiel_nr = 1; - do { - $spieltyp = isset($spieltypen[$spiel_nr - 1]) ? $spieltypen[$spiel_nr - 1] : ''; - - $skip_spiel = $begegnung_input->get('spiel_' . $spiel_nr . '_typ', '', 'RAW') == '' && $jinput->getMethod() === 'PATCH'; - - if ($skip_spiel) { - if (isset($spiele_nummern[$spiel_nr])) { - $spiel_heim_punkte = $spiele_nummern[$spiel_nr]->$spiel_heim_punkte; - $spiel_gast_punkte = $spiele_nummern[$spiel_nr]->$spiel_gast_punkte; - } - else { - $spiel_heim_punkte = 0; - $spiel_gast_punkte = 0; - } - } - else { - $spiel_heim_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte_detailliert', array(), 'ARRAY'); - $spiel_gast_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte_detailliert', array(), 'ARRAY'); - if (empty($spiel_heim_punkte_detailliert)) { - $spiel_heim_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte', 0, 'INT'); - $spiel_gast_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte', 0, 'INT'); - $ergebnis_detailliert = $spiel_heim_punkte == 0 && $spiel_gast_punkte == 0 ? '' : ($spiel_heim_punkte . ":" . $spiel_gast_punkte); - } - else { - $ergebnis_detailliert = ""; - $spiel_heim_punkte = 0; - $spiel_gast_punkte = 0; - for ($i = 0; $i < count($spiel_heim_punkte_detailliert); $i++) { - if (($spiel_heim_punkte_detailliert[$i] == 0 || empty($spiel_heim_punkte_detailliert[$i])) && ($spiel_gast_punkte_detailliert[$i] == 0 || empty($spiel_gast_punkte_detailliert[$i]))) { - continue; - } - if (!empty($ergebnis_detailliert)) { - $ergebnis_detailliert .= " "; - } - $punkte_heim = empty($spiel_heim_punkte_detailliert[$i]) ? "0" : $spiel_heim_punkte_detailliert[$i]; - $punkte_gast = empty($spiel_gast_punkte_detailliert[$i]) ? "0" : $spiel_gast_punkte_detailliert[$i]; - if ($punkte_heim > $punkte_gast) { - $spiel_heim_punkte++; - } - else if ($punkte_gast > $punkte_heim) { - $spiel_gast_punkte++; - } - $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; - } - } - - if ($spieltyp[0] == "S") { - $spiel_heim_spieler_1_id = 0; - $spiel_gast_spieler_1_id = 0; - $spiel_heim_spieler_2_id = 0; - $spiel_gast_spieler_2_id = 0; - } - else { - $spiel_heim_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_1_id', 0, 'INT'); - $spiel_gast_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_1_id', 0, 'INT'); - if ($spieltyp[0] == "E") { - $spiel_heim_spieler_2_id = 0; - $spiel_gast_spieler_2_id = 0; - } - else { - $spiel_heim_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_2_id', 0, 'INT'); - $spiel_gast_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_2_id', 0, 'INT'); - } - $spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0 || $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0; - } - - if ($mannschaften_vertauscht) { - $t = $spiel_heim_punkte; - $spiel_heim_punkte = $spiel_gast_punkte; - $spiel_gast_punkte = $t; - $ergebnis_detailliert = runden_detailliert_invers($ergebnis_detailliert); - - $t = $spiel_heim_spieler_1_id; - $spiel_heim_spieler_1_id = $spiel_gast_spieler_1_id; - $spiel_gast_spieler_1_id = $t; - - $t = $spiel_heim_spieler_2_id; - $spiel_heim_spieler_2_id = $spiel_gast_spieler_2_id; - $spiel_gast_spieler_2_id = $t; - } - - if ($zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie && isset($spiele_nummern[$spiel_nr])) { - $spiel = $spiele_nummern[$spiel_nr]; - if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { - $spiel_heim_punkte = $spiel->teamspiel_heim_punkte; - $spiel_gast_punkte = $spiel->teamspiel_gast_punkte; - } - if ($spiel_heim_spieler_1_id == 0) - $spiel_heim_spieler_1_id = $spiel->heim_spieler_1_id; - if ($spiel_gast_spieler_1_id == 0) - $spiel_gast_spieler_1_id = $spiel->gast_spieler_1_id; - $spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0; - if ((!empty($spieltyp) && $spieltyp[0] == "D")) { - if ($spiel_heim_spieler_2_id == 0) - $spiel_heim_spieler_2_id = $spiel->heim_spieler_2_id; - if ($spiel_gast_spieler_2_id == 0) - $spiel_gast_spieler_2_id = $spiel->gast_spieler_2_id; - if (!$spieler_angegeben) - $spieler_angegeben = $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0; - } - } - } - - if ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)) { - $total_heim_punkte += $spiel_heim_punkte; - $total_gast_punkte += $spiel_gast_punkte; - - if ($spieltyp[0] != "D") { - if ($spielpunkte_wertung_einzel == 2) { - $spiel_heim_spielpunkte = $spiel_heim_punkte; - $spiel_gast_spielpunkte = $spiel_gast_punkte; - } - else { - if ($spiel_heim_punkte > $spiel_gast_punkte) { - $spiel_heim_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1); - $spiel_gast_spielpunkte = 0; - } - else if ($spiel_heim_punkte < $spiel_gast_punkte) { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1); - } - else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = 0; - } - else if ($spielpunkte_wertung != 3) { - $spiel_heim_spielpunkte = 1; - $spiel_gast_spielpunkte = 1; - } - else { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = 0; - } - } - } - else { - if ($spielpunkte_wertung_doppel == 2) { - $spiel_heim_spielpunkte = $spiel_heim_punkte; - $spiel_gast_spielpunkte = $spiel_gast_punkte; - } - else { - if ($spiel_heim_punkte > $spiel_gast_punkte) { - $spiel_heim_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1); - $spiel_gast_spielpunkte = 0; - } - else if ($spiel_heim_punkte < $spiel_gast_punkte) { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1); - } - else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = 0; - } - else if ($spielpunkte_wertung_doppel != 3) { - $spiel_heim_spielpunkte = 1; - $spiel_gast_spielpunkte = 1; - } - else { - $spiel_heim_spielpunkte = 0; - $spiel_gast_spielpunkte = 0; - } - } - } - - $total_heim_spielpunkte += $spiel_heim_spielpunkte; - $total_gast_spielpunkte += $spiel_gast_spielpunkte; - - if (!$skip_spiel) { - if (!isset($spiele_nummern[$spiel_nr])) { - $query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - } - else { - $teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id; - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET heim_spieler_1_id = '$spiel_heim_spieler_1_id'," - . "\n heim_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . "," - . "\n gast_spieler_1_id = '$spiel_gast_spieler_1_id'," - . "\n gast_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . "," - . "\n teamspiel_heim_punkte = '$spiel_heim_punkte'," - . "\n teamspiel_gast_punkte = '$spiel_gast_punkte'," - . "\n teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," - . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'," - . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") - . "\n WHERE teamspiel_id = $teamspiel_id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - - $spiel_nr++; - } - - } while (isset($spieltypen[$spiel_nr - 1]) && ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben))); - - $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id AND teamspiel_nummer >= $spiel_nr;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - if ($spiel_nr > 1) { - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET heim_punkte = '$total_heim_punkte'," - . "\n gast_punkte = '$total_gast_punkte'," - . "\n heim_spielpunkte = '$total_heim_spielpunkte'," - . "\n gast_spielpunkte = '$total_gast_spielpunkte'" - . "\n WHERE begegnung_id = $id"; - } - else { - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET heim_punkte = NULL," - . "\n gast_punkte = NULL," - . "\n heim_spielpunkte = NULL," - . "\n gast_spielpunkte = NULL" - . "\n WHERE begegnung_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - // Benachrichtigung schreiben - /* - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) - $twitter_benutzername = ""; - else { - $twitter_benutzername = $rows[0]->wert; - $twitter_kennwort = $rows[1]->wert; - } - */ - -// if (!empty($twitter_benutzername) || $bestaetigen) { - if ($bestaetigen != 0) { - // Begegnung ermitteln - $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung_alt = $begegnung; - $begegnung = $rows[0]; - - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $heim_team = $rows[0]; - - // Gastteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $rows[0]; - } - - if ($bestaetigen != 0 && !$zwischenergebnis) { - $mailfrom = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis vorgeschlagen"; - $body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " ein Ergebnis eingetragen.\n\nBestaetigen des Ergebnisses ueber " . SportsManagerURL('&task=admin_begegnung_spielplan_edit_bestaetigen&veranstaltungid=' . $veranstaltungid . '&id=' . $id, -1) . "."; - - $query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - } - - /* - if (!empty($twitter_benutzername) - && ($begegnung_alt->zwischenergebnis != $begegnung->zwischenergebnis - || $begegnung_alt->heim_punkte != $begegnung->heim_punkte - || $begegnung_alt->gast_punkte != $begegnung->gast_punkte - || $begegnung_alt->heim_spielpunkte != $begegnung->heim_spielpunkte - || $begegnung_alt->gast_spielpunkte != $begegnung->gast_spielpunkte)) { - try { - $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); - $status = $twitter->send(($zwischenergebnis ? "Live: " : "") . $veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $total_heim_spielpunkte . ":" . $total_gast_spielpunkte . " (" . $total_heim_punkte . ":" . $total_gast_punkte . ")"); - } - catch(TwitterException $e) { - } - - } - */ - - begegnungChanged($begegnung, $begegnung_alt, $modus, $heim_team, $gast_team, $spiele); - - if ($bestaetigen == 0) { - if ($veranstaltung->status != 0) { - wannGespieltAktualisieren(); - if ($veranstaltung->elo_wertung != 0) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - } - spielerstatistikAktualisieren(0, $veranstaltungid); - teamstatistikAktualisieren($veranstaltungid); - } - - if (isJson()) { - begegnungSpielplan(); - } else { - if ($erneut_oeffnen) { - redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungid . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungid . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : '')); - } - else if ($bestaetigen == 1) { - if ($aus_uebersicht) - redirectSportsManagerURL('#id' . $id); - else - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - else if ($bestaetigen == 2) { - if ($aus_uebersicht) - redirectSportsManagerURL(); - else - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid); - } - else { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - } -} - -function adminBegegnungSpielplanHeimtausch() { - $app = &JFactory::getApplication(); - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - $id = $jinput->get('id', 0, 'INT'); - $bestaetigen = $jinput->get('bestaetigen', 0, 'INT'); - $zwischenergebnis = $jinput->get('zwischenergebnis', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - $kommentar = $db->escape($jinput->get('kommentar', '', 'RAW')); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - $anzahl_historie = $jinput->get('anzahl_historie', 0, 'INT'); - $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); - $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); - $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); - - $benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungid); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_team WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," - . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung = $rows[0]; - - $mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id; - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - - // Spielmodus ermitteln - $modus_id = $veranstaltung->modus_id; - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $modus = $rows[0]; - - if ($bestaetigen == 1) { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) - keinZugriff(); - - $query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - keinZugriff(); - $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; - } - else if ($bestaetigen == 2) { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) - keinZugriff(); - - $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); - $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); - if (empty($pin)) - keinZugriff(); - - $query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) - keinZugriff(); - - $vorschlagendes_team_id = $rows[0]->team_id; - } - else { - if (!$benutzer_ist_moderator) - keinZugriff(); - } - - if (!$benutzer_ist_moderator && !$modus->heimtausch) - keinZugriff(); - - if (!$mannschaften_vertauscht) { - /* - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 9, NULL, '$user_id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - */ - - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id," - . "\n gast_team_id = @temp_heim_team_id," - . "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte," - . "\n gast_punkte = @temp_heim_punkte," - . "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte," - . "\n gast_spielpunkte = @temp_heim_spielpunkte" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id," - . "\n gast_spieler_1_id = @temp_heim_spieler_1_id," - . "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id," - . "\n gast_spieler_2_id = @temp_heim_spieler_2_id," - . "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte," - . "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte," - . "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte," - . "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungid . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungid . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : '')); -} - -function adminBegegnungSpielplanBestaetigen() { - $app = &JFactory::getApplication(); - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $id = $jinput->get('id', 0, 'INT'); - $bestaetigen = $jinput->get('bestaetigen', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - - // Begegnung ermitteln - $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," - . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - $aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null; - - if ($bestaetigen == 2) { - $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); - $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); - if (empty($pin)) { - keinZugriff(); - } - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { - keinZugriff(); - } - - $query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id," - . "\n IF(t4.vorschlagendes_team_id = IF(t2.pin = '$pin', gast_team_id, heim_team_id), 1, 0) AS berechtigt_fuer_team_akzeptieren" - . "\n FROM #__sportsmanager_begegnung AS t1" - . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" - . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" - . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))" - . "\n ORDER BY t1.zeitpunkt" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - keinZugriff(); - } - - if (!$rows[0]->berechtigt_fuer_team_akzeptieren) { - keinZugriff(); - } - - $aktion_team_id = $rows[0]->aktion_team_id; - } - else { - if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { - keinZugriff(); - } - - $query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung AS t2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis t3 ON t2.begegnung_id = t3.begegnung_id WHERE NOT t3.zwischenergebnis AND t2.begegnung_id = $id AND t1.berechtigt_user_id = $user_id AND ((t1.berechtigt_team_id = t2.heim_team_id AND t3.vorschlagendes_team_id = t2.gast_team_id) OR (t1.berechtigt_team_id = t2.gast_team_id AND t3.vorschlagendes_team_id = t2.heim_team_id))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) { - keinZugriff(); - } - - $aktion_team_id = $rows[0]->berechtigt_team_id; - } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - /* - // Benachrichtigung schreiben - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) - $twitter_benutzername = ""; - else { - $twitter_benutzername = $rows[0]->wert; - $twitter_kennwort = $rows[1]->wert; - } - */ - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $veranstaltung = $rows[0]; - - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 7, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$aktion_team_id', NULL, NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $heim_team = $rows[0]; - - // Gastteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $rows[0]; - - if ($veranstaltung->status != 0) { - wannGespieltAktualisieren(); - if ($veranstaltung->elo_wertung != 0) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - } - spielerstatistikAktualisieren(0, $veranstaltungid); - teamstatistikAktualisieren($veranstaltungid); - - $mailfrom = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis akzeptiert"; - $body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($aktion_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " das Ergebnis akzeptiert."; - - $query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - - /* - if (!empty($twitter_benutzername)) { - try { - $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); - $status = $twitter->send($veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte . " (" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")"); - } - catch(TwitterException $e) { - } - } - */ - if (isJson()) { -// adminEditBegegnungSpielplan(0); - begegnungSpielplan(false); - } else { - if ($aus_uebersicht) { - redirectSportsManagerURL('#id' . $id); - } - else { - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - } -} - -/* Generiert Gruppenspiele zu einer beliebigen geraden Anzahl Teams - * bei denen jedes Team genau einmal gegen jedes andere Team spielt, - * die Spiele an Anzahl Teams - 1 Spieltagen ausgetragen werden und - * jedes Team an jedem Tag genau ein Spiel austrägt - * - * Rückgabewert: Dreidimensionales Array mit Spieltag als erstem Index (1, ..., Anzahl Teams - 1), - * Spiel-Nr. als zweitem Index (1, ..., Anzahl Teams / 2) und als drittem Index 0 für das erste - * und 1 für das zweite Team, wobei jeweils die Teamnummer enthalten ist (1, ..., Anzahl Teams) - * - * (C) Sven Nickel 2006 - */ -function Gruppenspiele($anzahlteams) { - if ($anzahlteams % 2 == 1) { - die ("Gruppenspiele(): Eine ungerade Anzahl an Teams ist nicht zulässig!"); - exit; - } - - $b = 1; - for ($i = 1; $i < $anzahlteams; $i++) { - for ($j = $i + 1; $j <= $anzahlteams; $j++) { - $begegnungen[$b++] = array($i, $j); - } - } - - $rueckschritt = false; - for ($spieltag = 1; $spieltag < $anzahlteams;) { - for ($spielnr = 1; $spielnr <= $anzahlteams / 2;) { - // Nächste noch nicht eingetragene Begegnung ermitteln, in der - // keine Mannschaft am aktuellen Spieltag bereits spielt - for ($b = 1; $b <= ($anzahlteams - 1) * $anzahlteams / 2; $b++) { - if ($rueckschritt) { - if ($begegnungen[$b][0] != $spiele[$spieltag][$spielnr][0] || - $begegnungen[$b][1] != $spiele[$spieltag][$spielnr][1]) - continue; - $rueckschritt = false; - continue; - } - $nicht_zulaessig = false; - for ($i = 1; $i <= $spieltag && !$nicht_zulaessig; $i++) { - for ($j = 1; $j <= ($i != $spieltag ? $anzahlteams / 2 : $spielnr - 1) && !$nicht_zulaessig; $j++) { - if (($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $begegnungen[$b][1]) || - ($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $begegnungen[$b][0])) { - $nicht_zulaessig = true; - break; - } - if ($spielnr > 1 && $spieltag < $anzahlteams - 1) { - if (($spiele[$i][$j][0] == $spiele[$spieltag][$spielnr - 1][1] && $spiele[$i][$j][1] == $begegnungen[$b][0]) || - ($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $spiele[$spieltag][$spielnr - 1][1])) { - $nicht_zulaessig = true; - break; - } - if ($spielnr == $anzahlteams / 2) { - if (($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $spiele[$spieltag][1][0]) || - ($spiele[$i][$j][0] == $spiele[$spieltag][1][0] && $spiele[$i][$j][1] == $begegnungen[$b][1])) { - $nicht_zulaessig = true; - break; - } - } - } - if ($i == $spieltag) - if ($begegnungen[$b][0] == $spiele[$i][$j][0] || - $begegnungen[$b][0] == $spiele[$i][$j][1] || - $begegnungen[$b][1] == $spiele[$i][$j][0] || - $begegnungen[$b][1] == $spiele[$i][$j][1]) { - $nicht_zulaessig = true; - break; - } - } - } - if (!$nicht_zulaessig) - break; - } - if ($b <= ($anzahlteams - 1) * $anzahlteams / 2) { // Begegnung gefunden - $spiele[$spieltag][$spielnr][0] = $begegnungen[$b][0]; - $spiele[$spieltag][$spielnr][1] = $begegnungen[$b][1]; - if ($spieltag < ($anzahlteams - 1)) { - $spiele[$spieltag + 1][$spielnr == 1 ? $anzahlteams / 2 : $spielnr - 1][1] = $begegnungen[$b][0]; - $spiele[$spieltag + 1][$spielnr][0] = $begegnungen[$b][1]; - } - $spielnr++; - } - else { // Keine weitere Begegnung gefunden - // Rückschritt durchführen - if ($spielnr > 1) { - $spielnr--; - } - else { - $spielnr = $anzahlteams / 2; - $spieltag -= 2; - } - $rueckschritt = true; - } - } - $spieltag += 2; - } - - return $spiele; -} - -function adminBegegnungenGenerierenForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminBegegnungenGenerieren($veranstaltung, $rows); -} - -function adminBegegnungenGenerieren() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); - - return; - } - - $anzahlteams = $jinput->get('anzahlteams', 0, 'INT'); - if ($anzahlteams == 0) die("Wrong number of teams!"); - - $query = "SELECT t1.*" - . "\n FROM #__sportsmanager_team AS t1" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY t1.teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - for ($i = 1; $i <= $anzahlteams; $i++) { - $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); - if ($teamids[$i] == 0) die("Wrong id!"); - } - - $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; - $spieltag_basis = array(); - for ($i = 1; $i <= ($spieltage * 2); $i++) { - $jahr = $jinput->get('datum_jahr_' . $i, 0, 'INT'); - $kw = $jinput->get('datum_kw_' . $i, 0, 'INT'); - if ($jahr == 0 || $kw == 0) die("Wrong date!"); - $spieltag_basis[$i] = array(); - $spieltag_basis[$i]["jahr"] = $jahr; - $spieltag_basis[$i]["kw"] = $kw; - } - - $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); - - for ($spieltag = 1; $spieltag <= $spieltage; $spieltag++) { - for ($spielnr = 1; $spielnr <= ($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams) / 2; $spielnr++) { - if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams) - continue; - - $heim_team_id = $teamids[$spiele[$spieltag][$spielnr][0]]; - $gast_team_id = $teamids[$spiele[$spieltag][$spielnr][1]]; - - $heim_team = null; - foreach ($teams as $t) { - if ($t->team_id == $heim_team_id) { - $heim_team = $t; - break; - } - } - if ($heim_team == null) die("Team id not found!"); - - $gast_team = null; - foreach ($teams as $t) { - if ($t->team_id == $gast_team_id) { - $gast_team = $t; - break; - } - } - if ($gast_team == null) die("Team id not found!"); - - if ($heim_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $ts = getdate(mondaykw($spieltag_basis[$spieltag]["kw"], $spieltag_basis[$spieltag]["jahr"], $heim_team->heimspiel_wochentag - 1)); - $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); - } - - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$spieltag', '$heim_team_id', '$gast_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $weiterer_spieltag = $spieltag + $spieltage; - if ($gast_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $ts = getdate(mondaykw($spieltag_basis[$weiterer_spieltag]["kw"], $spieltag_basis[$weiterer_spieltag]["jahr"], $gast_team->heimspiel_wochentag - 1)); - $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); - } - - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$weiterer_spieltag', '$gast_team_id', '$heim_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); -} - -function adminBegegnungenRundeErzeugenForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT #__sportsmanager_begegnung.*" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY zeitpunkt DESC LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $row = count($rows) < 1 ? null : $row = $rows[0]; // Falls keine Begegnung als Vorlage verfügbar - - $query = "SELECT *" - . "\n FROM #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte); -} - -function adminBegegnungenRundeErzeugen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); - - return; - } - - $anzahlteams = $jinput->get('anzahlteams', 0, 'INT'); - if ($anzahlteams == 0) die("Wrong number of teams!"); - if ($jinput->get('datum_tag', 0, 'INT') >= 0) { - $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); - $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); - $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); - $datum_kw = 0; - } - else { - $datum_jahr = $jinput->get('datum_jahr', 0, 'INT'); - $datum_kw = abs($jinput->get('datum_tag', 0, 'INT')); - } - $rundentyp = $jinput->get('rundentyp', -1, 'INT'); - $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); - $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); - - if ($rundentyp >= 10000) - $runde = $rundentyp; - else if ($rundentyp == -2) - $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); - else if ($rundentyp == 0) - $runde = 0; - - $query = "SELECT t1.*" - . "\n FROM #__sportsmanager_team AS t1" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY t1.teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - for ($i = 1; $i <= $anzahlteams; $i++) - $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); - - $spielort_ids = array(); - for ($i = 1; $i <= $anzahlteams; $i += 2) - $spielort_ids[$i] = $jinput->get('spielort_id_' . $i, 0, 'INT'); - - for ($teamnr = 1; $teamnr < $anzahlteams; $teamnr += 2) { - $heim_team_id = $teamids[$teamnr]; - $gast_team_id = $teamids[$teamnr + 1]; - - if ($heim_team_id == 0 || $gast_team_id == 0) - continue; - - $heim_team = null; - foreach ($teams as $t) { - if ($t->team_id == $heim_team_id) { - $heim_team = $t; - break; - } - } - if ($heim_team == null) die("Team id not found!"); - - $gast_team = null; - foreach ($teams as $t) { - if ($t->team_id == $gast_team_id) { - $gast_team = $t; - break; - } - } - if ($gast_team == null) die("Team id not found!"); - - if ($datum_kw != null) { - if ($heim_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $ts = getdate(mondaykw($datum_kw, $datum_jahr, $heim_team->heimspiel_wochentag - 1)); - $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); - } - } - - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_ids[$teamnr] != 0 ? "'$spielort_ids[$teamnr]'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); -} - -function adminBegegnungenAlleEntfernen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); - - $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_team READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - $query = "SELECT MIN(DATE(zeitpunkt))" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $id = $row->begegnung_id; - - $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); -} - -function adminEditTurnier() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - $vorlage = $jinput->get('vorlage', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (empty($id)) { - $berechtigt_fuer_turnier = array(); - } - else { - $query = "SELECT #__sportsmanager_berechtigt_fuer_turnier.* FROM #__sportsmanager_berechtigt_fuer_turnier, #__users WHERE berechtigt_user_id = id AND berechtigt_turnier_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_turnier = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 3 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - HTML_sportsmanager_admin::adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien); -} - -function adminSaveTurnier() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $turnierbezeichnung = $db->escape(trim($jinput->get('turnierbezeichnung', '', 'RAW'))); - $saison_id = $jinput->get('saison_id', 0, 'INT'); - $turnierort = $db->escape(trim($jinput->get('turnierort', '', 'RAW'))); - $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); - $mehrtaegig = $jinput->get('mehrtaegig', 0, 'INT'); - if (!$mehrtaegig) - $letzter_tag = $erster_tag; - else - $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - $vorlage = $jinput->get('vorlage', 0, 'INT'); - $berechtigt_fuer_turnier_user_ids = array(); - for ($i = 1; $i <= 6; $i++) { - $berechtigt_user_id = $jinput->get('berechtigt_fuer_turnier_user_' . $i . '_id', 0, 'INT'); - if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_turnier_user_ids)) - array_push($berechtigt_fuer_turnier_user_ids, $berechtigt_user_id); - } - - $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_berechtigt_fuer_turnier WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($vorlage) { - $vorlage_id = $id; - $id = 0; - $query = "SELECT erster_tag FROM #__sportsmanager_turnier WHERE turnier_id = $vorlage_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $vorlage_erster_tag = $rows[0]->erster_tag; - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_turnier (veranstalter_id, turnierbezeichnung, saison_id, turnierort, erster_tag" . ($letzter_tag != null ? ", letzter_tag" : "") . ", kategorie) VALUES ('$veranstalterid', '$turnierbezeichnung', '$saison_id', '$turnierort', '$erster_tag'" . ($letzter_tag != null ? ", '$letzter_tag'" : "") . ", '$kategorie');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_turnier" - . "\n SET veranstalter_id = '$veranstalterid'," - . "\n turnierbezeichnung = '$turnierbezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n turnierort = '$turnierort'," - . "\n erster_tag = '$erster_tag'," - . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'" : "NULL") . "," - . "\n kategorie = '$kategorie'" - . "\n WHERE turnier_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; - if (!empty($berechtigt_fuer_turnier_user_ids)) - $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_turnier_user_ids, ", ") . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_turnier_user_ids); - if ($index !== false) { - unset($berechtigt_fuer_turnier_user_ids[$index]); - } - } - - foreach ($berechtigt_fuer_turnier_user_ids as $berechtigt_user_id) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_turnier (berechtigt_user_id, berechtigt_turnier_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($vorlage) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE turnier_id = $vorlage_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplinen = $db->loadObjectList(); - - foreach ($disziplinen as $disziplin) { - $ts = getdate(strtotime($erster_tag) - strtotime($vorlage_erster_tag) + strtotime($disziplin->beginn)); - $neuer_beginn = $disziplin->beginn == null ? null : sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], $ts["hours"], $ts["minutes"]); - - $query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)" - . "\n VALUES ('$id', '" . $db->escape($disziplin->disziplin) . "', '" . $db->escape($disziplin->kuerzel) . "', " . ($neuer_beginn == null ? "NULL" : "'$neuer_beginn'") . ", '$disziplin->typ', '$disziplin->elo_wertung', " . ($disziplin->voranmeldung == null ? "NULL" : ("'" . $disziplin->voranmeldung . "'")) . ", " . ($disziplin->voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $disziplin->voranmeldungen_rangliste_id . "'")) . ", '$disziplin->voranmeldungen_reihenfolge', '$disziplin->reihenfolge', '$disziplin->status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplin_id = $db->insertid(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - foreach ($ranglisten as $rangliste) { - $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste->rangliste_id', '$disziplin_id', " . ($rangliste->system_id != null ? "'$rangliste->system_id'" : "NULL") . ", '" . $db->escape($rangliste->wertung) . "', '" . $db->escape($rangliste->doppel_teilwertung) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveTurnier() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_berechtigt_fuer_turnier WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id AND elo_wertung > 0), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $elo_aktualisieren = $db->loadResult(); - - $query = "SELECT MIN(DATE(beginn))" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE turnier_id = $id AND elo_wertung > 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); - - $query = "DELETE #__sportsmanager_turnierspiel FROM #__sportsmanager_turnierspiel, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnierspiel.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung FROM #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_rangliste_turnierdisziplin FROM #__sportsmanager_rangliste_turnierdisziplin, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_rangliste_turnierdisziplin.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turnier_rundenstufe FROM #__sportsmanager_turnier_rundenstufe, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnier_rundenstufe.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier WHERE turnier_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminTurnierdisziplinen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierid)) - keinZugriff(true); - - $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; - - $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; - $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 t1.*," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 20) AS voranmeldungen," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 0) AS meldungen," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_turnierspiel AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id) AS spiele" - . "\n FROM #__sportsmanager_turnierdisziplin AS t1" - . "\n WHERE turnier_id = $turnierid" - . "\n ORDER BY reihenfolge, disziplin, beginn"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTurnierdisziplinen($turnier, $rows, $beschraenkter_zugriff_turniere); -} - -function adminEditTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); - - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnier = $rows[0]; - - // Ranglisten ermitteln - if ($id == 0) { - $query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - } - else { - $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, doppel_teilwertung, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id) AS ranglisten USING (rangliste_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - if ($id == 0) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste_system" - . "\n WHERE status != 0" - . "\n ORDER BY systembezeichnung"; - } - else { - $query = "SELECT DISTINCT rangliste_system_id, #__sportsmanager_rangliste_system.*" - . "\n FROM #__sportsmanager_rangliste_system" - . "\n LEFT JOIN #__sportsmanager_rangliste_turnierdisziplin ON turnierdisziplin_id = $id AND system_id = rangliste_system_id" - . "\n WHERE status != 0 OR NOT ISNULL(turnierdisziplin_id)" - . "\n ORDER BY systembezeichnung"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme); -} - -function adminSaveTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); - $disziplin = $db->escape(trim($jinput->get('disziplin', '', 'RAW'))); - $kuerzel = $db->escape(trim($jinput->get('kuerzel', '', 'RAW'))); - $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); - $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); - $beginn = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); - $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); - $aktualisieren_ab_datum = $datum; - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); - - return; - } - - $typ = $jinput->get('typ', 0, 'INT'); - $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); - $voranmeldung_datum = normalisiertesDatum($jinput->get('voranmeldung_datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('voranmeldung_datum_jahr', 0, 'INT'), $jinput->get('voranmeldung_datum_monat', 0, 'INT'), $jinput->get('voranmeldung_datum_tag', 0, 'INT'))); - $voranmeldung_uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('voranmeldung_uhrzeit_stunden', 0, 'INT'), $jinput->get('voranmeldung_uhrzeit_minuten', 0, 'INT'))); - $voranmeldung = $voranmeldung_datum == null || $voranmeldung_uhrzeit == null ? null : ($voranmeldung_datum . " " . $voranmeldung_uhrzeit); - $status = $jinput->get('status', 0, 'INT'); - $voranmeldungen_rangliste_id = $jinput->get('voranmeldungen_rangliste_id', 0, 'INT'); - $voranmeldungen_reihenfolge = $jinput->get('voranmeldungen_reihenfolge', 0, 'INT'); - - $i = 0; - $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); - $rangliste_system_id = $jinput->get('rangliste_system_id_' . $i, 0, 'INT'); - $rangliste_wertung = $jinput->get('rangliste_wertung_' . $i, 0, 'RAW'); - $rangliste_doppel_teilwertung = $jinput->get('doppel_teilwertung_' . $i, 0, 'RAW'); - $ranglisten_beruecksichtigt = array(); - $ranglisten_beruecksichtigt_system_id = array(); - $ranglisten_beruecksichtigt_wertung = array(); - $ranglisten_beruecksichtigt_doppel_teilwertung = array(); - while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) { - array_push($ranglisten_beruecksichtigt, $rangliste_id); - array_push($ranglisten_beruecksichtigt_system_id, $rangliste_system_id); - array_push($ranglisten_beruecksichtigt_wertung, $rangliste_wertung); - array_push($ranglisten_beruecksichtigt_doppel_teilwertung, $rangliste_doppel_teilwertung); - $i++; - $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); - $rangliste_system_id = $jinput->get('rangliste_system_id_' . $i, 0, 'INT'); - $rangliste_wertung = $jinput->get('rangliste_wertung_' . $i, 0, 'RAW'); - $rangliste_doppel_teilwertung = $jinput->get('doppel_teilwertung_' . $i, 0, 'RAW'); - } - - $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_rangliste READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($id == 0) { - $aktualisieren = false; - $query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)" - . "\n VALUES ('$turnierid', '$disziplin', '$kuerzel', '$beginn', '$typ', '$elo_wertung', " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . ", " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . ", '$voranmeldungen_reihenfolge', '$reihenfolge', '$status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $aktualisieren = true; - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - $elo_aktualisieren = $row->elo_wertung || $elo_wertung; - - if ($row->typ != $typ) { - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UPDATE #__sportsmanager_turnierdisziplin" - . "\n SET turnier_id = '$turnierid'," - . "\n disziplin = '$disziplin'," - . "\n kuerzel = '$kuerzel'," - . "\n beginn = " . ($beginn == null ? "NULL" : ("'" . $beginn . "'")) . "," - . "\n typ = '$typ'," - . "\n elo_wertung = '$elo_wertung'," - . "\n voranmeldung = " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . "," - . "\n voranmeldungen_rangliste_id = " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . "," - . "\n voranmeldungen_reihenfolge = '$voranmeldungen_reihenfolge'," - . "\n reihenfolge = '$reihenfolge'," - . "\n status = '$status'" - . "\n WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Berücksichtige Ranglisten prüfen und ggf. aktualisieren - $query = "SELECT rangliste_id, system_id, wertung, doppel_teilwertung" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); - - foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { - $ist_beruecksichtigt = false; - foreach ($ranglisten_beruecksichtigt as $rangliste_id) { - if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { - $ist_beruecksichtigt = true; - break; - } - } - if (!$ist_beruecksichtigt) { - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { - $ist_beruecksichtigt = false; - foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { - if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { - $ist_beruecksichtigt = true; - $bestehende_rangliste_system_id = $bestehende_rangliste_beruecksichtigt->system_id; - $bestehende_rangliste_wertung = $bestehende_rangliste_beruecksichtigt->wertung; - $bestehende_rangliste_doppel_teilwertung = $bestehende_rangliste_beruecksichtigt->doppel_teilwertung; - break; - } - } - $system_id = $ranglisten_beruecksichtigt_system_id[$index]; - $wertung = $ranglisten_beruecksichtigt_wertung[$index]; - $doppel_teilwertung = $ranglisten_beruecksichtigt_doppel_teilwertung[$index]; - if (!$ist_beruecksichtigt) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) { - $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste_id', '$id', " . ($system_id != 0 ? "'$system_id'" : "NULL") . ", '" . $db->escape($wertung) . "', '" . $db->escape($doppel_teilwertung) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else if ($system_id != $bestehende_rangliste_system_id || $wertung != $bestehende_rangliste_wertung || $doppel_teilwertung != $bestehende_rangliste_doppel_teilwertung) { - $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . "," - . "\n wertung = '" . $db->escape($wertung) . "'," - . "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'" - . "\n WHERE rangliste_id = $rangliste_id AND turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($aktualisieren) { - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(0, $id); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); -} - -function adminRemoveTurnierdisziplin() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) die("Missing id!"); - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); - - $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - $elo_aktualisieren = $row->elo_wertung; - $aktualisieren_ab_datum = !empty($row->beginn) ? substr($row->beginn, 0, 10) : null; - - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); -} - -function adminExportTurniervoranmeldungenForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - if ($turnierdisziplinid == 0) die ("Wrong id!"); - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - /* - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE status > 0 AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE()" - . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $ranglisten_aktuell = $db->loadObjectList(); - */ - - $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, bezeichnung, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid) AS ranglisten USING (rangliste_id)" - . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten); -} - -function adminExportTurniervoranmeldungen() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $ranglisteid = $jinput->get('ranglisteid', 0, 'INT'); - $sortierung = $jinput->get('sortierung', 0, 'INT'); - $format = $jinput->get('format', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); - - return; - } - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, beginn, typ FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); - - if ($turnierdisziplin->typ == 0) { - $query = "SELECT *" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein"; - if ($format != 0) - $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte"; - $query .= "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '20'" - . "\n ORDER BY " . ($ranglisteid != 0 ? "Punkte DESC, " : "") . "Nachname, Vorname"; - } - else { - $query = "SELECT (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein1"; - if ($format != 0) - $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht1"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte1"; - $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Nachname2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Vorname2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Spielernr2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Verein2"; - if ($format != 0) - $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Geschlecht2"; - if ($ranglisteid != 0) { - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Punkte2"; - if ($sortierung == 0) { - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)" - . "+ COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Summe"; - } - else { - $query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)" - . ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0)) AS Maximum"; - } - } - $query .= "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '20'" - . "\n ORDER BY " . ($ranglisteid != 0 ? ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ") : "") . "Nachname1, Vorname1"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $voranmeldungen = $db->loadObjectList(); - - /* - if ($turnierdisziplin->typ == 0) { - $query = "SELECT t1.nachname as Nachname, t1.vorname as Vorname, t1.spielernr as Spielernr" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein"; - if ($format != 0) - $query .= ", t1.geschlecht as Geschlecht"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte"; - } - else { - $query = "SELECT t1.nachname as Nachname1, t1.vorname as Vorname1, t1.spielernr as Spielernr1" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein1"; - if ($format != 0) - $query .= ", t1.geschlecht as Geschlecht1"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte1"; - $query .= ", t2.nachname as Nachname2, t2.vorname as Vorname2, t2.spielernr as Spielernr2" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_2_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein2"; - if ($format != 0) - $query .= ", t2.geschlecht as Geschlecht2"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Punkte2"; - if ($ranglisteid != 0) { - $query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0), COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0)) AS Maximum"; - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) + COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Summe"; - } - } - $query .= "\n FROM #__sportsmanager_turniervoranmeldung" - . "\n LEFT JOIN #__sportsmanager_spieler AS t1 ON t1.spieler_id = spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS t2 ON t2.spieler_id = spieler_2_id" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid" - . "\n ORDER BY " . ($ranglisteid != 0 ? ($turnierdisziplin->typ == 0 ? "Punkte DESC, " : ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ")) : "") . "t1.nachname, t1.vorname"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $voranmeldungen = $db->loadObjectList(); -*/ - $dateiname = 'Voranmeldungen ' . $turnierdisziplin->turnierbezeichnung . ' - ' . $turnierdisziplin->disziplin . '.csv'; - $dateiname = bereinigterDateiname($dateiname); - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - Header("Content-Type: text/x-csv"); - Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); - Header("Pragma: no-cache"); - - if ($format == 0) { - $trennzeichen = "\t"; - - $header = ""; - foreach ($voranmeldungen[0] as $field => $value) - $header .= $field . $trennzeichen; - - $data = ""; - foreach ($voranmeldungen as $row) { - $line = ''; - foreach ($row as $value) { - if ((!isset($value)) OR ($value == "")) { - $value = $trennzeichen; - } - else { - $value = str_replace('"', '""', $value); - $value = str_replace("\t", ' ', $value); - $value = str_replace("\r", '', $value); - $value = str_replace("\n", ' ', $value); - $value = '"' . $value . '"' . $trennzeichen; - } - $line .= $value; - } - $data .= trim($line) . "\n"; - } - $data = str_replace("\r", "", $data); - - echo "sep=" . $trennzeichen . "\n" . $header . "\n" . $data; - } - else { - $gesetzt = ($format - 1) * 4; - if ($turnierdisziplin->typ == 0) { - echo "1\r\n"; - echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#PSEUDONYM#SETZPOSITION\r\n"; - } - else { - echo "2\r\n"; - echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#NAME2#VORNAME2#GESCHLECHT2#VEREIN2#PSEUDONYM#SETZPOSITION\r\n"; - } - - $platz = 1; - $punkte = 0; - $tatsaechlicher_platz = 0; - foreach ($voranmeldungen as $row) { - $row_punkte = $ranglisteid != 0 ? ($turnierdisziplin->typ == 0 ? $row->Punkte : ($sortierung == 0 ? $row->Summe : $row->Maximum)) : 0; - if ($row_punkte != $punkte) { - $tatsaechlicher_platz = $platz; - $punkte = $row_punkte; - } - if ($turnierdisziplin->typ == 0) { - echo utf8_decode(str_replace("#", ' ', $row->Nachname) - . "#" . str_replace("#", ' ', $row->Vorname) - . "#" . ($row->Geschlecht == "M" ? "M" : "F") - . "#" . str_replace("#", ' ', $row->Verein) - . "#" - . "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n"); - } - else { - echo utf8_decode(str_replace("#", ' ', $row->Nachname1) - . "#" . str_replace("#", ' ', $row->Vorname1) - . "#" . ($row->Geschlecht1 == "M" ? "M" : "F") - . "#" . str_replace("#", ' ', $row->Verein1) - . "#" . str_replace("#", ' ', $row->Nachname2) - . "#" . str_replace("#", ' ', $row->Vorname2) - . "#" . ($row->Geschlecht2 == "M" ? "M" : "F") - . "#" . str_replace("#", ' ', $row->Verein2) - . "#" - . "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n"); - } - $platz++; - } - } - - die(); -} - -function adminTurnierdisziplinMeldungenSpiele() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - if ($turnierdisziplinid == 0) die ("Wrong id!"); - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierdisziplinid AND platz > 0), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $platzierung_anzeigen = $db->loadResult() > 0; - - $meldungen = array(); - $meldungenSpielerNamen = array(); - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { - /* Abfrage war erheblich zu langsam bei großem Bestand - $query = "SELECT *" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" - . "\n 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) { - $meldungenSpielerNamen[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? NichtLeererString($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1)) : StringsZusammenfassen($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1), $meldung->verknuepft2 ? $meldung->name2 : hervorheben($meldung->name2)); - } - */ - - $query = "SELECT platz, turniermeldung_id" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" - . "\n ORDER BY platz, turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen[$rundenstufe] = $db->loadObjectList(); - } - - $query = "SELECT turniermeldung_id, spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid" - . "\n ORDER BY turniermeldung_spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungenSpieler = $db->loadObjectList(); - - foreach ($meldungenSpieler as $s) { - $spielername = $s->spieler_id == null ? hervorheben($s->nachname . ", " . $s->vorname) : ($s->nachname . ", " . $s->vorname); - if (empty($meldungenSpielerNamen[$s->turniermeldung_id])) - $meldungenSpielerNamen[$s->turniermeldung_id] = $spielername; - else - $meldungenSpielerNamen[$s->turniermeldung_id] = StringsZusammenfassen($meldungenSpielerNamen[$s->turniermeldung_id], $spielername); - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $rundenstufen_details = array(); - foreach ($rows as $row) { - $rundenstufen_details[$row->rundenstufe] = $row; - } - - $spiele = array(); - foreach (array(1, 2, 3, 10) as $rundenstufe) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierspiel" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" - . "\n ORDER BY runde DESC, spiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele[$rundenstufe] = $db->loadObjectList(); - } - - HTML_sportsmanager_admin::adminTurnierdisziplinMeldungenSpiele($disziplin, $rundenstufen_details, $meldungen, $meldungenSpielerNamen, $spiele, $platzierung_anzeigen); -} - -function adminTurnierdisziplinMeldungenSpieleAlleEntfernen() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $id = $jinput->get('turnierdisziplinid', 0, 'INT'); - $veranstalter_id = $jinput->get('veranstalterid', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); - - return; - } - - // Sicherstellen, dass Turnierdisziplin zum Turnier gehört - $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (benutzerZugriff("turniere_aendern")) - $zugriffsebene = 2; - else if (benutzerTurnierModerator($turnierdisziplin->turnier_id)) - $zugriffsebene = 1; - else - keinZugriff(); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_turnier_rundenstufe WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(0, $id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); -} - -function adminImportTurnierdisziplinMeldungenSpieleForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - if (benutzerZugriff("turniere_aendern")) - $zugriffsebene = 2; - else if (benutzerTurnierModerator($row->turnier_id)) - $zugriffsebene = 1; - else - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter, $zugriffsebene); -} - -function adminImportTurnierdisziplinMeldungenSpiele() { - $db =& getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $id = $jinput->get('turnierdisziplinid', 0, 'INT'); - $veranstalter_id = $jinput->get('veranstalterid', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); - - return; - } - - // Sicherstellen, dass Turnierdisziplin zum Turnier gehört - $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (benutzerZugriff("turniere_aendern")) - $zugriffsebene = 2; - else if (benutzerTurnierModerator($turnierdisziplin->turnier_id)) - $zugriffsebene = 1; - else - keinZugriff(); - - if ($zugriffsebene == 2 && $veranstalter_id != 0) - $wertungsbedingung = "(SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND veranstalter_id = $veranstalter_id) > 0 AND "; - else - $wertungsbedingung = "NOT ISNULL(aktueller_verein_id) AND "; - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_turnier_rundenstufe WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - if (!empty($_FILES["daten"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten"]["tmp_name"])) { - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $handle = fopen($_FILES["daten"]["tmp_name"], "r"); - if (!$handle) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei kann nicht geöffnet werden."); - - return; - } - if (feof($handle)) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer."); - - return; - } - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - if (substr($titelzeile, 0, 4) == "sep=") { - $trennzeichen = substr($titelzeile, 4); - if ($trennzeichen == "") // TAB am Ende wird aus irgendwelchen Gründen weggekürzt - $trennzeichen = "\t"; - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - } - if (strpos($titelzeile, "\t") !== false) - $trennzeichen = "\t"; - else if (strpos($titelzeile, ";") !== false) - $trennzeichen = ";"; - else - $trennzeichen = ","; - - $spalte = array(); - $titel = explode($trennzeichen, strtolower($titelzeile)); - - foreach ($titel as $index => $bezeichnung) { - if ($bezeichnung == "platz" || $bezeichnung == "platzierung") - $spalte["platz"] = $index; - else if ($bezeichnung == "itsf") - $spalte["itsf"] = $index; - else if ($bezeichnung == "name" || $bezeichnung == "nachname" || $bezeichnung == "name1" || $bezeichnung == "nachname1" || $bezeichnung == "nachname 1") - $spalte["nachname1"] = $index; - else if ($bezeichnung == "vorname" || $bezeichnung == "vorname1" || $bezeichnung == "vorname 1") - $spalte["vorname1"] = $index; - else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1") - $spalte["spielernr1"] = $index; - else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1") - $spalte["verein1"] = $index; - else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2") - $spalte["nachname2"] = $index; - else if ($bezeichnung == "vorname2" || $bezeichnung == "vorname 2") - $spalte["vorname2"] = $index; - else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2") - $spalte["spielernr2"] = $index; - else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2") - $spalte["verein1"] = $index; - } - - // CSV-Import - if ((isset($spalte["platz"]) && isset($spalte["vorname1"]) && isset($spalte["nachname1"])) || isset($spalte["itsf"])) { - $nichtGefundeneSpieler = ""; - $spielerMeldungen = array(); - - $ist_doppel = false; - if (isset($spalte["vorname2"]) && isset($spalte["nachname2"])) - $ist_doppel = true; - - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - $daten = explode($trennzeichen, $buffer); - - foreach ($daten as $index => $wert) { - $wert = trim($wert); - $len = strlen($wert); - if ($len < 2 || $wert[0] != '"' || $wert[$len - 1] != '"') - $daten[$index] = $wert; - else - $daten[$index] = str_replace('""', '"', substr($wert, 1, $len - 2)); - } - - if (isset($spalte["itsf"])) { - if (!isset($daten[$spalte["itsf"]])) - continue; - $itsf_daten = $daten[$spalte["itsf"]]; - if (empty($itsf_daten)) - continue; - - if (!$ist_doppel && strpos($itsf_daten, " - ") !== false) { - if (count($spielerMeldungen) != 0) - continue; - $ist_doppel = true; - } - - $nachname1 = ""; - $vorname1 = ""; - $spielernr1 = ""; - $verein1 = ""; - if ($ist_doppel) { - $nachname2 = ""; - $vorname2 = ""; - $spielernr2 = ""; - $verein2 = ""; - } - - $itsf_felder = explode(" ", $itsf_daten); - $position = 0; // 0: Platz, 1: Vorname1, 2: Nachname1, 3: Land1, 4: Vorname2, 5: Nachname2, 6: Land2 - foreach ($itsf_felder as $feld) { - if ($position == 0) { - if (!is_numeric($feld)) - break; - $platz = $feld; - $position++; - continue; - } - if ($position == 1) { - if (strtoupper($feld) != $feld) { - if (!empty($vorname1)) - $vorname1 .= " "; - $vorname1 .= $feld; - continue; - } - $position = 2; - } - if ($position == 2) { - if ($feld != "-" && substr($feld, 0, 1) != "(") { - if (!empty($nachname1)) - $nachname1 .= " "; - $nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); - continue; - } - $position = 3; - } - if ($position == 3) { - if ($feld == "-") - continue; - if (substr($feld, 0, 1) == "(" && substr($feld, 4) == ")") { - $verein1 = substr($feld, 1, 3); - continue; - } - if (!$ist_doppel) - break; - $position = 4; - } - if ($position == 4) { - if (strtoupper($feld) != $feld) { - if (!empty($vorname2)) - $vorname2 .= " "; - $vorname2 .= $feld; - continue; - } - $position = 5; - } - if ($position == 5) { - if ($feld != "-" && substr($feld, 0, 1) != "(") { - if (ctype_digit($feld)) - continue; - if (!empty($nachname2)) - $nachname2 .= " "; - $nachname2 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); - continue; - } - $position = 6; - } - if ($position == 6) { - if ($feld == "-") - continue; - if (substr($feld, 0, 1) == "(" && substr($feld, 4) == ")") { - $verein2 = substr($feld, 1, 3); - continue; - } - break; - } - } - - if (empty($platz) || empty($vorname1) || empty($nachname1)) - continue; - if ($ist_doppel && (empty($vorname2) || empty($nachname2))) - continue; - } - else { - $platz = str_replace(".", "", $daten[$spalte["platz"]]); - if (empty($platz)) - continue; - - if (!isset($daten[$spalte["vorname1"]]) || !isset($daten[$spalte["nachname1"]])) - continue; - - $nachname1 = $daten[$spalte["nachname1"]]; - $vorname1 = $daten[$spalte["vorname1"]]; - $spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : ""; - $verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : ""; - - if ($vorname1 == "" || $nachname1 == "") - continue; - - if ($ist_doppel) { - if (!isset($daten[$spalte["vorname2"]]) || !isset($daten[$spalte["nachname2"]])) - continue; - - $nachname2 = $daten[$spalte["nachname2"]]; - $vorname2 = $daten[$spalte["vorname2"]]; - $spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : ""; - $verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : ""; - - if ($vorname2 == "" || $nachname2 == "") - continue; - } - } - - if ($ist_doppel) { - // Spielernummern und -namen ermitteln - $spieler2_id = null; - if (!empty($spielernr2)) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr2) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - if (count($s) == 1) - $spieler2_id = $s[0]->spieler_id; - } - if ($spieler2_id == null) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname2) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname2) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - if (count($s) == 1) - $spieler2_id = $s[0]->spieler_id; - } - } - - // Spielernummern und -namen ermitteln - $spieler1_id = null; - if (!empty($spielernr1)) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr1) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - if (count($s) == 1) - $spieler1_id = $s[0]->spieler_id; - } - if ($spieler1_id == null) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname1) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname1) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - if (count($s) == 1) - $spieler1_id = $s[0]->spieler_id; - } - - $spielerMeldung = array(); - $spielerMeldung["p"] = $platz; - if ($spieler1_id == null) { - $spielerMeldung["1n"] = $nachname1; - $spielerMeldung["1v"] = $vorname1; - $spielerMeldung["1vn"] = $verein1; - } - else - $spielerMeldung["1"] = $spieler1_id; - - if ($ist_doppel) { - if ($spieler2_id == null) { - $spielerMeldung["2n"] = $nachname2; - $spielerMeldung["2v"] = $vorname2; - $spielerMeldung["2vn"] = $verein2; - } - else - $spielerMeldung["2"] = $spieler2_id; - } - array_push($spielerMeldungen, $spielerMeldung); - } - fclose($handle); - - foreach ($spielerMeldungen as $spielerMeldung) { - $platz = $spielerMeldung["p"]; - $spieler1_id = isset($spielerMeldung["1"]) ? $spielerMeldung["1"] : null; - if ($ist_doppel) - $spieler2_id = isset($spielerMeldung["2"]) ? $spielerMeldung["2"] : null; - - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$id', '0', '$platz');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungId = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . ($spieler1_id != null ? "'$spieler1_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if ($spieler1_id == null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["1n"]) . "', '" . $db->escape($spielerMeldung["1v"]) . "', '" . $db->escape($spielerMeldung["1vn"]) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($ist_doppel) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . ($spieler2_id != null ? "'$spieler2_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if ($spieler2_id == null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - else { // XML-Import - fclose($handle); - - // Daten zu Vorrunde laden - $disziplinVorrunde = null; - if (!empty($_FILES["daten_vorrunde"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_vorrunde"]["tmp_name"])) { - // $disziplinVorrunde = new DOMIT_Document(); - // $success = $disziplinVorrunde->loadXML($_FILES["daten_vorrunde"]["tmp_name"]); - $disziplinVorrunde = new DOMDocument(); - $disziplinVorrunde->recover = true; - $success = $disziplinVorrunde->load($_FILES["daten_vorrunde"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - - return; - } - } - } - - // Daten zu Zusatzrunde laden - $disziplinZusatzrunde = null; - if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) { - // $disziplinZusatzrunde = new DOMIT_Document(); - // $success = $disziplinZusatzrunde->loadXML($_FILES["daten_zusatzrunde"]["tmp_name"]); - $disziplinZusatzrunde = new DOMDocument(); - $disziplinZusatzrunde->recover = true; - $success = $disziplinZusatzrunde->load($_FILES["daten_zusatzrunde"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - - return; - } - } - } - - // Daten zu 2. Zusatzrunde laden - $disziplinZusatzrunde2 = null; - if (!empty($_FILES["daten_zusatzrunde2"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_zusatzrunde2"]["tmp_name"])) { - // $disziplinZusatzrunde2 = new DOMIT_Document(); - // $success = $disziplinZusatzrunde2->loadXML($_FILES["daten_zusatzrunde2"]["tmp_name"]); - $disziplinZusatzrunde2 = new DOMDocument(); - $disziplinZusatzrunde2->recover = true; - $success = $disziplinZusatzrunde2->load($_FILES["daten_zusatzrunde2"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - - return; - } - } - } - - // Daten zu Hauptrunde laden - // $disziplin = new DOMIT_Document(); - // $success = $disziplin->loadXML($_FILES["daten"]["tmp_name"]); - $disziplin = new DOMDocument(); - $disziplin->recover = true; - $success = $disziplin->load($_FILES["daten"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - - return; - } - - if ($disziplinVorrunde != null) { - $matchingNodes =& $disziplinVorrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - if ($disziplinZusatzrunde != null) { - $matchingNodes =& $disziplinZusatzrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - if ($disziplinZusatzrunde2 != null) { - $matchingNodes =& $disziplinZusatzrunde2->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - $matchingNodes =& $disziplin->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - /* - $handle = fopen ($_FILES["daten"]["tmp_name"], "r"); - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - echo htmlentities_utf8($buffer) . "
"; - } - fclose($handle); - echo "...
"; - */ - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten."); - - return; - } - - // Spieler-Ids über Spielerliste ermitteln - $meldungenSpieler = array(); - $meldungenPlatz = array(); - foreach (array(0, 1, 2, 3, 10) as $rundenstufe) - $meldungenPlatz[$rundenstufe] = array(); - //$meldungenVerein = array(); - $meldungenIds = array(); - $matchingNodes =& $disziplin->getElementsByTagName("meldung"); - if ($matchingNodes != null) { - // $totalHauptrunde = $matchingNodes->getLength(); - $totalHauptrunde = $matchingNodes->length; - for ($i = 0; $i < $totalHauptrunde; $i++) { - $currNode =& $matchingNodes->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $meldungPlatz; - $meldungenPlatz[1][$meldungName] = $meldungPlatz; - -// $spieler =& $currNode->firstChild; -// while ($spieler != NULL) { - $spielerNodes =& $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '$spielernr') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); -// $spieler =& $spieler->nextSibling; - } - } - - $neueMeldungenZusatzrunde = 0; - if ($disziplinZusatzrunde != null) { - $matchingNodesZusatzrunde =& $disziplinZusatzrunde->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde != null) { - //$totalZusatzrunde = $matchingNodesZusatzrunde->getLength(); - $totalZusatzrunde = $matchingNodesZusatzrunde->length; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode =& $matchingNodesZusatzrunde->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenPlatz[2][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz; - - // $spieler =& $currNode->firstChild; - // while ($spieler != NULL) { - $spielerNodes =& $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler =& $spieler->nextSibling; - } - } - } - } - } - else - $totalZusatzrunde = 0; - - $neueMeldungenZusatzrunde2 = 0; - if ($disziplinZusatzrunde2 != null) { - $matchingNodesZusatzrunde2 =& $disziplinZusatzrunde2->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde2 != null) { - // $totalZusatzrunde2 = $matchingNodesZusatzrunde2->getLength(); - $totalZusatzrunde2 = $matchingNodesZusatzrunde2->length; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode =& $matchingNodesZusatzrunde2->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenPlatz[3][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde2++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz; - - // $spieler =& $currNode->firstChild; - // while ($spieler != NULL) { - $spielerNodes =& $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler =& $spieler->nextSibling; - } - } - } - } - } - else - $totalZusatzrunde2 = 0; - - $disziplinVorrundeErsterPlatz = 0; - if ($disziplinVorrunde != null) { - $matchingNodesVorrunde =& $disziplinVorrunde->getElementsByTagName("meldung"); - if ($matchingNodesVorrunde != null) { - // $totalVorrunde = $matchingNodesVorrunde->getLength(); - $totalVorrunde = $matchingNodesVorrunde->length; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode =& $matchingNodesVorrunde->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - if (isset($meldungenSpieler[$meldungName])) - continue; - $meldungPlatz = $currNode->getAttribute("platz"); - if ($meldungPlatz < $disziplinVorrundeErsterPlatz || $disziplinVorrundeErsterPlatz == 0) - $disziplinVorrundeErsterPlatz = $meldungPlatz; - } - - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode =& $matchingNodesVorrunde->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenPlatz[10][$meldungName] = $meldungPlatz; - if ($disziplinVorrundeErsterPlatz == 0) - $disziplinVorrundeErsterPlatz = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $neueMeldungenZusatzrunde2 + $meldungPlatz - $disziplinVorrundeErsterPlatz + 1; - - // $spieler =& $currNode->firstChild; - // while ($spieler != NULL) { - $spielerNodes =& $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler =& $spieler->nextSibling; - } - } - } - } - } - - // Meldungen speichern - foreach ($meldungenSpieler as $meldungName => $spielerIds) { - $meldungPlatz = $meldungenPlatz[0][$meldungName]; - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$id', '0', '$meldungPlatz');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungId = $db->insertid(); - $meldungenIds[$meldungName] = $meldungId; - - foreach ($spielerIds as $spielerId) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . (!is_array($spielerId) ? "'$spielerId'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if (is_array($spielerId)) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $rundenstufen = array(0); - $platzierungen = array(0 => $meldungenPlatz[0][$meldungName]); - foreach (array(1, 2, 3, 10) as $rundenstufe) { - if (isset($meldungenPlatz[$rundenstufe][$meldungName])) { - array_push($rundenstufen, $rundenstufe); - $platzierungen[$rundenstufe] = $meldungenPlatz[$rundenstufe][$meldungName]; - } - } - meldungsgruppe_verknuepfen($meldungId, $rundenstufen, $platzierungen); - } - } - - // Spiele speichern - $totalVorrunde = 0; - if ($disziplinVorrunde != null) { - $matchingNodes =& $disziplinVorrunde->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $totalVorrunde = $matchingNodes->getLength(); - $totalVorrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode =& $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel =& $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes =& $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz =& $spiel->firstChild; - // while ($satz != NULL) { - $satzNodes =& $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - // $satz =& $satz->nextSibling; - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '10', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel =& $spiel->nextSibling; - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '10'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - $totalZusatzrunde = 0; - if ($disziplinZusatzrunde != null) { - $matchingNodes =& $disziplinZusatzrunde->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $totalZusatzrunde = $matchingNodes->getLength(); - $totalZusatzrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode =& $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel =& $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes =& $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz =& $spiel->firstChild; - // while ($satz != NULL) { - $satzNodes =& $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - // $satz =& $satz->nextSibling; - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '2', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel =& $spiel->nextSibling; - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '2'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - $totalZusatzrunde2 = 0; - if ($disziplinZusatzrunde2 != null) { - $matchingNodes =& $disziplinZusatzrunde2->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $totalZusatzrunde2 = $matchingNodes->getLength(); - $totalZusatzrunde2 = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode =& $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel =& $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes =& $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz =& $spiel->firstChild; - // while ($satz != NULL) { - $satzNodes =& $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - // $satz =& $satz->nextSibling; - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '3', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel =& $spiel->nextSibling; - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '3'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $matchingNodes =& $disziplin->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $total = $matchingNodes->getLength(); - $total = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $total; $i++) { - $currNode =& $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel =& $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes =& $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz =& $spiel->firstChild; - // while ($satz != NULL) { - $satzNodes =& $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - // $satz =& $satz->nextSibling; - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $totalVorrunde + $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '1', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel =& $spiel->nextSibling; - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - } - - foreach (array(1, 2, 3, 10) as $rundenstufe) { - $query = "SELECT runde, COUNT(*) AS spiele" - . "\n FROM #__sportsmanager_turnierspiel" - . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe" - . "\n GROUP BY runde" - . "\n ORDER BY runde DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $runden = $db->loadObjectList(); - - if (count($runden) < 2 - || ($runden[0]->spiele != 1 && $runden[0]->spiele != 2) - || $runden[1]->spiele != 2) - continue; - if (count($runden) >= 3 - && ($runden[2]->spiele > 4)) - continue; - if (count($runden) >= 4 - && ($runden[2]->spiele != 4 || $runden[3]->spiele > 8)) - continue; - if (count($runden) >= 5 - && ($runden[3]->spiele != 8 || $runden[4]->spiele > 16)) - continue; - - $query = "SELECT turnierspiel_id" - . "\n FROM #__sportsmanager_turnierspiel" - . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[0]->runde - . "\n ORDER BY turnierspiel_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET runde = '19999'" - . "\n WHERE turnierspiel_id = '" . $rows[0]->turnierspiel_id . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (count($rows) >= 2) { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET runde = '19998'" - . "\n WHERE turnierspiel_id = '" . $rows[1]->turnierspiel_id . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - for ($i = 1; $i < count($runden) && $i <= 6; $i++) { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET runde = '" . (19998 - $i) . "'" - . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[$i]->runde; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(0, $id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); -} - -function adminEditTurnierdisziplinSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); - - if (empty($id)) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; - - $query = "SELECT *" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND (rundenstufe = '$rundenstufe'" . ($rundenstufe != 0 ? " OR rundenstufe = 0" : "") . ")" - . "\n ORDER BY rundenstufe, name1, name2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen = $db->loadObjectList(); - - /* - $query = "SELECT turniermeldung_id, spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname, " - . "\n IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) AS vereinsname" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $meldungenSpieler = $db->loadObjectList(); - - $meldungenSpielerNamen = array(); - foreach ($meldungenSpieler as $s) { - if (!isset($meldungenSpielerNamen[$s->turniermeldung_id])) - $meldungenSpielerNamen[$s->turniermeldung_id] = $s->nachname . ", " . $s->vorname; - else - $meldungenSpielerNamen[$s->turniermeldung_id] .= " / " . $s->nachname . ", " . $s->vorname; - } - - asort($meldungenSpielerNamen); -*/ - HTML_sportsmanager_admin::adminEditTurnierdisziplinSpiel($row, $disziplin, $rundenstufen_details, $meldungen, $rundenstufe); -} - -function adminSaveTurnierdisziplinSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $ergebnis = $jinput->get('ergebnis', 0, 'INT'); - $ergebnis_punkte_heim = $jinput->get('ergebnis_punkte_heim', array(), 'ARRAY'); - $ergebnis_punkte_gast = $jinput->get('ergebnis_punkte_gast', array(), 'ARRAY'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $spiel_nummer = $jinput->get('spiel_nummer', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - $rundentyp = $jinput->get('rundentyp', -1, 'INT'); - $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); - $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); - - return; - } - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); - - $ergebnis_detailliert = ""; - $saetze_heim = 0; - $saetze_gast = 0; - for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) { - if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i]))) - continue; - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i]; - $punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i]; - if ($punkte_heim > $punkte_gast) - $saetze_heim++; - else if ($punkte_gast > $punkte_heim) - $saetze_gast++; - $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; - } - if ($saetze_heim > 0 || $saetze_gast > 0) - $ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0); - - if ($rundentyp >= 10000) - $runde = $rundentyp; - else if ($rundentyp == -2) - $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); - else if ($hauptrunde && $rundentyp == 0) - $runde = 0; - - $gewinner_meldung_id = $jinput->get('gewinner_meldung_id', 0, 'INT'); - $verlierer_meldung_id = $jinput->get('verlierer_meldung_id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert) VALUES ('$turnierdisziplinid', " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . ", '$runde', '$rundenstufe', '$gewinner_meldung_id', '$verlierer_meldung_id', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET spiel_nummer = " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . "," - . "\n runde = '$runde'," - . "\n heim_meldung_id = '$gewinner_meldung_id'," - . "\n gast_meldung_id = '$verlierer_meldung_id'," - . "\n ergebnis = '$ergebnis'," - . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") - . "\n WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); -} - -function adminRemoveTurnierdisziplinSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; - - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); -} - -function adminEditTurnierdisziplinRunde() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $runde = $jinput->get('runde', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - HTML_sportsmanager_admin::adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $turnierdisziplin); -} - -function adminSaveTurnierdisziplinRunde() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $runde_alt = $jinput->get('runde_alt', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - $rundentyp = $jinput->get('rundentyp', -1, 'INT'); - $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); - $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); - - return; - } - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); - - if ($rundentyp >= 10000) - $runde = $rundentyp; - else if ($rundentyp == -2) - $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); - else if ($runde_alt >= 0 && $rundentyp == 0) - $runde = 0; - if ($runde_alt < 0) - $runde = -$runde; - - if ($runde != $runde_alt) { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET runde = '$runde'" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND runde = $runde_alt AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); -} - -function adminEditTurnierdisziplinMeldung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $weitere = $jinput->get('weitere', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 0 && $rundenstufe != 20 && $rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - - $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $rundenstufen = array(); - $platzierungen = array(0 => "0", 1 => "0", 2 => "0", 3 => "0", 10 => "0", 20 => "0"); - if ($id == null) { - $row = null; - $meldung = null; - $meldung_spieler = null; - - $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierdisziplinid ORDER BY rundenstufe, platz DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) { - array_push($rundenstufen, $rows[0]->rundenstufe); - $platzierungen[$rows[0]->rundenstufe] = $rows[0]->platz; - } - } - else { - $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $meldung = $rows[0]; - - if ($meldung->meldungsgruppe_id != null) { - $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $meldung->turnierdisziplin_id AND meldungsgruppe_id = $meldung->meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - array_push($rundenstufen, $row->rundenstufe); - $platzierungen[$row->rundenstufe] = $row->platz; - } - } - else { - array_push($rundenstufen, $meldung->rundenstufe); - $platzierungen[$meldung->rundenstufe] = $meldung->platz; - } - - $rundenstufe = $meldung->rundenstufe; - - $query = "SELECT spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname, " - . "\n IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) AS vereinsname" - . "\n FROM #__sportsmanager_turniermeldung_spieler" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" - . "\n WHERE turniermeldung_id = $meldung->turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldung_spieler = $db->loadObjectList(); - } - - $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditTurnierdisziplinMeldung($meldung, $rundenstufe, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere); -} - -function adminSaveTurnierdisziplinMeldung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $spieler_1_id = $jinput->get('spieler_1_id', 0, 'INT'); - $spieler_1_nachname = $db->escape($jinput->get('spieler_1_nachname', '', 'RAW')); - $spieler_1_vorname = $db->escape($jinput->get('spieler_1_vorname', '', 'RAW')); - $spieler_1_verein = $db->escape($jinput->get('spieler_1_verein', '', 'RAW')); - $spieler_2_id = $jinput->get('spieler_2_id', 0, 'INT'); - $spieler_2_nachname = $db->escape($jinput->get('spieler_2_nachname', '', 'RAW')); - $spieler_2_vorname = $db->escape($jinput->get('spieler_2_vorname', '', 'RAW')); - $spieler_2_verein = $db->escape($jinput->get('spieler_2_verein', '', 'RAW')); - $weitere = $jinput->get('weitere', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#mid' . $id); - - return; - } - - $rundenstufen = $jinput->get('rundenstufen', array(), 'ARRAY'); - $platzierungen = $jinput->get('platzierungen', array(), 'ARRAY'); - $platzierungen = array(0 => $platzierungen[0], 1 => $platzierungen[1], 2 => $platzierungen[2], 3 => $platzierungen[3], 10 => $platzierungen[4], 20 => 0); - - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turnierspiel WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - /* - if ($platz > 0 && ($spieler_1_id != 0 || $spieler_2_id != 0)) { - $query = "SELECT COUNT(*) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id) WHERE platz > 0 AND rundenstufe = $rundenstufe AND #__sportsmanager_turniermeldung.turniermeldung_id != $id AND turnierdisziplin_id = $turnierdisziplinid"; - if ($spieler_1_id != 0 && $spieler_2_id != 0) - $query .= " AND (#__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id OR #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id)"; - else if ($spieler_1_id != 0) - $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id"; - else - $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - if ($db->loadResult() > 0) { - $query = "UNLOCK TABLES;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid, "Die Meldung wurde nicht gespeichert, da zu mindestens einem der Spieler bereits eine Platzierung bei einer anderen Meldung eingetragen ist."); - } - } - */ - - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - if ($id == 0) { - $rundenstufe = count($rundenstufen) > 0 ? $rundenstufen[0] : 0; - $platz = $platzierungen[$rundenstufe]; - - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$turnierdisziplinid', '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$id', " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_id = $db->insertid(); - - if ($spieler_1_id == 0) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ($turniermeldung_spieler_id, '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($turnierdisziplin->typ == 1) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$id', " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_id = $db->insertid(); - - if ($spieler_2_id == 0) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ($turniermeldung_spieler_id, '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else { - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $meldung = $rows[0]; - - $rundenstufe = $meldung->rundenstufe; - $platz = $platzierungen[$rundenstufe]; - - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL") - . "\n WHERE turniermeldung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if ($rows[0]->spieler_id == 0 && $spieler_1_id == 0) { - $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" - . "\n SET nachname = '$spieler_1_nachname'," - . "\n vorname = '$spieler_1_vorname'," - . "\n vereinsname = '$spieler_1_verein'" - . "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($rows[0]->spieler_id == 0 && $spieler_1_id != 0) { - $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" - . "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($rows[0]->spieler_id != 0 && $spieler_1_id == 0) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES (" . $rows[0]->turniermeldung_spieler_id . ", '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UPDATE #__sportsmanager_turniermeldung_spieler" - . "\n SET spieler_id = " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL") - . "\n WHERE turniermeldung_spieler_id = " . $rows[0]->turniermeldung_spieler_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($turnierdisziplin->typ == 1) { - if ($rows[1]->spieler_id == 0 && $spieler_2_id == 0) { - $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" - . "\n SET nachname = '$spieler_2_nachname'," - . "\n vorname = '$spieler_2_vorname'," - . "\n vereinsname = '$spieler_2_verein'" - . "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($rows[1]->spieler_id == 0 && $spieler_2_id != 0) { - $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" - . "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($rows[1]->spieler_id != 0 && $spieler_2_id == 0) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES (" . $rows[1]->turniermeldung_spieler_id . ", '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UPDATE #__sportsmanager_turniermeldung_spieler" - . "\n SET spieler_id = " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL") - . "\n WHERE turniermeldung_spieler_id = " . $rows[1]->turniermeldung_spieler_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - meldungsgruppe_verknuepfen($id, $rundenstufen, $platzierungen); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) - eloAktualisieren($aktualisieren_ab_datum); - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); - - if (!$weitere) - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#mid' . $id); - else - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldung_edit&turnierdisziplinid=' . $turnierdisziplinid . '&id=' . $id . '&weitere=1'); -} - -function adminRemoveTurnierdisziplinMeldung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turnierspiel WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // Sicherstellen, dass Meldung zur Turnierdisziplin und damit zum Turnier gehört - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $meldung = $rows[0]; - - meldungssgruppe_entfernen($id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); -} - -function adminVerknuepfenTurnierdisziplinMeldungForm() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); - - $meldungen = array(); - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { - $query = "SELECT *" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" - . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS vereinsname1" - . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS vereinsname2" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" - . "\n ORDER BY platz, name1, name2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen[$rundenstufe] = $db->loadObjectList(); - } - HTML_sportsmanager_admin::adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen); -} - -function adminVerknuepfenTurnierdisziplinMeldung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $ids = array(); - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) - $ids[$rundenstufe] = $jinput->get('ids' . $rundenstufe, array(), 'ARRAY'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - if ($turnierdisziplinid == 0) die("Missing id!"); - $rundenstufen = $jinput->get('rundenstufen', array(), 'ARRAY'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); - - return; - } - - // Sicherstellen, dass Turnierdisziplin zu Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($rows[0]->turnier_id)) - keinZugriff(); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turnierspiel WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { - foreach ($ids[$rundenstufe] as $meldung_id) { - // Sicherstellen, dass Meldung zu Turnierdisziplin und damit zu Turnier gehört - $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $meldung_id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - - meldungsgruppe_erweitern($meldung_id, $rundenstufen); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); -} - -function meldungsgruppe_erweitern($quelle_turniermeldung_id, $rundenstufen) { - $db =& getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $quelle_meldung = $rows[0]; - $meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id; - - if ($quelle_meldung->meldungsgruppe_id != null) { - $query = "SELECT DISTINCT rundenstufe FROM #__sportsmanager_turniermeldung" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - if (!in_array($row->rundenstufe, $rundenstufen)) - array_push($rundenstufen, $row->rundenstufe); - } - } - else { - if (!in_array($quelle_meldung->rundenstufe, $rundenstufen)) - array_push($rundenstufen, $quelle_meldung->rundenstufe); - } - - meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, null); -} - -function meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, $platzierungen) { - $db =& getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $quelle_meldung = $rows[0]; - $meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id; - - $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $quelle_turniermeldung_id ORDER BY turniermeldung_spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_meldung_spieler = $db->loadObjectList(); - - if ($quelle_meldung->meldungsgruppe_id == null && count($rundenstufen) > 1) { - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET meldungsgruppe_id = '$meldungsgruppe_id'" - . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE meldungsgruppe_id = '$meldungsgruppe_id' AND turnierdisziplin_id = '$quelle_meldung->turnierdisziplin_id' AND rundenstufe = '$rundenstufe'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (empty($rundenstufen) || !in_array($rundenstufe, $rundenstufen)) { - if (count($rows) == 0) - continue; - $ziel_meldung = $rows[0]; - - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $ziel_meldung->turniermeldung_id OR gast_meldung_id = $ziel_meldung->turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $ziel_meldung->turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($quelle_meldung->rundenstufe == $rundenstufe) { - continue; - } - else if (count($rows) == 0) { - $platz = (empty($platzierungen) || !isset($platzierungen[$rundenstufe])) ? 0 : $platzierungen[$rundenstufe]; - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, meldungsgruppe_id, rundenstufe, platz)" - . "\n VALUES ('$quelle_meldung->turnierdisziplin_id', " . (count($rundenstufen) > 1 ? "'$meldungsgruppe_id'" : "NULL") . ", '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_turniermeldung_id = $db->insertid(); - - for ($i = 0; $i < count($quelle_meldung_spieler); $i++) { - $row = $quelle_meldung_spieler[$i]; - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$ziel_turniermeldung_id', " . ($row->spieler_id != null ? "'$row->spieler_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_id = $db->insertid(); - - if ($row->spieler_id == null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ($turniermeldung_spieler_id, '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->vereinsname) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else { - $ziel_meldung = $rows[0]; - if (!empty($platzierungen)) { - $platz = !isset($platzierungen[$rundenstufe]) ? 0 : $platzierungen[$rundenstufe]; - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL") - . "\n WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id ORDER BY turniermeldung_spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_meldung_spieler = $db->loadObjectList(); - if (count($ziel_meldung_spieler) != count($quelle_meldung_spieler)) die("Wrong id!"); - - for ($i = 0; $i < count($quelle_meldung_spieler); $i++) { - $quelle_row = $quelle_meldung_spieler[$i]; - $ziel_row = $ziel_meldung_spieler[$i]; - - $query = "UPDATE #__sportsmanager_turniermeldung_spieler" - . "\n SET spieler_id = " . ($quelle_row->spieler_id != null ? "'$quelle_row->spieler_id'" : "NULL") - . "\n WHERE turniermeldung_spieler_id = $ziel_row->turniermeldung_spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($quelle_row->spieler_id == null && $ziel_row->spieler_id == null) { - $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" - . "\n SET nachname = '" . $db->escape($quelle_row->nachname) . "'," - . "\n vorname = '" . $db->escape($quelle_row->vorname) . "'," - . "\n vereinsname = '" . $db->escape($quelle_row->vereinsname) . "'" - . "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($quelle_row->spieler_id == null && $ziel_row->spieler_id != null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ($ziel_row->turniermeldung_spieler_id, '" . $db->escape($quelle_row->nachname) . "', '" . $db->escape($quelle_row->vorname) . "', '" . $db->escape($quelle_row->vereinsname) . "');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($quelle_row->spieler_id != null && $ziel_row->spieler_id == null) { - $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" - . "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n == 1) { - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET meldungsgruppe_id = NULL" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } -} - -function meldungssgruppe_entfernen($turniermeldung_id) { - $db =& getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 0) die("Wrong id!"); - $meldung = $rows[0]; - $meldungsgruppe_id = $meldung->meldungsgruppe_id != null ? $meldung->meldungsgruppe_id : $turniermeldung_id; - - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $turniermeldung_id OR gast_meldung_id = $turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $turniermeldung_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n == 1) { - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET meldungsgruppe_id = NULL" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } -} - -function adminEditTurnierdisziplinRundenstufe() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - - $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; - - HTML_sportsmanager_admin::adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details); -} - -function adminSaveTurnierdisziplinRundenstufe() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); - - return; - } - - $bezeichnung = $db->escape($jinput->get('bezeichnung', '', 'RAW')); - $typ = $jinput->get('typ', 0, 'INT'); - $runden = $jinput->get('runden', 0, 'INT'); - $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); - $saetze = $jinput->get('saetze', 0, 'INT'); - $tore = $jinput->get('tore', 0, 'INT'); - $spielfelder_erstes = $jinput->get('spielfelder_erstes', 0, 'INT'); - $spielfelder_letztes = $jinput->get('spielfelder_letztes', 0, 'INT'); - - // Sicherstellen, dass Turnierdisziplin zum Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); - - $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_turnierspiel WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; - - if ($rundenstufen_details == null) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . "," - . "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . "," - . "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . "," - . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," - . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$turnierdisziplinid'," - . "\n rundenstufe = '$rundenstufe'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "UPDATE #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = '$bezeichnung'," - . "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . "," - . "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . "," - . "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . "," - . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," - . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," - . "\n spielfelder = null" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (($rundenstufen_details->typ == null && $typ != 0) || ($rundenstufen_details->typ != null && $typ != 0 && $rundenstufen_details->typ != $typ)) { - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else if ($rundenstufen_details->saetze != null && $rundenstufen_details->saetze > $saetze) { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET ergebnis_detailliert = null" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); -} - -function adminRemoveTurnierdisziplinRundenstufe() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); - - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); - if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); - - // Sicherstellen, dass Turnierdisziplin zum Turnier gehört - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; - - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); -} - -function adminSpielerExportBilderForm() { - $db =& getDatabase(); - - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) - $beschraenkter_zugriff = 1; - else - keinZugriff(true); - - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - $query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*" - . "\n FROM #__sportsmanager_veranstalter"; - if ($beschraenkter_zugriff == 1) - $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); - $query .= "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerExportBilder($veranstalter, $beschraenkter_zugriff); -} - -function adminSpielerExportBilder() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) - $beschraenkter_zugriff = 1; - else - keinZugriff(); - - setMinMemoryLimit('256M'); - if (!ini_get('safe_mode')) - set_time_limit(300); - - $filter = $jinput->get('filter', 0, 'INT'); - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - if ($veranstalter_id != 0) { - $query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $veranstalter = $rows[0]; - } - else - $veranstalter = null; - - if ($beschraenkter_zugriff == 1) { - $query = "SELECT DISTINCT veranstalter_id" - . "\n FROM #__sportsmanager_veranstalter" - . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - if (count($veranstalter) == 0) - keinZugriff(); - } - - $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; - if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::create($ziel_bilder_pfad, 0777)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); - - return; - } - - $alte_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden.rstellt werden."); - - return; - } - } - - $query = "SELECT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler"; - if ($veranstalter_id != 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; - if ($filter != 0) - $query .= " AND NOT bild_ausblenden"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - $anzahlSpieler = 0; - foreach ($spieler as $s) { - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . $s->spieler_id . '.'; - if (JFile::exists($pfad . 'png')) - $ext = "png"; - else if (JFile::exists($pfad . 'jpg')) - $ext = "jpg"; - else - continue; - - if (!JFile::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Spieler ' . utf8_decode(bereinigterDateiname($s->nachname . ", " . $s->vorname . (!empty($s->spielernr) ? (" (" . $s->spielernr . ")") : "") . '.' . $ext)))) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Ein Bild (" . $s->spieler_id . ") konnte nicht an die Zielposition kopiert werden."); - - return; - } - $anzahlSpieler++; - } - - /* - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach($neue_bilder as $fn) - array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); - $file = tempnam("tmp", "tar"); - $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; -*/ - - if (class_exists("ZipArchive")) { - $file = tempnam("tmp", "zip"); - $zip = new ZipArchive(); - $zip->open($file, ZipArchive::OVERWRITE); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($neue_bilder as $fn) - $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach ($neue_bilder as $fn) { - $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); - } - $file = tempnam("tmp", "zip"); - $zip_adapter->create($file, $zip_dateien, array()); - } - else { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - foreach ($neue_bilder as $fn) - JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $dateiname = "Spielerbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip"; - $dateiname = bereinigterDateiname($dateiname); - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header("Content-Type: application/zip"); - header("Content-Length: " . filesize($file)); - header("Content-Disposition: attachment; filename=\"" . $dateiname . "\""); - readfile($file); - unlink($file); - die(); -} - -function adminVereineExportBilderForm() { - $db =& getDatabase(); - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineExportBilder($veranstalter); -} - -function adminVereineExportBilder() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); - - return; - } - - setMinMemoryLimit('256M'); - if (!ini_get('safe_mode')) - set_time_limit(300); - - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - if ($veranstalter_id != 0) { - $query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $veranstalter = $rows[0]; - } - else - $veranstalter = null; - - $query = "LOCK TABLES #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; - if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::create($ziel_bilder_pfad, 0777)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); - - return; - } - - $alte_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden."); - - return; - } - } - - $query = "SELECT verein_id, vereinsname" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE NOT ausgetreten"; - if ($veranstalter_id != 0) - $query .= " AND veranstalter_id = $veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - $anzahlVereine = 0; - foreach ($vereine as $v) { - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine' . DIRECTORY_SEPARATOR . $v->verein_id . '.'; - if (JFile::exists($pfad . 'png')) - $ext = "png"; - else if (JFile::exists($pfad . 'jpg')) - $ext = "jpg"; - else - continue; - - if (!JFile::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Verein ' . utf8_decode(bereinigterDateiname($v->vereinsname)) . '.' . $ext)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Ein Bild (" . $v->verein_id . ") konnte nicht an die Zielposition kopiert werden."); - - return; - } - $anzahlVereine++; - } - /* - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach($neue_bilder as $fn) - array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); - $file = tempnam("tmp", "tar"); - $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; -*/ - - if (class_exists("ZipArchive")) { - $file = tempnam("tmp", "zip"); - $zip = new ZipArchive(); - $zip->open($file, ZipArchive::OVERWRITE); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($neue_bilder as $fn) - $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach ($neue_bilder as $fn) { - $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); - } - $file = tempnam("tmp", "zip"); - $zip_adapter->create($file, $zip_dateien, array()); - } - else { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - foreach ($neue_bilder as $fn) - JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $dateiname = "Vereinsbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip"; - $dateiname = bereinigterDateiname($dateiname); - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header("Content-Type: application/zip"); - header("Content-Length: " . filesize($file)); - header("Content-Disposition: attachment; filename=\"" . $dateiname . "\""); - readfile($file); - unlink($file); - die(); -} - -function adminSpielerImportBilderForm() { - $db =& getDatabase(); - - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) - $beschraenkter_zugriff = 1; - else - keinZugriff(true); - - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - $query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*" - . "\n FROM #__sportsmanager_veranstalter"; - if ($beschraenkter_zugriff == 1) - $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); - $query .= "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerImportBilder($veranstalter, $beschraenkter_zugriff); -} - -function adminSpielerImportBilder() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) - $beschraenkter_zugriff = 1; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - $bilder_beibehalten = $jinput->get('bilder_beibehalten', 0, 'INT'); - - if ($beschraenkter_zugriff == 1) { - $query = "SELECT DISTINCT veranstalter_id" - . "\n FROM #__sportsmanager_veranstalter" - . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - if (count($veranstalter) == 0) - keinZugriff(); - } - - $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; - if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::create($quelle_bilder_pfad, 0777)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/import' existiert nicht."); - - return; - } - - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); - - return; - } - } - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); - - return; - } - } - - if (class_exists("ZipArchive")) { - $zip = new ZipArchive; - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); - - return; - } - - for ($i = 0; $i < $zip->numFiles; $i++) { - $filename = $zip->getNameIndex($i); - $fileinfo = pathinfo($filename); - copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); - } - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); - - return; - } - } - else { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); - - $anzahlSpieler = 0; - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; - $neue_bilder_alle = JFolder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$'); - foreach ($neue_bilder_alle as $index => $bild) { - $ppos = strrpos($bild, "."); - if ($ppos === false) - continue; - $len = strlen($bild); - $ext = strtolower(substr($bild, $ppos + 1)); - if ($ext != "jpg" && $ext != "png") - continue; - $lpos = strrpos($bild, "("); - $rpos = $lpos !== false ? strpos($bild, ")", $lpos + 1) : false; - $spielernr = ""; - $name = ""; - if ($lpos !== false && $rpos !== false && $rpos - $lpos > 2) { - $spielernr = substr($bild, $lpos + 1, $rpos - $lpos - 1); - } - else if (strpos($bild, ",") !== false) { - $name = substr($bild, 0, $len - 4); - } - else - $spielernr = substr($bild, 0, $len - 4); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler"; - if ($veranstalter_id != 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) - continue; - $spieler_id = $rows[0]->spieler_id; - } - else if (!empty($name)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler"; - if ($veranstalter_id != 0) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(CONCAT_WS(', ', nachname, vorname), '" . $db->escape($name) . "') = 0" - . "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) - continue; - $spieler_id = $rows[0]->spieler_id; - } - else - continue; - - if ($bilder_beibehalten) { - $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.'; - if (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($ziel_pfad . 'png')) - continue; - } - - $quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild; - $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.' . $ext; - if (!files_identical($quelle_pfad, $ziel_pfad)) { - bildLoeschen("spieler", $spieler_id); - if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 180, 240, 1)) - continue; - } - $anzahlSpieler++; - unset($neue_bilder_alle[$index]); - } - - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - sort($neue_bilder_alle); - - HTML_sportsmanager_admin::adminSpielerImportBilderBericht($anzahlSpieler, $neue_bilder_alle); -} - -function adminVereineImportBilderForm() { - $db =& getDatabase(); - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineImportBilder($veranstalter); -} - -function adminVereineImportBilder() { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); - - return; - } - - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - $bilder_beibehalten = $jinput->get('bilder_beibehalten', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; - if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::create($quelle_bilder_pfad, 0777)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_uebersicht', "Der Ordner 'images/sportsmanager/import' existiert nicht."); - - return; - } - - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); - - return; - } - } - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_uebersicht', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); - - return; - } - } - - if (class_exists("ZipArchive")) { - $zip = new ZipArchive; - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); - - return; - } - - for ($i = 0; $i < $zip->numFiles; $i++) { - $filename = $zip->getNameIndex($i); - $fileinfo = pathinfo($filename); - copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); - } - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_uebersicht', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); - - return; - } - } - else { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); - - $anzahlVereine = 0; - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine'; - $neue_bilder_alle = JFolder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$'); - foreach ($neue_bilder_alle as $index => $bild) { - $ppos = strrpos($bild, "."); - if ($ppos === false) - continue; - $len = strlen($bild); - $ext = strtolower(substr($bild, $ppos + 1)); - if ($ext != "jpg" && $ext != "png") - continue; - if (substr($bild, 0, 7) != "Verein ") - continue; - $name = substr($bild, 7, $len - 11); - if (empty($name)) - continue; - - $query = "SELECT verein_id" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE NOT ausgetreten AND STRCMP(vereinsname, '" . $db->escape($name) . "') = 0"; - if ($veranstalter_id != 0) - $query .= " AND veranstalter_id = $veranstalter_id"; - $query .= "\n LIMIT 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) - continue; - $verein_id = $rows[0]->verein_id; - - if ($bilder_beibehalten) { - $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.'; - if (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($ziel_pfad . 'png')) - continue; - } - - $quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild; - $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.' . $ext; - if (!files_identical($quelle_pfad, $ziel_pfad)) { - bildLoeschen("vereine", $verein_id); - if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 240, 240, 0)) - continue; - } - $anzahlVereine++; - unset($neue_bilder_alle[$index]); - } - - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - sort($neue_bilder_alle); - - HTML_sportsmanager_admin::adminVereineImportBilderBericht($anzahlVereine, $neue_bilder_alle); -} - -function adminTermine($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (benutzerZugriff("termine_aendern")) - $zugriffsebene = 2; - else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - $filter_jahr = $jinput->get('filter_jahr', 0, 'INT'); - if (empty($filter_jahr)) - $filter_jahr = date('Y'); - $filter_veranstaltung = $jinput->get('filter_veranstaltung', '', 'RAW'); - $filter_zusatz = $jinput->get('filter_zusatz', '', 'RAW'); - $filter_land = $jinput->get('filter_land', '', 'RAW'); - - $query = "SELECT DISTINCT YEAR(erster_tag) AS jahr" - . "\n FROM #__sportsmanager_termin" - . "\n ORDER BY erster_tag DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $jahre = $db->loadObjectList(); - - $jahr_gefunden = false; - foreach ($jahre as $jahr) { - if ($jahr->jahr == $filter_jahr) { - $jahr_gefunden = true; - break; - } - } - if (!$jahr_gefunden && !empty($jahre)) - $filter_jahr = $jahre[0]->jahr; - - $query = "SELECT *, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"; - if (!empty($filter_veranstaltung)) - $query .= " AND bezeichnung = '" . $db->escape($filter_veranstaltung) . "'"; - if (!empty($filter_zusatz)) - $query .= " AND EXISTS(SELECT * FROM #__sportsmanager_termin_zusatz WHERE termin_id = #__sportsmanager_termin.termin_id AND zusatz = '" . $db->escape($filter_zusatz) . "')"; - if (!empty($filter_land)) - $query .= " AND land = '" . $db->escape($filter_land) . "'"; - $query .= "\n GROUP BY termin_id" - . "\n ORDER BY erster_tag, bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termine = $db->loadObjectList(); - - $query = "SELECT termin_id, termin_symbol_id" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n ORDER BY termin_symbolanzeige_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbole = $db->loadObjectList(); - - $termineSymbole = array(); - foreach ($terminsymbole as $termin) { - $termin_id = $termin->termin_id; - $termin_symbol_id = $termin->termin_symbol_id; - if (!isset($termineSymbole[$termin_id])) - $termineSymbole[$termin_id] = array(); - array_push($termineSymbole[$termin_id], $termin_symbol_id); - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_termin_aktion" - . "\n WHERE status = 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahl_beantragte_termine = $db->loadResult(); - - $query = "SELECT bezeichnung" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN #__sportsmanager_termin_bezeichnung USING (bezeichnung)" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY bezeichnung" - . "\n ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $query = "SELECT bezeichnungszusatz, titel" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n INNER JOIN #__sportsmanager_termin_bezeichnungszusatz ON bezeichnungszusatz = zusatz" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY bezeichnungszusatz" - . "\n ORDER BY IF(titel = '', bezeichnungszusatz, titel)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zusaetze = $db->loadObjectList(); - - $query = "SELECT land" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN (SELECT land FROM #__sportsmanager_termin_land UNION SELECT bundesland AS land FROM #__sportsmanager_termin_bundesland) AS land_bundesland USING (land)" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY land" - . "\n ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); - - if (isJson()) { - JSON_sportsmanager::JSON($termine); - } else { - HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $veranstaltungen, $zusaetze, $laender, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase()); - - if (!$admin_uebersicht) { - administrationFooter(); - } - } -} - -function adminEditTermin($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (benutzerZugriff("termine_aendern")) - $zugriffsebene = 2; - else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - if ($zugriffsebene == 0) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $uebersicht = $jinput->get('uebersicht', 0, 'INT'); - $ueberarbeiten = $jinput->get('ueberarbeiten', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - - if (empty($id)) { - $termin = null; - $terminsymbolanzeige = null; - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Der bisherige Termin existiert nicht mehr."); - - return; - } - $termin = $rows[0]; - - $query = "SELECT termin_symbol_id" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)" - . "\n WHERE termin_id = $termin->termin_id" - . "\n ORDER BY termin_symbolanzeige_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbolanzeige = $db->loadObjectList(); - } - - $query = "SELECT termin_symbol_id, symboltitel, status" - . "\n FROM #__sportsmanager_termin_symbol" - . "\n ORDER BY status DESC, symboltitel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbole = $db->loadObjectList(); - - $benachrichtigung_email = ""; - if (empty($id)) { - $aktion_user =& JFactory::getUser(); - if (!empty($aktion_user->id) && !empty($aktion_user->email)) { - $benachrichtigung_email = $aktion_user->email; - } - } - else { - $benachrichtigung_email = $termin->benachrichtigung_email; - } - - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungen = $db->loadObjectList(); - - if (!empty($id)) { - $bezeichnung_vorauswahl = null; - } - else { - // Häufigste Bezeichnung suchen - $query = "SELECT bezeichnung" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE DATEDIFF(erster_tag, CURDATE()) >= -365 AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY bezeichnung" - . "\n ORDER BY COUNT(*) DESC" - . "\n LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $bezeichnung_vorauswahl = count($rows) > 0 ? $rows[0]->bezeichnung : null; - } - - if (empty($id)) { - $zusaetze = null; - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_zusatz" - . "\n LEFT JOIN #__sportsmanager_termin_bezeichnungszusatz ON zusatz = bezeichnungszusatz" - . "\n WHERE termin_id = $id AND ISNULL(termin_bezeichnungszusatz_id)" - . "\n ORDER BY zusatz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zusaetze = $db->loadObjectList(); - } - - if (empty($id)) { - $query = "SELECT *, NULL AS termin_zusatz_id" - . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" - . "\n ORDER BY bezeichnungszusatz"; - } - else { - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz ON termin_id = $id AND bezeichnungszusatz = zusatz" - . "\n ORDER BY bezeichnungszusatz"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungszusaetze = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_termin_bundesland ORDER BY bundesland"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bundeslaender = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte); -} - -function adminSaveTermin($admin_uebersicht) { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (benutzerZugriff("termine_aendern")) - $zugriffsebene = 2; - else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - if ($zugriffsebene == 0 || isExternalDatabase()) - keinZugriff(); - - $uebersicht = $jinput->get('uebersicht', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $vorhandener_termin = !empty($id); - $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); - $mehrtaegig = $jinput->get('mehrtaegig', 0, 'INT'); - if (!$mehrtaegig) - $letzter_tag = $erster_tag; - else - $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); - if (empty($erster_tag) || empty($letzter_tag)) die("Wrong date!"); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $bezeichnungszusaetze = $jinput->get('bezeichnungszusaetze', array(), 'ARRAY'); - $bezeichnungszusatz_benutzerdefiniert = trim($jinput->get('bezeichnungszusatz_benutzerdefiniert', '', 'RAW')); - if (!empty($bezeichnungszusatz_benutzerdefiniert)) - array_push($bezeichnungszusaetze, $bezeichnungszusatz_benutzerdefiniert); - $ort = $db->escape(trim($jinput->get('ort', '', 'RAW'))); - $land = $db->escape(trim($jinput->get('land', '', 'RAW'))); - $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); - $info = $jinput->get('info', 0, 'INT'); - $url = $info == 0 ? $db->escape(trim($jinput->get('url', '', 'RAW'))) : ''; - $email = $db->escape(trim($jinput->get('email', '', 'RAW'))); - $ergebnisse_url = $db->escape(trim($jinput->get('ergebnisse_url', '', 'RAW'))); - $bestaetigt = $jinput->get('bestaetigt', 0, 'INT'); - $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); - $ueberarbeiten = $jinput->get('ueberarbeiten', 0, 'INT'); - $ergebnisse_live = $jinput->get('ergebnisse_live', 0, 'INT'); - $benachrichtigung_email = $db->escape(trim(str_replace(';', ',', $jinput->get('benachrichtigung_email', '', 'RAW')))); - - // Sicherstellen, dass Überarbeitenaktionen nur durchgeführt werden wenn tatsächlich ein bestehender Termin dahinter steht und der Benutzer Moderator ist - if ($ueberarbeiten && (empty($id) || $zugriffsebene != 2)) - die ("Wrong id"); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE, #__sportsmanager_termin_zusatz WRITE, #__sportsmanager_termin_symbolanzeige WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $termin_bezug_id = 0; - if (!empty($id)) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf'), "Der bisherige Termin existiert nicht mehr."); - } - $termin = $rows[0]; - $termin_bezug_id = $termin->termin_bezug_id; - } - - $query = "INSERT #__sportsmanager_termin" - . "\n SET termin_bezug_id = '$termin_bezug_id'," - . "\n erster_tag = '$erster_tag'," - . "\n letzter_tag = '$letzter_tag'," - . "\n bezeichnung = '$bezeichnung'," - . "\n beschreibung = '$beschreibung'," - . "\n ort = '$ort'," - . "\n land = '$land'," - . "\n url = '$url'," - . "\n email = '$email'," - . "\n ergebnisse_url = '$ergebnisse_url'," - . "\n ergebnisse_live = '$ergebnisse_live'," - . "\n bestaetigt = '$bestaetigt'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $neuer_termin_id = $db->insertid(); - - foreach ($bezeichnungszusaetze as $bezeichnungszusatz) { - $query = "INSERT #__sportsmanager_termin_zusatz" - . "\n SET termin_id = $neuer_termin_id," - . "\n zusatz = '" . $db->escape($bezeichnungszusatz) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - for ($i = 0; $i <= 5; $i++) { - $symbol_id = JRequest::getInt('symbol_id_' . $i, 0); - if ($symbol_id != 0) { - $query = "INSERT #__sportsmanager_termin_symbolanzeige" - . "\n SET termin_id = $neuer_termin_id," - . "\n termin_symbol_id = $symbol_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - if (!$vorhandener_termin) { - $query = "UPDATE #__sportsmanager_termin" - . "\n SET termin_bezug_id = $neuer_termin_id" - . "\n WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - $dokument_kopieren_gescheitert = 0; - $info_dokument = $_FILES['info_dokument']; - if ($info == 1 && !empty($id)) { - $dokumente = JFolder::files($bilder_pfad, '^' . $id . ' '); - if (empty($dokumente)) { - $dokument_kopieren_gescheitert = 2; - } - else { - $info_dokument_dateiname = substr($dokumente[0], strlen((string) $id) + 1); - $quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $dokumente[0]; - $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname; - if (!JFile::copy($quelle_pfad, $ziel_pfad)) - $dokument_kopieren_gescheitert = 2; - } - } - else if ($info == 2 && isset($info_dokument) && !$info_dokument['error']) { - $info_dokument_dateiname = JFile::makeSafe($info_dokument["name"]); - if ($info_dokument["size"] > 8388608) { - $dokument_kopieren_gescheitert = 1; - } - else { - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname; - if (!JFile::upload($info_dokument["tmp_name"], $ziel_pfad)) - $dokument_kopieren_gescheitert = 2; - } - } - - if (!empty($dokument_kopieren_gescheitert)) { - $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_termin_zusatz WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_termin WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der Termin wurde nicht erstellt weil der Anhang " . ($dokument_kopieren_gescheitert == 1 ? "zu groß ist." : "nicht kopiert werden konnte.")); - - return; - } - - if ($vorhandener_termin && $zugriffsebene != 1) { - $query = "SELECT DISTINCT termin_id" - . "\n FROM #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n SET status = 1" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $user_id = JFactory::getUser()->id; - $query = "INSERT #__sportsmanager_termin_aktion" - . "\n SET termin_id = $neuer_termin_id," - . "\n typ = '" . ($vorhandener_termin ? 1 : 0) . "'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen - . "\n benachrichtigung_email = '$benachrichtigung_email'," - . "\n aktion_user_id = '" . ($ueberarbeiten ? $termin->aktion_user_id : $user_id) . "'," - . "\n aktion_zeitpunkt = " . ($ueberarbeiten ? ("'$termin->aktion_zeitpunkt'") : "NOW()") . "," - . "\n aktion_kommentar = '" . ($ueberarbeiten ? $db->escape($termin->aktion_kommentar) : $kommentar) . "'," - . "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . "," - . "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . "," - . "\n moderation_kommentar = '" . ($ueberarbeiten ? $kommentar : "") . "'," - . "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termin_aktion_id = $db->insertid(); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten); - - if ($zugriffsebene == 1) { - HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht); - } - else { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); - } -} - -function adminRemoveTerminForm($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (benutzerZugriff("termine_aendern")) - $zugriffsebene = 2; - else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - if ($zugriffsebene == 0 || isExternalDatabase()) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr."); - } - $terminaktion = $rows[0]; - - HTML_sportsmanager_admin::adminRemoveTermin($terminaktion, $nur_beantragte, $zugriffsebene, $admin_uebersicht); -} - -function adminRemoveTermin($admin_uebersicht) { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (benutzerZugriff("termine_aendern")) - $zugriffsebene = 2; - else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - if ($zugriffsebene == 0 || isExternalDatabase()) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr."); - } - $termin = $rows[0]; - $termin_bezug_id = $termin->termin_bezug_id; - - if ($zugriffsebene != 1) { - $query = "SELECT DISTINCT termin_id" - . "\n FROM #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n SET status = 1" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $user_id = JFactory::getUser()->id; - $query = "INSERT #__sportsmanager_termin_aktion" - . "\n SET termin_id = $id," - . "\n typ = '2'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen - . "\n aktion_user_id = '$user_id'," - . "\n aktion_zeitpunkt = NOW()," - . "\n aktion_kommentar = '$kommentar'," - . "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . "," - . "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . "," - . "\n moderation_kommentar = ''," - . "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termin_aktion_id = $db->insertid(); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termineEmailBenachrichtigung($termin_aktion_id); - - if ($zugriffsebene == 1) { - HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht); - } - else { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); - } -} - -// $aktion = 0: Beantragt, 1: ... -function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false) { - $db =& getDatabase(); - $app = &JFactory::getApplication(); - - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" - . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" - . "\n WHERE termin_aktion_id = $termin_aktion_id" - . "\n GROUP BY #__sportsmanager_termin.termin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) return false; - $terminaktion = $rows[0]; - - $benachrichtigung_moderatoren_informieren = array(); - $benachrichtigung_moderatoren_aendern = array(); - $query = "SELECT DISTINCT email, IF(EXISTS(SELECT * FROM #__sportsmanager_moderator_zugriff AS m2 WHERE zugriff = 'termine_aendern' AND m2.moderator_id = #__sportsmanager_moderator_zugriff.moderator_id), 1, 0) AS termine_aendern" - . "\n FROM #__sportsmanager_moderator" - . "\n INNER JOIN #__sportsmanager_moderator_zugriff USING (moderator_id)" - . "\n INNER JOIN #__users ON moderator_user_id = id" - . "\n WHERE zugriff = 'termine_benachrichtigung'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - if ($row->termine_aendern) - array_push($benachrichtigung_moderatoren_aendern, $row->email); - else - array_push($benachrichtigung_moderatoren_informieren, $row->email); - } - - $benachrichtigung_benutzer = array(); - $aktion_user =& JFactory::getUser($terminaktion->aktion_user_id); - if (($terminaktion->status == 2 && !empty($aktion_user->id) && !empty($aktion_user->email)) || ($terminaktion->status != 2 && !empty($aktion_user->id) && !empty($aktion_user->email) && ($terminaktion->aktion_user_id != $terminaktion->moderation_user_id || $terminaktion->aktion_zeitpunkt != $terminaktion->moderation_zeitpunkt))) - array_push($benachrichtigung_benutzer, $aktion_user->email); - $benachrichtigung_emails = explode(",", $terminaktion->benachrichtigung_email); - $benachrichtigung_alle_low = array_map('strtolower', array_merge($benachrichtigung_benutzer, $benachrichtigung_moderatoren_aendern, $benachrichtigung_moderatoren_informieren)); - foreach ($benachrichtigung_emails as $email) { - $email_trimmed = trim($email); - if (!in_array(strtolower($email_trimmed), $benachrichtigung_alle_low)) - array_push($benachrichtigung_benutzer, $email_trimmed); - } - - $termin_beschreibung = "\r\n" - . "Datum:\r\n" - . "" . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true) . ($terminaktion->bestaetigt ? "" : " (in Planung)") . "\r\n" - . "\r\n" - . "\r\n" - . "Veranstaltung:\r\n" - . "" . htmlentities_utf8($terminaktion->bezeichnung) . "\r\n" - . "\r\n"; - if (!empty($terminaktion->zusaetze)) { - $termin_beschreibung .= "\r\n" - . "Zusätze:\r\n" - . "" . htmlentities_utf8($terminaktion->zusaetze) . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->ort)) { - $termin_beschreibung .= "\r\n" - . "Ort:\r\n" - . "" . htmlentities_utf8($terminaktion->ort) . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->land)) { - $termin_beschreibung .= "\r\n" - . "Land:\r\n" - . "" . htmlentities_utf8($terminaktion->land) . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->beschreibung)) { - $termin_beschreibung .= "\r\n" - . "Beschreibung:\r\n" - . "" . htmlentities_utf8($terminaktion->beschreibung) . "\r\n" - . "\r\n"; - } - $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); - if ($info_dokument_dateiname !== false) { - $termin_beschreibung .= "\r\n" - . "Weitere Informationen:\r\n" - . "termin_id, -1) . "\" target=\"_blank\">" . htmlentities_utf8(NichtLeererString($info_dokument_dateiname)) . "\r\n" - . "\r\n"; - } - else if (!empty($terminaktion->url)) { - if (strpos($terminaktion->url, "://") === false) { - $termin_url_anzeige = $terminaktion->url; - $termin_url = "http://" . $terminaktion->url; - } - else { - $termin_url_anzeige = substr($terminaktion->url, 0, 7) == "http://" ? substr($terminaktion->url, 7) : $terminaktion->url; - $termin_url = $terminaktion->url; - } - $termin_beschreibung .= "\r\n" - . "Weitere Informationen:\r\n" - . "" . htmlentities_utf8($termin_url_anzeige) . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->email)) { - $termin_beschreibung .= "\r\n" - . "E-Mail öffentlich:\r\n" - . "email) . "\">" . htmlentities_utf8($terminaktion->email) . "\r\n" - . "\r\n"; - } - if (!empty($benachrichtigung_emails)) { - $termin_beschreibung .= "\r\n" - . "E-Mail bei Änderungen:\r\n" - . ""; - foreach ($benachrichtigung_emails as $index => $email) { - $email_trimmed = trim($email); - $termin_beschreibung .= ($index > 0 ? ", " : "") . "" . htmlentities_utf8($email_trimmed) . ""; - } - $termin_beschreibung .= "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->ergebnisse_url)) { - if (strpos($terminaktion->ergebnisse_url, "://") === false) { - $termin_url_anzeige = $terminaktion->ergebnisse_url; - $termin_url = "http://" . $terminaktion->ergebnisse_url; - } - else { - $termin_url_anzeige = substr($terminaktion->ergebnisse_url, 0, 7) == "http://" ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; - $termin_url = $terminaktion->ergebnisse_url; - } - $termin_beschreibung .= "\r\n" - . "" . ($terminaktion->ergebnisse_live ? "Live-" : "") . "Ergebnisse:\r\n" - . "" . htmlentities_utf8($termin_url_anzeige) . "\r\n" - . "\r\n"; - } - - $status = array(0 => "Akzeptiert", 1 => "Archiviert", 2 => "Beantragt", 3 => "Abgelehnt"); - $aktion = array(0 => "Hinzufügen", 1 => "Ändern", 2 => "Entfernen"); - if (empty($terminaktion->aktion_user_email)) - $aktion_user = htmlentities_utf8($terminaktion->aktion_user_name); - else - $aktion_user = "aktion_user_email) . "\">" . htmlentities_utf8($terminaktion->aktion_user_name) . ""; - if (empty($terminaktion->moderation_zeitpunkt)) - $moderation_user = ""; - else if (empty($terminaktion->aktion_user_email)) - $moderation_user = htmlentities_utf8($terminaktion->moderation_user_name); - else - $moderation_user = "moderation_user_email) . "\">" . htmlentities_utf8($terminaktion->moderation_user_name) . ""; - $termin_moderationsstatus = "\r\n" - . " \r\n" - . "\r\n" - . "\r\n" - . "Status:\r\n" - . "" . htmlentities_utf8($status[$terminaktion->status]) . "\r\n" - . "\r\n" - . "\r\n" - . "Aktionstyp:\r\n" - . "" . htmlentities_utf8($aktion[$terminaktion->typ]) . "\r\n" - . "\r\n" - . "\r\n" - . "Erstellung:\r\n" - . "" . FormatiertesDatum($terminaktion->aktion_zeitpunkt, true, false) . " von " . $aktion_user . "\r\n" - . "\r\n"; - if (!empty($terminaktion->aktion_kommentar)) { - $termin_moderationsstatus .= "\r\n" - . "Erstellerkommentar:\r\n" - . "" . nl2br(htmlentities_utf8($terminaktion->aktion_kommentar)) . "\r\n" - . "\r\n"; - } - $termin_moderationsstatus .= "\r\n" - . "Moderation:\r\n" - . "" . (empty($terminaktion->moderation_zeitpunkt) ? "Nicht erfolgt" : (FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . $moderation_user)) . "\r\n" - . "\r\n"; - if (!empty($terminaktion->moderation_kommentar)) { - $termin_moderationsstatus .= "\r\n" - . "Moderatorkommentar:\r\n" - . "" . nl2br(htmlentities_utf8($terminaktion->moderation_kommentar)) . "\r\n" - . "\r\n"; - } - - $from = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $mode = 1; - $cc = null; - $bcc = null; - $attachment = null; - $replyto = null; - $replytoname = null; - if ($terminaktion->status == 2) { - $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); - $body = "

Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde beantragt und wird nun von den Moderatoren geprüft. Sobald der Termin bearbeitet wurde, wird eine E-Mail-Benachrichtigung verschickt.

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

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

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

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

\r\n"; - } - else if ($terminaktion->status == 0) { - $subject = "Termin " . $aktion[$terminaktion->typ] . " akzeptiert von " . $terminaktion->moderation_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); - $body = "

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

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

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

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

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

\r\n"; - foreach ($benachrichtigung_moderatoren_aendern as $email) - JFactory::getMailer()->sendMail($from, $fromname, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname); -} - -function adminTerminModerieren($admin_uebersicht) { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern") || isExternalDatabase()) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - $uebersicht = $jinput->get('uebersicht', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); - - return; - } - - if ($jinput->get('ueberarbeiten', false, 'BOOL')) { - $termin_id = $jinput->get('termin_id', 0, 'INT'); - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termin_edit&ueberarbeiten=1&id=' . $termin_id . ($nur_beantragte ? '&nur_beantragte=1' : '')); - - return; - } - - $akzeptieren = $jinput->get('akzeptieren', false, 'BOOL'); - $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_aktion_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $terminaktion = $rows[0]; - $termin_bezug_id = $terminaktion->termin_bezug_id; - - if ($terminaktion->status != 2) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Die Moderation wurde nicht umgesetzt weil der Termin nicht mehr im Beantragt-Status war."); - } - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - if ($akzeptieren) { - $query = "SELECT DISTINCT termin_id" - . "\n FROM #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - - if ($terminaktion->typ == 2) { - $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n SET status = 1" - . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - if ($terminaktion->typ != 2) { - $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - } - - $user_id = JFactory::getUser()->id; - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" - . "\n SET status = " . ($akzeptieren ? 0 : 3) . "," - . "\n moderation_user_id = $user_id," - . "\n moderation_zeitpunkt = NOW()," - . "\n moderation_kommentar = '$kommentar'" - . "\n WHERE termin_aktion_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termineEmailBenachrichtigung($id); - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); -} - -function adminTermineVerlauf($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - - if ($nur_beantragte) { - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n LEFT JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" - . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" - . "\n WHERE status = 2" - . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" - . "\n ORDER BY aktion_zeitpunkt, bezeichnung" - . "\n LIMIT 1000"; - } - else { - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" - . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" - . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" - . "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung" - . "\n LIMIT 1000"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminaktionen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineVerlauf($terminaktionen, $nur_beantragte, $admin_uebersicht); -} - -function terminDokument() { - $db =& getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $bezug_id = $jinput->get('bezug_id', 0, 'INT'); - - if (benutzerZugriff("termine_aendern") || benutzerZugriff("termine_benachrichtigung")) - $zugriffsebene = 1; - else - $zugriffsebene = 0; - - if (!empty($bezug_id)) { - $query = "SELECT termin_id" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_bezug_id = $bezug_id AND status = 0 AND (typ = 0 OR typ = 1)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $termin_vorhanden = count($rows) > 0; - if ($termin_vorhanden) - $id = $rows[0]->termin_id; - } - else { - $query = "SELECT IF (EXISTS (SELECT *" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_id = $id" . ($zugriffsebene == 0 ? " AND status = 0 AND (typ = 0 OR typ = 1)" : "") . "), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termin_vorhanden = $db->loadResult(); - } - - if (!$termin_vorhanden) - keinZugriff(true); - - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - $dokumente = JFolder::files($pfad, '^' . $id . ' '); - - if (empty($dokumente)) { - redirectSportsManagerURL(null, "Der Anhang existiert nicht mehr."); - - return; - } - - $extension = strtolower(JFile::getExt($dokumente[0])); - if ($extension == "pdf") - $mm_type = "application/pdf"; - else - $mm_type = "application/octet-stream"; - - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header("Pragma: public"); - header("Expires: 0"); - header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); - header("Cache-Control: public"); - header("Content-Description: File Transfer"); - header("Content-Type: " . $mm_type); - header("Content-Length: " . (string) (filesize($pfad . DIRECTORY_SEPARATOR . $dokumente[0]))); - header('Content-Disposition: inline; filename="' . substr($dokumente[0], strlen((string) $id) + 1) . '"'); - header("Content-Transfer-Encoding: binary\n"); - - readfile($pfad . DIRECTORY_SEPARATOR . $dokumente[0]); - - exit(); -} - -function adminTerminDetails($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); - $uebersicht = $jinput->get('uebersicht', 0, 'INT'); - - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" - . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" - . "\n WHERE termin_aktion_id = $id" - . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $terminaktion = $rows[0]; - - $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" - . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" - . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" - . "\n WHERE termin_bezug_id = $terminaktion->termin_bezug_id" - . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" - . "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminaktionen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, isExternalDatabase()); -} - -function adminTermineBezeichnungen($admin_uebersicht) { - $db =& getDatabase(); - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bezeichnung" - . "\n ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineBezeichnungen($bezeichnungen, $admin_uebersicht); -} - -function adminEditTermineBezeichnung($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if (empty($id)) { - $bezeichnung = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bezeichnung = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht); -} - -function adminSaveTermineBezeichnung($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bezeichnung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (!empty($id) && $termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $alte_bezeichnung = $db->escape($rows[0]->bezeichnung); - - $query = "UPDATE #__sportsmanager_termin" - . "\n SET bezeichnung = '$bezeichnung'" - . "\n WHERE bezeichnung = '$alte_bezeichnung'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE bezeichnung = '$bezeichnung' AND termin_bezeichnung_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // Datenbankeintrag verwerfen, falls Bezeichnung schon existiert - if (count($rows) > 0) { - if (!empty($id)) { - $query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (empty($id)) { - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '$bezeichnung'"; - } - else { - $query = "UPDATE #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '$bezeichnung'" - . "\n WHERE termin_bezeichnung_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); -} - -function adminRemoveTermineBezeichnung($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); -} - -function adminTermineBezeichnungszusaetze($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" - . "\n ORDER BY bezeichnungszusatz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungszusaetze = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineBezeichnungszusaetze($bezeichnungszusaetze, $admin_uebersicht); -} - -function adminEditTermineBezeichnungszusatz($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if (empty($id)) { - $bezeichnungszusatz = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bezeichnungszusatz = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht); -} - -function adminSaveTermineBezeichnungszusatz($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bezeichnungszusatz = $db->escape(trim($jinput->get('bezeichnungszusatz', '', 'RAW'))); - $titel = $db->escape(trim($jinput->get('titel', '', 'RAW'))); - $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bezeichnungszusatz WRITE, #__sportsmanager_termin_zusatz WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (!empty($id) && $termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $alter_bezeichnungszusatz = $db->escape($rows[0]->bezeichnungszusatz); - - $query = "UPDATE #__sportsmanager_termin_zusatz" - . "\n SET zusatz = '$bezeichnungszusatz'" - . "\n WHERE zusatz = '$alter_bezeichnungszusatz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE bezeichnungszusatz = '$bezeichnungszusatz' AND termin_bezeichnungszusatz_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // Datenbankeintrag verwerfen, falls Bezeichnungszusatz schon existiert - if (count($rows) > 0) { - if (!empty($id)) { - $query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (empty($id)) { - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = '$bezeichnungszusatz'," - . "\n titel = '$titel'"; - } - else { - $query = "UPDATE #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = '$bezeichnungszusatz'," - . "\n titel = '$titel'" - . "\n WHERE termin_bezeichnungszusatz_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); -} - -function adminRemoveTermineBezeichnungszusatz($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); -} - -function adminTermineBundeslaender($admin_uebersicht) { - $db =& getDatabase(); - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bundesland" - . "\n ORDER BY bundesland"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bundeslaender = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineBundeslaender($bundeslaender, $admin_uebersicht); -} - -function adminEditTermineBundesland($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if (empty($id)) { - $bundesland = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bundesland = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTermineBundesland($bundesland, $admin_uebersicht); -} - -function adminSaveTermineBundesland($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $bundesland = $db->escape(trim($jinput->get('bundesland', '', 'RAW'))); - $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bundesland WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $altes_bundesland = $db->escape($rows[0]->bundesland); - - $query = "UPDATE #__sportsmanager_termin" - . "\n SET land = '$bundesland'" - . "\n WHERE land = '$altes_bundesland'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE bundesland = '$bundesland' AND termin_bundesland_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // Datenbankeintrag verwerfen, falls Bundesland schon existiert - if (count($rows) > 0) { - if (!empty($id)) { - $query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (empty($id)) { - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = '$bundesland'"; - } - else { - $query = "UPDATE #__sportsmanager_termin_bundesland" - . "\n SET bundesland = '$bundesland'" - . "\n WHERE termin_bundesland_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); -} - -function adminRemoveTermineBundesland($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); -} - -function adminTermineLaender($admin_uebersicht) { - $db =& getDatabase(); - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_land" - . "\n ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineLaender($laender, $admin_uebersicht); -} - -function adminEditTermineLand($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if (empty($id)) { - $land = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $land = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTermineLand($land, $admin_uebersicht); -} - -function adminSaveTermineLand($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $land = $db->escape(trim($jinput->get('land', '', 'RAW'))); - $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_land WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $altes_bundesland = $db->escape($rows[0]->bundesland); - - $query = "UPDATE #__sportsmanager_termin" - . "\n SET land = '$land'" - . "\n WHERE land = '$altes_land'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_termin_land WHERE land = '$land' AND termin_land_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // Datenbankeintrag verwerfen, falls Bundesland schon existiert - if (count($rows) > 0) { - if (!empty($id)) { - $query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - if (empty($id)) { - $query = "INSERT #__sportsmanager_termin_land" - . "\n SET land = '$land'"; - } - else { - $query = "UPDATE #__sportsmanager_termin_land" - . "\n SET land = '$land'" - . "\n WHERE termin_land_id = $id"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); -} - -function adminRemoveTermineLand($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); -} - -function adminTermineSymbole($admin_uebersicht) { - $db =& getDatabase(); - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_symbol" - . "\n ORDER BY status DESC, symboltitel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $symbole = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTermineSymbole($symbole, $admin_uebersicht); -} - -function adminEditTermineSymbol($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if (empty($id)) { - $symbol = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $symbol = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTermineSymbol($symbol, $admin_uebersicht); -} - -function adminSaveTermineSymbol($admin_uebersicht) { - $db =& getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - if (JRequest::getBool('cancel')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); - - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $symboltitel = $db->escape(trim($jinput->get('symboltitel', '', 'RAW'))); - $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); - $status = $jinput->get('status', 0, 'INT'); - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_termin_symbol (symboltitel,status)" - . "\n VALUES ('$symboltitel', '$status');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_termin_symbol" - . "\n SET symboltitel = '$symboltitel', " - . "\n status = '$status'" - . "\n WHERE termin_symbol_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($bildbeibehalten == 0) { - bildLoeschen('terminsymbole', $id); - - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole'; - if (!JFile::copy($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); - - return; - } - } - } - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); -} - -function adminRemoveTermineSymbol($admin_uebersicht) { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_termin_symbolanzeige WRITE, #__sportsmanager_termin_symbol WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_symbol_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("terminsymbole", $id); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); -} - -function adminEditIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $vorlage = $jinput->get('vorlage', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern")) - keinZugriff(true); - - if ($id == 0) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 6 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (empty($id)) { - $berechtigt_fuer_individualwettbewerb = array(); - } - else { - $query = "SELECT #__sportsmanager_berechtigt_fuer_individualwettbewerb.* FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb, #__users WHERE berechtigt_user_id = id AND berechtigt_individualwettbewerb_id = $id ORDER BY username, name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_individualwettbewerb = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage); -} - -function adminSaveIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("individualwettbewerbe_aendern")) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $vorlage = $jinput->get('vorlage', 0, 'INT'); - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); - $saison_id = $jinput->get('saison_id', 0, 'INT'); - $saetze = $jinput->get('saetze', 0, 'INT'); - $tore = $jinput->get('tore', 0, 'INT'); - $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); - $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); - $status = $jinput->get('status', 0, 'INT'); - $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); - $kategorie = $jinput->get('kategorie', 0, 'INT'); - $berechtigt_fuer_individualwettbewerb_user_ids = array(); - for ($i = 1; $i <= 6; $i++) { - $berechtigt_user_id = $jinput->get('berechtigt_fuer_individualwettbewerb_user_' . $i . '_id', 0, 'INT'); - if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids)) - array_push($berechtigt_fuer_individualwettbewerb_user_ids, $berechtigt_user_id); - } - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_berechtigt_fuer_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_platzierung READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $elo_aktualisieren = false; - if ($vorlage) { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $query = "INSERT #__sportsmanager_individualwettbewerb" - . "\n SET veranstalter_id = '$veranstalterid'," - . "\n bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," - . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," - . "\n tabellenwertung = '$tabellenwertung'," - . "\n elo_wertung = '$elo_wertung'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - foreach ($rows as $row) { - $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET individualwettbewerb_id = '$id'," - . "\n spieler_id = '" . $row->spieler_id . "'," - . "\n platz = '" . $row->platz . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else if ($id == 0) { - $query = "INSERT #__sportsmanager_individualwettbewerb" - . "\n SET veranstalter_id = '$veranstalterid'," - . "\n bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," - . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," - . "\n tabellenwertung = '$tabellenwertung'," - . "\n elo_wertung = '$elo_wertung'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); - - return; - } - $row = $rows[0]; - - $query = "UPDATE #__sportsmanager_individualwettbewerb" - . "\n SET veranstalter_id = '$veranstalterid'," - . "\n bezeichnung = '$bezeichnung'," - . "\n saison_id = '$saison_id'," - . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," - . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," - . "\n tabellenwertung = '$tabellenwertung'," - . "\n elo_wertung = '$elo_wertung'," - . "\n status = '$status'," - . "\n reihenfolge = '$reihenfolge'," - . "\n kategorie = '$kategorie'" - . "\n WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0)) - $elo_aktualisieren = true; - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; - if (!empty($berechtigt_fuer_individualwettbewerb_user_ids)) - $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_individualwettbewerb_user_ids, ", ") . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids); - if ($index !== false) { - unset($berechtigt_fuer_individualwettbewerb_user_ids[$index]); - } - } - - foreach ($berechtigt_fuer_individualwettbewerb_user_ids as $berechtigt_user_id) { - $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_individualwettbewerb (berechtigt_user_id, berechtigt_individualwettbewerb_id) VALUES ('$berechtigt_user_id', '$id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - individualwettbewerbTabelleAktualisieren($id); - spielerstatistikAktualisieren(0, 0, $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function individualwettbewerbTabelleAktualisieren($id = null) { - $db =& getDatabase(); - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb_platzierung WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung READ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb"; - if (!empty($id)) - $query .= "\n WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - foreach ($individualwettbewerbe as $individualwettbewerb) { - $individualwettbewerb_id = $individualwettbewerb->individualwettbewerb_id; - if ($individualwettbewerb->tabellenwertung == 0) { - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $individualwettbewerb_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - continue; - } - - $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" - . "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); - - foreach ($spiele as $spiel) { - if ($spiel->ergebnis == 0) - continue; - if ($spiel->heim_spieler_2_id != null) // Bis auf Weiteres keine Doppelspiele für Tabelle berücksichtigen - continue; - $sieger_spieler_id = $spiel->ergebnis == 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id; - $verlierer_spieler_id = $spiel->ergebnis != 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id; - - if (!in_array($verlierer_spieler_id, $platzierungen)) - array_push($platzierungen, $verlierer_spieler_id); - - $sieger_platzierung = array_search($sieger_spieler_id, $platzierungen); - $verlierer_platzierung = array_search($verlierer_spieler_id, $platzierungen); - if ($sieger_platzierung !== false) { - if ($sieger_platzierung < $verlierer_platzierung) - continue; - array_splice($platzierungen, $sieger_platzierung, 1); - } - array_splice($platzierungen, $verlierer_platzierung, 0, $sieger_spieler_id); - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $platzierungen_vorhanden = $db->loadObjectList(); - - $platzierungen_uebrig = $platzierungen; - foreach ($platzierungen_vorhanden as $platzierung_vorhanden) { - $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); - if ($index !== false) { - $platz = $index + 1; - if ($platzierung_vorhanden->platz != $platz) { - $query = "UPDATE #__sportsmanager_individualwettbewerb_platzierung" - . "\n SET platz = '$platz'" - . "\n WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); - unset($platzierungen_uebrig[$index_uebrig]); - } - else { - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($platzierungen_uebrig as $platzierung_uebrig) { - $index = array_search($platzierung_uebrig, $platzierungen); - $platz = $index + 1; - $query = "INSERT #__sportsmanager_individualwettbewerb_platzierung" - . "\n SET individualwettbewerb_id = '$individualwettbewerb_id'," - . "\n spieler_id = '$platzierung_uebrig'," - . "\n platz = '$platz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } -} - -function adminRemoveIndividualwettbewerb() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("individualwettbewerbe_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_platzierung WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_berechtigt_fuer_individualwettbewerb WRITE;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); - - return; - } - $row = $rows[0]; - - $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - wannGespieltAktualisieren(); - if ($row->elo_wertung && $aktualisieren_ab_datum != null) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, 0, $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminIndividualwettbewerbSpiele() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); - - $query = "SELECT *," - . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname," - . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname," - . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname," - . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n LEFT JOIN #__sportsmanager_spieler AS theim1 ON theim1.spieler_id = heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS theim2 ON theim2.spieler_id = heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS tgast1 ON tgast1.spieler_id = gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS tgast2 ON tgast2.spieler_id = gast_spieler_2_id" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - if ($row->tabellenwertung) { - $query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz, nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - } - else { - $ausgangsplatzierungen = null; - } - - HTML_sportsmanager_admin::adminIndividualwettbewerbSpiele($row, $spiele, $ausgangsplatzierungen); -} - -function adminEditIndividualwettbewerbSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); - - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; - - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'RAW'); - - if (empty($id)) { - $row = null; - $spiel_spieler_ids = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - - $spiel_spieler_ids = array($row->heim_spieler_1_id, $row->gast_spieler_1_id); - if ($row->heim_spieler_2_id != null) - array_push($spiel_spieler_ids, $row->heim_spieler_2_id, $row->gast_spieler_2_id); - $typ = $row->heim_spieler_2_id != null ? "doppel" : "einzel"; - } - - $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode($spiel_spieler_ids, ", ") . ")") : "") - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditIndividualwettbewerbSpiel($row, $typ, $individualwettbewerb, $spieler); -} - -function adminSaveIndividualwettbewerbSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'RAW'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . $id); - - return; - } - - $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); - $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); - $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); - - if ($zeitpunkt == null) { - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . id, "Es muss ein gültiges Datum angegeben werden."); - - return; - } - - $ergebnis_punkte_heim = $jinput->get('ergebnis_punkte_heim', array(), 'ARRAY'); - $ergebnis_punkte_gast = $jinput->get('ergebnis_punkte_gast', array(), 'ARRAY'); - - $ergebnis_detailliert = ""; - $saetze_heim = 0; - $saetze_gast = 0; - for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) { - if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i]))) - continue; - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i]; - $punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i]; - if ($punkte_heim > $punkte_gast) - $saetze_heim++; - else if ($punkte_gast > $punkte_heim) - $saetze_gast++; - $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; - } - $ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0); - - $heim_spieler_1_id = $jinput->get('heim_spieler_1_id', 0, 'INT'); - $heim_spieler_2_id = $jinput->get('heim_spieler_2_id', 0, 'INT'); - $gast_spieler_1_id = $jinput->get('gast_spieler_1_id', 0, 'INT'); - $gast_spieler_2_id = $jinput->get('gast_spieler_2_id', 0, 'INT'); - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_spieler READ"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (empty($id)) - $spiel = null; - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $spiel = $rows[0]; - - $typ = $spiel->heim_spieler_2_id != null ? "doppel" : "einzel"; - } - - if (empty($heim_spieler_1_id) || empty($gast_spieler_1_id) || ($typ != "einzel" && (empty($heim_spieler_2_id) || empty($gast_spieler_2_id)))) { - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . id, "Es müssen Spieler ausgewählt werden."); - - return; - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; - - $elo_aktualisieren = $individualwettbewerb->elo_wertung; - $aktualisieren_ab_datum = $zeitpunkt; - - if ($id == 0) { - $query = "INSERT #__sportsmanager_individualwettbewerb_spiel" - . "\n SET individualwettbewerb_id = $individualwettbewerbid," - . "\n zeitpunkt = '$zeitpunkt'," - . "\n heim_spieler_1_id = '$heim_spieler_1_id'," - . "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . "," - . "\n gast_spieler_1_id = '$gast_spieler_1_id'," - . "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . "," - . "\n ergebnis = '$ergebnis'," - . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" - . "\n SET zeitpunkt = '$zeitpunkt'," - . "\n heim_spieler_1_id = '$heim_spieler_1_id'," - . "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . "," - . "\n gast_spieler_1_id = '$gast_spieler_1_id'," - . "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . "," - . "\n ergebnis = '$ergebnis'," - . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") - . "\n WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - individualwettbewerbTabelleAktualisieren($individualwettbewerbid); - - wannGespieltAktualisieren(); - if ($elo_aktualisieren) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, 0, $individualwettbewerbid); - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . $id); -} - -function adminRemoveIndividualwettbewerbSpiel() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel WRITE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $spiel = $rows[0]; - - $elo_aktualisieren = $individualwettbewerb->elo_wertung; - $aktualisieren_ab_datum = $spiel->zeitpunkt; - - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - individualwettbewerbTabelleAktualisieren($individualwettbewerbid); - - wannGespieltAktualisieren(); - if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, 0, $individualwettbewerbid); - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid); -} - -function adminEditIndividualwettbewerbAusgangsplatzierung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); - - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; - - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); - - if (!$individualwettbewerb->tabellenwertung) die("Wrong id!"); - - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'RAW'); - - $query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz, nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - - $row = null; - if (!empty($id)) { - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) { - if ($ausgangsplatzierung->spieler_id == $id) { - $row = $ausgangsplatzierung; - break; - } - } - if ($row == null) die("Wrong id!"); - } - - $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode($spiel_spieler_ids, ", ") . ")") : "") - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditIndividualwettbewerbAusgangsplatzierung($row, $individualwettbewerb, $ausgangsplatzierungen, $spieler); -} - -function adminSaveIndividualwettbewerbAusgangsplatzierung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(); - - $id = $jinput->get('id', 0, 'INT'); - $nach_id = $jinput->get('nach_id', 0, 'INT'); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); - - return; - } - - if ($id == $nach_id) { - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); - - return; - } - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler READ"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); - - if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!"); - - $id_platzierung = array_search($id, $platzierungen); - if ($id_platzierung !== false) - array_splice($platzierungen, $id_platzierung, 1); - $nach_id_platzierung = !empty($nach_id) ? (array_search($nach_id, $platzierungen) + 1) : 0; - array_splice($platzierungen, $nach_id_platzierung, 0, $id); - - $platzierungen_uebrig = $platzierungen; - foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { - $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); - if ($index !== false) { - $platz = $index + 1; - if ($platzierung_vorhanden->platz != $platz) { - $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET platz = '$platz'" - . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); - unset($platzierungen_uebrig[$index_uebrig]); - } - else { - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($platzierungen_uebrig as $platzierung_uebrig) { - $index = array_search($platzierung_uebrig, $platzierungen); - $platz = $index + 1; - $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET individualwettbewerb_id = '$individualwettbewerbid'," - . "\n spieler_id = '$platzierung_uebrig'," - . "\n platz = '$platz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - individualwettbewerbTabelleAktualisieren($individualwettbewerbid); - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); -} - -function adminRemoveIndividualwettbewerbAusgangsplatzierung() { - $db =& getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); - - $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); - - if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!"); - - $id_platzierung = array_search($id, $platzierungen); - if ($id_platzierung !== false) - array_splice($platzierungen, $id_platzierung, 1); - - foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { - $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); - if ($index !== false) { - $platz = $index + 1; - if ($platzierung_vorhanden->platz != $platz) { - $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n SET platz = '$platz'" - . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - $query = "UNLOCK TABLES;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - individualwettbewerbTabelleAktualisieren($individualwettbewerbid); - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid); -} - - -?> +input; + + if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); + + $unabhaengige_ansicht = empty($content) || $content == "administration"; + + $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + if ($filter_saison_id == 0) + $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (count($saisons) != 0) { + $gefunden = false; + foreach ($saisons as $saison) { + if ($saison->saison_id == $filter_saison_id) { + $gefunden = true; + break; + } + } + if (!$gefunden) + $filter_saison_id = $saisons[0]->saison_id; + } + + $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_veranstaltungen) { + $query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen" + . "\n FROM #__sportsmanager_veranstaltung AS t1" + . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id" + . "\n WHERE " . veranstaltungFilter("t1.veranstaltung_id IN") + . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; + } + else { + $query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen" + . "\n FROM #__sportsmanager_veranstaltung AS t1" + . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) + (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) AS veranstaltungen" + . "\n FROM #__sportsmanager_bestenliste AS t1" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + + $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_turniere) { + $query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl" + . "\n FROM #__sportsmanager_turnier" + . "\n LEFT JOIN ((SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin) USING (turnier_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE " . turnierFilter("#__sportsmanager_turnier.turnier_id IN") + . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n GROUP BY turnier_id" + . "\n ORDER BY erster_tag DESC, turnierbezeichnung"; + } + else { + $query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl" + . "\n FROM #__sportsmanager_turnier" + . "\n LEFT JOIN ((SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin) USING (turnier_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n GROUP BY turnier_id" + . "\n ORDER BY erster_tag DESC, turnierbezeichnung"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turniere = $db->loadObjectList(); + + $beschraenkter_zugriff_individualwettbewerbe = benutzerZugriff("individualwettbewerbe_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_individualwettbewerbe) { + $query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE " . individualwettbewerbFilter("individualwettbewerb_id IN") + . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + } + else { + $query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin AS t2 WHERE t1.rangliste_id = t2.rangliste_id) AS turnierdisziplinen" + . "\n FROM #__sportsmanager_rangliste AS t1" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + $statistik = array(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_saison), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["saisons"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel_modus), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["teamspielmodi"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstalter), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["veranstalter"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_system), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["ranglistensysteme"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["turnierdisziplinen"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["individualwettbewerbe"] = $db->loadResult(); + + HTML_sportsmanager_admin::adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $unabhaengige_ansicht, isExternalDatabase()); +} + +function adminVerteiler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verteiler_aendern") && !benutzerZugriff("verteiler_lesen")) + keinZugriff(true); + + $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + if ($filter_saison_id == 0) + $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $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_verteiler" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $verteiler = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $organisationen = $db->loadObjectList(); + + $organisationen_mailverteiler = array(); + foreach ($organisationen as $organisation) { + $query = "SELECT vorname, nachname, email" + . "\n FROM #__sportsmanager_vereinsansprechpartner" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE " . ($organisation->veranstalter_id != null ? "veranstalter_id = $organisation->veranstalter_id" : "ISNULL(veranstalter_id)") + . " AND NOT ausgetreten AND email != ''" + . "\n ORDER BY vorname, nachname, email"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $organisationen_mailverteiler[$organisation->veranstalter_id] = ""; + $organisationen_mailverteiler[$organisation->veranstalter_id . "p"] = ""; + foreach ($rows as $row) { + $organisationen_mailverteiler[$organisation->veranstalter_id] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id]) ? "; " : "") . $row->email; + $organisationen_mailverteiler[$organisation->veranstalter_id . "p"] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; + } + } + + $query = "SELECT t1.*, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_veranstaltung AS t1" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "") + . "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, bezeichnung, t1.kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $veranstaltungen_mailverteiler = array(); + foreach ($veranstaltungen as $veranstaltung) { + $query = "SELECT vorname, nachname, email" + . "\n FROM #__sportsmanager_teamansprechpartner, #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND #__sportsmanager_teamansprechpartner.team_id = #__sportsmanager_team.team_id AND email != ''" + . "\n ORDER BY vorname, nachname, email"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] = ""; + $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] = ""; + foreach ($rows as $row) { + $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id]) ? "; " : "") . $row->email; + $veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; + } + } + + HTML_sportsmanager_admin::adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, benutzerZugriff("verteiler_aendern")); +} + +function adminEditVerteiler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verteiler_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_verteiler WHERE verteiler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditVerteiler($row); +} + +function adminSaveVerteiler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verteiler_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_verteiler'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $verteiler = $db->escape(trim($jinput->get('verteiler', '', 'RAW'))); + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_verteiler (bezeichnung, verteiler) VALUES ('$bezeichnung', '$verteiler');"; + else { + $query = "UPDATE #__sportsmanager_verteiler" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n verteiler = '$verteiler'" + . "\n WHERE verteiler_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_verteiler'); +} + +function adminRemoveVerteiler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verteiler_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_verteiler WHERE verteiler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_verteiler'); +} + +function adminRechnungen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(true); + + $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + if ($filter_saison_id == 0) + $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (count($saisons) == 0) + die("Wrong id!"); + + $gefunden = false; + foreach ($saisons as $saison) { + if ($saison->saison_id == $filter_saison_id) { + $filter_saison = $saison; + $gefunden = true; + break; + } + } + if (!$gefunden) { + $filter_saison_id = $saisons[0]->saison_id; + $saison = $saisons[0]; + } + + $query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," + . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" + . "\n FROM #__sportsmanager_rechnung" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" + . "\n WHERE saison_id = $filter_saison_id" + . "\n ORDER BY bezeichnung, zuordnungbezeichnung, notiz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rechnungen = $db->loadObjectList(); + + $query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," + . " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0," + . "\n (SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_veranstalter AS va1" + . "\n LEFT JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" + . "\n WHERE va1.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))" + . ")," + . "\n (SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_verein AS ve1" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" + . "\n WHERE ve1.verein_id = #__sportsmanager_verein.verein_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))" + . ") AS neuzugaenge" +// . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" + . "\n FROM #__sportsmanager_rechnung" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" + . "\n WHERE saison_id = $filter_saison_id" + . "\n HAVING neuzugaenge > 0" + . "\n ORDER BY zuordnungbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $neuzugaenge = $db->loadObjectList(); + + $query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung," + . " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0," + . "\n (SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_veranstalter AS va1" + . "\n INNER JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)" + . "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)" + . "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id)" + . ")," + . "\n (SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_verein AS ve1" + . "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)" + . "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.verein_id = #__sportsmanager_verein.verein_id)" + . ") AS mitglieder" +// . " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder" + . "\n FROM #__sportsmanager_rechnung" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" + . "\n WHERE saison_id = $filter_saison_id" + . "\n ORDER BY zuordnungbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $aufsummierung = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminRechnungen($rechnungen, $neuzugaenge, $aufsummierung, $saisons, $filter_saison_id, $saison); +} + +function adminEditRechnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung" + . "\n FROM #__sportsmanager_rechnung" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id" + . "\n WHERE rechnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT #__sportsmanager_verein.verein_id, #__sportsmanager_verein.veranstalter_id, vereinsname, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten" + . "\n ORDER BY veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditRechnung($row, $veranstalter, $vereine); +} + +function adminSaveRechnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_rechnungen'); + + return; + } + + $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + if ($filter_saison_id == 0) + $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (count($saisons) != 0) { + $gefunden = false; + foreach ($saisons as $saison) { + if ($saison->saison_id == $filter_saison_id) { + $gefunden = true; + break; + } + } + if (!$gefunden) + $filter_saison_id = $saisons[0]->saison_id; + } + + if ($filter_saison_id == 0) + die ("Wrong id"); + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $notiz = $db->escape(trim($jinput->get('notiz', '', 'RAW'))); + $veranstalterid = $db->escape($jinput->get('veranstalterid', 0, 'RAW')); + $mitgliedsstatus = $jinput->get('mitgliedsstatus', 0, 'INT'); + $wertungskategorie = $jinput->get('wertungskategorie', 0, 'INT'); + if ($id == 0) { + $filter_mitgliedsstatus = ""; + for ($i = 1; $i <= 3; $i++) { + if (pow(2, $i) & $mitgliedsstatus) { + if (!empty($filter_mitgliedsstatus)) + $filter_mitgliedsstatus .= " OR "; + $filter_mitgliedsstatus .= "mitgliedsstatus = " . $i; + } + } + if (!empty($filter_mitgliedsstatus)) + $filter_mitgliedsstatus = " AND (" . $filter_mitgliedsstatus . ")"; + $filter_kategorie = ""; + if ($wertungskategorie != 15) { + $kategorien = array(); + foreach (array(1 => "H", 2 => "D", 4 => "J", 8 => "S") as $b => $wert) { + if ($b & $wertungskategorie) + array_push($kategorien, "\"" . $wert . "\""); + } + $jahr = date("Y"); + if (!empty($kategorien)) + $filter_kategorie = " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) IN (" . implode(", ", $kategorien) . ")"; + else + $filter_kategorie = " AND FALSE"; + } + if (strlen($veranstalterid) > 1 && $veranstalterid[0] == "v") { + $verein_id = substr($veranstalterid, 1); + $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus', '$wertungskategorie');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" + . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if (strlen($veranstalterid) > 1 && $veranstalterid[0] == "a") { + $veranstalter_id = substr($veranstalterid, 1); + $query = "SELECT verein_id, (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE veranstalter_id = $veranstalter_id AND not ausgetreten" + . "\n ORDER BY mitglieder, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + foreach ($veranstalter as $row) { + $verein_id = $row->verein_id; + $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" + . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else if ($veranstalterid == "0") { + $query = "SELECT veranstalter_id, (SELECT COUNT(*) FROM #__sportsmanager_verein LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY mitglieder, veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + foreach ($veranstalter as $row) { + $veranstalterid = $row->veranstalter_id; + $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" + . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" + . "\n FROM #__sportsmanager_veranstalter" + . "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + $query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)" + . "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'" + . "\n FROM #__sportsmanager_veranstalter" + . "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + $query = "UPDATE #__sportsmanager_rechnung" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n notiz = '$notiz'" + . "\n WHERE rechnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + redirectSportsManagerURL('&task=admin_rechnungen'); +} + +function adminRemoveRechnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_rechnung WRITE, #__sportsmanager_rechnung_spieler WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rechnung_spieler WHERE rechnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rechnung WHERE rechnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_rechnungen'); +} + +function adminEinstellungen() { + $db =& getDatabase(); + + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_einstellungen"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $einstellungen = array(); + foreach ($rows as $row) + $einstellungen[$row->name] = $row->wert; + + HTML_sportsmanager_admin::adminEinstellungen($einstellungen); +} + +function adminSaveEinstellungen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $basis_spielernr = $db->escape(trim($jinput->get('basis_spielernr', '', 'RAW'))); + $ansprechpartner_ausblenden = $jinput->get('ansprechpartner_ausblenden', 0, 'INT'); + $ansprechpartner_spielerdaten = $jinput->get('ansprechpartner_spielerdaten', 0, 'INT'); + $ansprechpartner_importieren = $jinput->get('ansprechpartner_importieren', 0, 'INT'); + $ansprechpartner_exportieren = $jinput->get('ansprechpartner_exportieren', 0, 'INT'); + $spielerliste_elo = $jinput->get('spielerliste_elo', 0, 'INT'); + $termine_beantragen = $jinput->get('termine_beantragen', 0, 'INT'); + $spielerimport_persoenliche_daten_vorauswahl = $jinput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); + + $api_push_key = $jinput->get('api_push_key', '', 'RAW'); + + /* + $twitter_benutzername = $db->escape(trim( $jinput->get('twitter_benutzername', '', 'RAW') )); + $twitter_kennwort = !empty($twitter_benutzername) ? $db->escape(trim( $jinput->get('twitter_kennwort', '', 'RAW') )) : ""; + */ + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'basis_spielernr'" + . ", wert = '$basis_spielernr'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'termine_beantragen'" + . ", wert = '$termine_beantragen'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'spielerliste_elo'" + . ", wert = '$spielerliste_elo'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_ausblenden'" + . ", wert = '$ansprechpartner_ausblenden'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_spielerdaten'" + . ", wert = '$ansprechpartner_spielerdaten'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_importieren'" + . ", wert = '$ansprechpartner_importieren'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_exportieren'" + . ", wert = '$ansprechpartner_exportieren'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'spielerimport_persoenliche_daten_vorauswahl'" + . ", wert = '$spielerimport_persoenliche_daten_vorauswahl'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen SET name = 'api_push_key', wert = '$api_push_key'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + /* + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'twitter_benutzername'" + . ", wert = '$twitter_benutzername'"; + $db->setQuery($query); + if (!$result = $db->execute()) { die($db->stderr(true)); } + + if (empty($twitter_benutzername) || !empty($twitter_kennwort)) { + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'twitter_kennwort'" + . ", wert = '$twitter_kennwort'"; + $db->setQuery($query); + if (!$result = $db->execute()) { die($db->stderr(true)); } + } + */ + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminDatenbank() { + $db =& getDatabase(true); + + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_einstellungen"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $einstellungen = array(); + foreach ($rows as $row) + $einstellungen[$row->name] = $row->wert; + + HTML_sportsmanager_admin::adminDatenbank($einstellungen); +} + +function adminSaveDatenbank() { + $db =& getDatabase(true); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $database_driver = $db->escape(trim($jinput->get('database_driver', '', 'RAW'))); + $database_host = $db->escape(trim($jinput->get('database_host', '', 'RAW'))); + $database_user = $db->escape(trim($jinput->get('database_user', '', 'RAW'))); + $database_password = $db->escape(trim($jinput->get('database_password', '', 'RAW'))); + $database_database = $db->escape(trim($jinput->get('database_database', '', 'RAW'))); + $database_prefix = $db->escape(trim($jinput->get('database_prefix', '', 'RAW'))); + $joomla_path = $db->escape(trim($jinput->get('joomla_path', '', 'RAW'))); + $joomla_path = $joomla_path == "/" && $joomla_path != "\\" ? $joomla_path : rtrim(rtrim($joomla_path, "\\"), "/"); + $joomla_url = $db->escape(trim($jinput->get('joomla_url', '', 'RAW'))); + if (strlen($joomla_url) > 0 && substr($joomla_url, strlen($joomla_url) - 1, 1) != "/") + $joomla_url .= "/"; + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_driver'" + . ", wert = '$database_driver'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_host'" + . ", wert = '$database_host'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_user'" + . ", wert = '$database_user'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_password'" + . ", wert = '$database_password'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_database'" + . ", wert = '$database_database'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'database_prefix'" + . ", wert = '$database_prefix'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'joomla_path'" + . ", wert = '$joomla_path'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'joomla_url'" + . ", wert = '$joomla_url'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminSpieler($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); + $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); + $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; + $ansprechpartner_bilder_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; + else if (benutzerVereinModerator()) + $beschraenkter_zugriff = 2; + else + keinZugriff(true); + + $filter = $jinput->get('filter', '', 'RAW'); + if (empty($filter)) + $filter = $jinput->get('spezialfilter', '', 'RAW'); + + $anzahlSpieler = array(); + $query = "SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_spieler"; + if ($beschraenkter_zugriff == 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + if ($beschraenkter_zugriff == 1) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["aktiv"] = $db->loadResult(); + $jahr = date("Y"); + $db->setQuery($query . "\n WHERE " . ($jahr - 18) . " <= geburtsjahr"); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["J aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE " . ($jahr - 50) . " > geburtsjahr"); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["S aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE geschlecht = 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["H aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE geschlecht <> 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["D aktiv"] = $db->loadResult(); + + $query = "SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_spieler"; + if ($beschraenkter_zugriff == 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + if ($beschraenkter_zugriff == 1) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["eingeschraenkt"] = $db->loadResult(); + + $query = "SELECT COUNT(DISTINCT spieler_id)" + . "\n FROM #__sportsmanager_spieler"; + if ($beschraenkter_zugriff == 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + if ($beschraenkter_zugriff == 1) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["passiv"] = $db->loadResult(); + + $search = stripslashes($filter); + if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT") { + $jahr = date("Y"); + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," + . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," + . "\n vereinsname" + . "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname" + . "\n FROM #__sportsmanager_spieler" + . "\n GROUP BY nachname, vorname" + . "\n HAVING identische_namen > 1) AS identische_namen" + . "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } + else if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT_JAHR") { + $jahr = date("Y"); + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," + . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," + . "\n vereinsname" + . "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname, geburtsjahr" + . "\n FROM #__sportsmanager_spieler" + . "\n GROUP BY nachname, vorname, geburtsjahr" + . "\n HAVING identische_namen > 1) AS identische_namen" + . "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname, geburtsjahr)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n ORDER BY nachname, vorname, geburtsjahr"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } + else if ($beschraenkter_zugriff == 0 && $search == "_____KEINE_SPIELERNR") { + $jahr = date("Y"); + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," + . "\n IF (ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," + . "\n vereinsname" + . "\n FROM #__sportsmanager_spieler" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n WHERE #__sportsmanager_spieler.spielernr = ''" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } + else if (isset($search) && $search != "" && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) { + $searchEscapedWildcards = strpos($search, "*") !== false ? ($db->escape(trim(mb_strtolower(str_replace("*", "%", $search), 'UTF-8')))) : ("%" . $db->escape(trim(mb_strtolower($search, 'UTF-8'))) . "%"); + $searchEscaped = $db->escape(trim($search)); + + $jahr = date("Y"); + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," + . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," + . "\n vereinsname" + . "\n FROM #__sportsmanager_spieler"; + if ($beschraenkter_zugriff == 1) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else + $query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"; + $query .= "\n WHERE (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')"; + $query .= "\n ORDER BY nachname, vorname LIMIT 101"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 100) { + redirectSportsManagerURL('&task=admin_spieler', "Mehr als 100 Spieler gefunden, bitte genaueren Filter verwenden."); + + return; + } + } + else if ($anzahlSpieler["aktiv"] <= 100 && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) { + $jahr = date("Y"); + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr," + . "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele," + . "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen," + . "\n vereinsname" + . "\n FROM #__sportsmanager_spieler"; + if ($beschraenkter_zugriff == 1) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else + $query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"; + $query .= "\n ORDER BY nachname, vorname LIMIT 101"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 100) + $rows = null; + } + else + $rows = null; + + $statistik = array(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(spielernr) AND spielernr <> ''), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["spielernr_national"] = $db->loadResult(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $statistik["spielernr_international"] = $db->loadResult(); + + HTML_sportsmanager_admin::adminSpieler($filter, $rows, $anzahlSpieler, $admin_uebersicht, $beschraenkter_zugriff, $ansprechpartner_importieren, $ansprechpartner_exportieren, $ansprechpartner_spielerdaten_bearbeiten, $ansprechpartner_bilder_bearbeiten, $statistik); +} + +function adminEditSpieler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); + $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten) + $beschraenkter_zugriff = 1; + else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten) + $beschraenkter_zugriff = 2; + else + keinZugriff(true); + + $filter = $jinput->get('filter', '', 'RAW'); + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) + $spieler = null; + else { + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $spieler = $rows[0]; + else + $spieler = null; + } + + if ($beschraenkter_zugriff != 0) { + if ($id == 0) + keinZugriff(true); + if ($beschraenkter_zugriff == 1) + $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; + else // $beschraenkter_zugriff == 2 + $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n == 0) + keinZugriff(true); + } + + // Vereine ermitteln + $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, ausgetreten AS verein_ausgetreten, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n ORDER BY veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + $vereinsmitgliedschaften = null; + if (!empty($id)) { + $query = "SELECT DISTINCT verein_id, mitgliedsstatus" + . "\n FROM #__sportsmanager_verein" + . "\n INNER JOIN (SELECT verein_id, mitgliedsstatus FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id) AS mitgliedschaft USING (verein_id)" + . "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereinsmitgliedschaften = $db->loadObjectList(); + } + + // Nächste Spieler-Nr. ermitteln + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); + $naechste_spielernr = $rows[0]->wert; + if (empty($naechste_spielernr)) + $naechste_spielernr = "1"; + + for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { + if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') + break; + } + $spielernr_praefix = substr($naechste_spielernr, 0, $i + 1); + + $query = "SELECT spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'" + . "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) > 0) { + $naechste_spielernr = $rows[0]->spielernr; + for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { + if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { + $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); + break; + } + if ($naechste_spielernr[$i] <= '8') { + $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; + break; + } + // $naechste_spielernr[$i] == '9' + $naechste_spielernr[$i] = '0'; + } + if ($i < 0) + $naechste_spielernr = "1" . $naechste_spielernr; + } + + HTML_sportsmanager_admin::adminEditSpieler($spieler, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten); +} + +function adminSaveSpieler() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten"); + $ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten) + $beschraenkter_zugriff = 1; + else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten) + $beschraenkter_zugriff = 2; + else + keinZugriff(); + + $filter = $jinput->get('filter', '', 'RAW'); + $id = $jinput->get('id', 0, 'INT'); + $vorname = $db->escape(trim($jinput->get('vorname', '', 'RAW'))); + $nachname = $db->escape(trim($jinput->get('nachname', '', 'RAW'))); + $lizenz = $db->escape(trim($jinput->get('lizenz', '', 'RAW'))); + $pseudonym = $db->escape(trim($jinput->get('pseudonym', '', 'RAW'))); + $geschlecht = $db->escape(trim($jinput->get('geschlecht', 'M', 'RAW'))); + $geburtsdatum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); + $geburtsjahr = $jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%d", $jinput->get('datum_jahr', 0, 'INT')); + $strasse = $db->escape(trim($jinput->get('strasse', '', 'RAW'))); + $plz = $db->escape(trim($jinput->get('plz', '', 'RAW'))); + $ort = $db->escape(trim($jinput->get('ort', '', 'RAW'))); + $landeskennung = $db->escape(trim($jinput->get('landeskennung', '', 'RAW'))); + $telefon = $db->escape(trim($jinput->get('telefon', '', 'RAW'))); + $mobil = $db->escape(trim($jinput->get('mobil', '', 'RAW'))); + $email = $db->escape(trim($jinput->get('email', '', 'RAW'))); + $spielernr = $db->escape(trim($jinput->get('spielernr', '', 'RAW'))); + $lizenznr = $db->escape(trim($jinput->get('lizenznr', '', 'RAW'))); + $bild_ausblenden = $jinput->get('bild_ausblenden', 0, 'INT'); + $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); + $elo_startwert_einzel = max(min($jinput->get('elo_startwert_einzel', 0, 'INT'), 9999), 0); + $elo_startwert_doppel = max(min($jinput->get('elo_startwert_doppel', 0, 'INT'), 9999), 0); + $vereinsauswahl_anzahl = $jinput->get('vereinsauswahl_anzahl', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); + + return; + } + + $vereinsmitgliedschaften = array(); + $verein_mitgliedsstatus = array(); + for ($i = 0; $i < $vereinsauswahl_anzahl; $i++) { + $verein_id = $jinput->get('verein_id_' . $i, 0, 'INT'); + if (empty($verein_id)) + continue; + array_push($vereinsmitgliedschaften, $verein_id); + array_push($verein_mitgliedsstatus, $jinput->get('verein_mitgliedsstatus_' . $i, 0, 'INT')); + } + + if ($beschraenkter_zugriff != 0) { + if ($id == 0) + keinZugriff(true); + if ($beschraenkter_zugriff == 1) + $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; + else // $beschraenkter_zugriff == 2 + $query = "SELECT IF(EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n == 0) + keinZugriff(); + } + + $query = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_verein READ, #__sportsmanager_berechtigt_fuer_verein READ, #__sportsmanager_berechtigt_fuer_veranstalter READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (strlen($spielernr) > 0) { + $query = "SELECT COUNT(*) FROM #__sportsmanager_spieler WHERE spielernr = '$spielernr' AND spieler_id != $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_PLAYER_NO_USED')); + + return; + } + } + + $rangliste_aktualisieren = false; + $elo_aktualisieren = false; + // Vereinsmitgliedschaften prüfen und ggf. aktualisieren + if ($id != 0 && !$beschraenkter_zugriff) { + $query = "SELECT verein_id, #__sportsmanager_mitglied_von_verein.ausgetreten, mitgliedsstatus" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bestehende_vereinsmitgliedschaften = $db->loadObjectList(); + + foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) { + $ist_mitglied = false; + foreach ($vereinsmitgliedschaften as $verein_id) { + if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) { + $ist_mitglied = true; + break; + } + } + if (!$ist_mitglied) { + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $bestehende_vereinsmitgliedschaft->verein_id AND spieler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + //if ($id != 0) + // $rangliste_und_elo_aktualisieren = TRUE; + } + } + + foreach ($vereinsmitgliedschaften as $index => $verein_id) { + $ist_mitglied = false; + foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) { + if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) { + $ist_mitglied = true; + $mitgliedsstatus = $bestehende_vereinsmitgliedschaft->mitgliedsstatus; + break; + } + } + if (!$ist_mitglied) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE verein_id = $verein_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) { + $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + // if ($id != 0) + // $rangliste_und_elo_aktualisieren = TRUE; + } + } + else if ($mitgliedsstatus != $verein_mitgliedsstatus[$index]) { + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET mitgliedsstatus = '" . ($verein_mitgliedsstatus[$index]) . "'," + . "\n ausgetreten = " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") + . "\n WHERE verein_id = $verein_id AND spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + // if ($id != 0) + // $rangliste_und_elo_aktualisieren = TRUE; + } + } + } + + if ($id == 0 && !$beschraenkter_zugriff) { + $query = "INSERT INTO #__sportsmanager_spieler " + . "(vorname, nachname, lizenz, pseudonym, geschlecht, geburtsdatum, geburtsjahr, strasse, plz, ort, landeskennung, telefon, mobil, email, spielernr, lizenznr, elo_einzel_startwert, elo_doppel_startwert, bild_ausblenden) " + . "VALUES ('$vorname', " + . "'$nachname', " + . "'$lizenz', " + . "'$pseudonym', " + . "'$geschlecht', " + . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . ", " + . ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . ", " + . "'$strasse', " + . "'$plz', " + . "'$ort', " + . "'$landeskennung', " + . "'$telefon', " + . "'$mobil', " + . "'$email', " + . "'$spielernr', " + . "'$lizenznr', " + . "'$elo_startwert_einzel', " + . "'$elo_startwert_doppel', " + . ($bild_ausblenden ? "TRUE" : "FALSE") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + // Vereinsmitgliedschaften erzeugen + foreach ($vereinsmitgliedschaften as $index => $verein_id) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE verein_id = $verein_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) { + $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + if ($id != 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2")) { + + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=admin_spieler', "Der Spieler existiert nicht mehr!"); + + return; + } + $spieler = $rows[0]; + + if ($spieler->elo_einzel_startwert != $elo_startwert_einzel || $spieler->elo_doppel_startwert != $elo_startwert_doppel) + $elo_aktualisieren = true; + + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET pseudonym = '$pseudonym'," + . "\n strasse = '$strasse'," + . "\n plz = '$plz'," + . "\n ort = '$ort'," + . "\n landeskennung = '$landeskennung'," + . "\n telefon = '$telefon'," + . "\n mobil = '$mobil'," + . "\n bild_ausblenden = " . ($bild_ausblenden ? "TRUE" : "FALSE") . ","; + if (!$beschraenkter_zugriff) { + $query .= "\n vorname = '$vorname'," + . "\n nachname = '$nachname'," + . "\n lizenz = '$lizenz'," + . "\n geschlecht = '$geschlecht'," + . "\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . "," + . "\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . "," + . "\n spielernr = '$spielernr'," + . "\n lizenznr = '$lizenznr'," + . "\n elo_einzel_startwert = " . ($elo_startwert_einzel == null ? "NULL" : "'$elo_startwert_einzel'") . "," + . "\n elo_doppel_startwert = " . ($elo_startwert_doppel == null ? "NULL" : "'$elo_startwert_doppel'") . ","; + } + $query .= "\n email = '$email'" + . "\n WHERE spieler_id = $id"; + + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($geburtsjahr != $spieler->geburtsjahr || $geschlecht != $spieler->geschlecht) + $rangliste_aktualisieren = true; + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($elo_aktualisieren) + eloAktualisieren($spieler->erstmals_gespielt); + + if ($bildbeibehalten == 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3")) { + bildLoeschen('spieler', $id); + + if (!empty($_FILES["bild"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { + $size = getimagesize($_FILES["bild"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); + + return; + } + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; + if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); + + return; + } + } + } + } + + aktuellerVereinAktualisieren($id); + if ($rangliste_aktualisieren) { + ranglisteAktualisieren(0, 0, $id); + einstufungAktualisieren(); + } + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); +} + +function adminRemoveSpieler() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); + + $filter = $jinput->get('filter', '', 'RAW'); + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_teamspiel READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("spieler", $id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren(); + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); +} + +function adminGroomingMehrfacheMitgliedschaften() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); + + $query = "SELECT spieler_id, COUNT(*) AS mehrfach" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n GROUP BY spieler_id, verein_id" + . "\n HAVING mehrfach > 1" + . "\n ORDER BY spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $mitglieder = $db->loadObjectList(); + + foreach ($mitglieder as $mitglied) { + $query = "SELECT mitglied_von_verein_id, verein_id" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n WHERE spieler_id = $mitglied->spieler_id" + . "\n ORDER BY verein_id, ausgetreten, mitgliedsstatus"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $mitglied_verein_id = -1; + foreach ($rows as $row) { + if ($mitglied_verein_id != $row->verein_id) { + $mitglied_verein_id = $row->verein_id; + continue; + } + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminSpielerZusammenlegenForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); + + $filter = $jinput->get('filter', '', 'RAW'); + + $query = "SELECT spieler_id, vorname, nachname, spielernr, aktueller_verein_id" + . "\n FROM #__sportsmanager_spieler" + . "\n ORDER BY nachname, vorname, spielernr, aktueller_verein_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielerZusammenlegen($spieler, $filter); +} + +function adminSpielerZusammenlegen() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(); + + $spieler_beizubehalten_id = $jinput->get('spieler_beizubehalten_id', 0, 'INT'); + $spieler_zu_entfernen_id = $jinput->get('spieler_zu_entfernen_id', 0, 'INT'); + $filter = $jinput->get('filter', '', 'RAW'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); + + return; + } + + if ($spieler_beizubehalten_id == $spieler_zu_entfernen_id) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spieler gewählt werden"); + + return; + } + + if (!ini_get('safe_mode')) + set_time_limit(300); + + $query = "LOCK TABLES #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_beizubehalten_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter), "Beizubehaltender Spieler existiert nicht."); + } + $spieler_beizubehalten = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zu entfernender Spieler existiert nicht."); + } + $spieler_zu_entfernen = $rows[0]; + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_punkte" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_turniermeldung_spieler" + . "\n SET spieler_id = $spieler_beizubehalten_id" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET heim_spieler_1_id = $spieler_beizubehalten_id" + . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET heim_spieler_2_id = $spieler_beizubehalten_id" + . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET gast_spieler_1_id = $spieler_beizubehalten_id" + . "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET gast_spieler_2_id = $spieler_beizubehalten_id" + . "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" + . "\n SET heim_spieler_1_id = $spieler_beizubehalten_id" + . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" + . "\n SET heim_spieler_2_id = $spieler_beizubehalten_id" + . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" + . "\n SET gast_spieler_1_id = $spieler_beizubehalten_id" + . "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" + . "\n SET gast_spieler_2_id = $spieler_beizubehalten_id" + . "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT DISTINCT individualwettbewerb_id" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + foreach ($individualwettbewerbe as $individualwettbewerb) { + $individualwettbewerbid = $individualwettbewerb->individualwettbewerb_id; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + array_push($platzierungen, $ausgangsplatzierung->spieler_id); + + $spieler_beizubehalten_platzierung = array_search($spieler_beizubehalten_id, $platzierungen); + $spieler_zu_entfernen_platzierung = array_search($spieler_zu_entfernen_id, $platzierungen); + if ($spieler_beizubehalten_platzierung !== false && $spieler_zu_entfernen_platzierung !== false) + array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1); + else if ($spieler_beizubehalten_platzierung === false) + array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1, $spieler_beizubehalten_id); + + $platzierungen_uebrig = $platzierungen; + foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { + $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); + if ($index !== false) { + $platz = $index + 1; + if ($platzierung_vorhanden->platz != $platz) { + $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET platz = '$platz'" + . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); + unset($platzierungen_uebrig[$index_uebrig]); + } + else { + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + foreach ($platzierungen_uebrig as $platzierung_uebrig) { + $index = array_search($platzierung_uebrig, $platzierungen); + $platz = $index + 1; + $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET individualwettbewerb_id = '$individualwettbewerbid'," + . "\n spieler_id = '$platzierung_uebrig'," + . "\n platz = '$platz'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UPDATE #__sportsmanager_mitglied_von_team" + . "\n SET spieler_id = $spieler_beizubehalten_id" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT mitglied_von_verein_id, verein_id" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n WHERE spieler_id = $spieler_beizubehalten_id OR spieler_id = $spieler_zu_entfernen_id" + . "\n ORDER BY verein_id, ausgetreten, IF(spieler_id = $spieler_beizubehalten_id, 0, 1), mitgliedsstatus"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $mitglied_verein_id = -1; + foreach ($rows as $row) { + if ($mitglied_verein_id != $row->verein_id) { + $mitglied_verein_id = $row->verein_id; + continue; + } + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET spieler_id = $spieler_beizubehalten_id" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; + $neues_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_beizubehalten_id . '.'; + + if (!JFile::exists($neues_bild_pfad . 'png') && !JFile::exists($neues_bild_pfad . 'jpg')) { + $altes_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_zu_entfernen_id . '.'; + + if (JFile::exists($altes_bild_pfad . 'png')) + JFile::copy($altes_bild_pfad . 'png', $neues_bild_pfad . 'png'); + else if (JFile::exists($altes_bild_pfad . 'jpg')) + JFile::copy($altes_bild_pfad . 'jpg', $neues_bild_pfad . 'jpg'); + } + + bildLoeschen("spieler", $spieler_zu_entfernen_id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (!empty($spieler_zu_entfernen->erstmals_gespielt)) { + wannGespieltAktualisieren(); + individualwettbewerbTabelleAktualisieren(); + eloAktualisieren($spieler_zu_entfernen->erstmals_gespielt); + } + spielerstatistikAktualisieren(); + aktuellerVereinAktualisieren($spieler_beizubehalten_id); + ranglisteAktualisieren(); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); +} + +function adminRemoveInaktiveSpielerForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); + + $filter = $jinput->get('filter', '', 'RAW'); + + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, lizenznr" + . "\n FROM #__sportsmanager_spieler" + . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id" + . "\n WHERE ISNULL(aktueller_verein_id)" + . "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)" + . "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)" + . "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)" + . "\n AND ISNULL(teamspiel1.heim_spieler_1_id)" + . "\n AND ISNULL(teamspiel2.heim_spieler_2_id)" + . "\n AND ISNULL(teamspiel3.gast_spieler_1_id)" + . "\n AND ISNULL(teamspiel4.gast_spieler_2_id)" + . "\n AND ISNULL(individualspiel1.heim_spieler_1_id)" + . "\n AND ISNULL(individualspiel2.heim_spieler_2_id)" + . "\n AND ISNULL(individualspiel3.gast_spieler_1_id)" + . "\n AND ISNULL(individualspiel4.gast_spieler_2_id)" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminRemoveInaktiveSpieler($spieler, $filter); +} + +function adminRemoveInaktiveSpieler() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(); + + $spieler_beizubehalten_ids = $jinput->get('spielerids', array(), 'ARRAY'); + $filter = $jinput->get('filter', '', 'RAW'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_teamspiel AS teamspiel1 READ, #__sportsmanager_teamspiel AS teamspiel2 READ, #__sportsmanager_teamspiel AS teamspiel3 READ, #__sportsmanager_teamspiel AS teamspiel4 READ, #__sportsmanager_turniermeldung_spieler READ, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 WRITE, #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_spieler.spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id" + . "\n WHERE ISNULL(aktueller_verein_id)" + . "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)" + . "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)" + . "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)" + . "\n AND ISNULL(teamspiel1.heim_spieler_1_id)" + . "\n AND ISNULL(teamspiel2.heim_spieler_2_id)" + . "\n AND ISNULL(teamspiel3.gast_spieler_1_id)" + . "\n AND ISNULL(teamspiel4.gast_spieler_2_id)" + . "\n AND ISNULL(individualspiel1.heim_spieler_1_id)" + . "\n AND ISNULL(individualspiel2.heim_spieler_2_id)" + . "\n AND ISNULL(individualspiel3.gast_spieler_1_id)" + . "\n AND ISNULL(individualspiel4.gast_spieler_2_id)" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + $bilder_spieler_ids = array(); + + foreach ($spieler AS $s) { + $id = $s->spieler_id; + + if (in_array($id, $spieler_beizubehalten_ids)) + continue; + + array_push($bilder_spieler_ids, $id); + + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren(); + + foreach ($bilder_spieler_ids AS $id) + bildLoeschen("spieler", $id); + + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); +} + +function adminImportSpielerForm() { + $db =& getDatabase(); + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(true); + + HTML_sportsmanager_admin::adminImportSpieler(); +} + +function adminImportSpielerDetailsForm() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + $query = "SELECT DISTINCT session_id" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '$row->session_id'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED')); + + return; + } + + $handle = fopen($_FILES["daten"]["tmp_name"], "r"); + if (!$handle) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE')); + + return; + } + if (feof($handle)) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_FILE_IS_EMPTY')); + + return; + } + + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + if (substr($titelzeile, 0, 4) == "sep=") { + $trennzeichen = substr($titelzeile, 4); + if ($trennzeichen == "") // TAB am Ende wird aus irgendwelchen Gründen weggekürzt + $trennzeichen = "\t"; + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + } + else if ($titelzeile == "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM") + $trennzeichen = "#"; + else if (strpos($titelzeile, "\t") !== false) + $trennzeichen = "\t"; + else if (strpos($titelzeile, ";") !== false) + $trennzeichen = ";"; + else + $trennzeichen = ","; + + $spalte = array(); + + if (substr($titelzeile, 0, 14) == ";All licensees" || substr($titelzeile, 0, 24) == ";All validated licensees") { + // ITSF-Export + $lizenz_import = true; + $buffer = $titelzeile; + while (!feof($handle) && strpos($buffer, "Profession") === false) + $buffer = chop(utf8_encode(fgets($handle, 4096))); + $spalte["nachname"] = 3; + $spalte["vorname"] = 2; + $spalte["geschlecht"] = 1; + $spalte["spielernr"] = 6; + $spalte["lizenznr"] = 0; + $spalte["geburtsjahr"] = 5; + } + else { + $lizenz_import = false; + $titel = explode($trennzeichen, strtolower($titelzeile)); + + foreach ($titel as $index => $bezeichnung) { + $bezeichnung = trim($bezeichnung); + $len = strlen($bezeichnung); + if ($len >= 2 && $bezeichnung[0] == '"' && $bezeichnung[$len - 1] == '"') + $bezeichnung = trim(str_replace('""', '"', substr($bezeichnung, 1, $len - 2))); + + if ($bezeichnung == "name" || $bezeichnung == "nachname") + $spalte["nachname"] = $index; + else if ($bezeichnung == "vorname") + $spalte["vorname"] = $index; + else if ($bezeichnung == "name, vorname" || $bezeichnung == "name,vorname") + $spalte["name,vorname"] = $index; + else if ($bezeichnung == "pseudonym") + $spalte["pseudonym"] = $index; + else if ($bezeichnung == "geschlecht" || $bezeichnung == "anrede") + $spalte["geschlecht"] = $index; + else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr." || $bezeichnung == "spielerpass") + $spalte["spielernr"] = $index; + else if ($bezeichnung == "spielernr alt" || $bezeichnung == "spielernr. alt" || $bezeichnung == "spielernr_alt") + $spalte["spielernr_alt"] = $index; + else if ($bezeichnung == "lizenznr" || $bezeichnung == "lizenznr.") + $spalte["lizenznr"] = $index; + else if ($bezeichnung == "organisation") + $spalte["organisation"] = $index; + else if ($bezeichnung == "vereinssitz") + $spalte["vereinssitz"] = $index; + else if ($bezeichnung == "vereinsname" || $bezeichnung == "verein") + $spalte["vereinsname"] = $index; + else if ($bezeichnung == "mannschaft" || $bezeichnung == "teamname") + $spalte["teamname"] = $index; + else if ($bezeichnung == "geburtsdatum") + $spalte["geburtsdatum"] = $index; + else if ($bezeichnung == "geburtsjahr") + $spalte["geburtsjahr"] = $index; + else if ($bezeichnung == "email" || $bezeichnung == "e-mail") + $spalte["email"] = $index; + else if (substr($bezeichnung, 0, 4) == "stra") + $spalte["strasse"] = $index; + else if ($bezeichnung == "plz/ort") + $spalte["plz/ort"] = $index; + else if ($bezeichnung == "plz") + $spalte["plz"] = $index; + else if ($bezeichnung == "ort") + $spalte["ort"] = $index; + else if ($bezeichnung == "landeskennung") + $spalte["landeskennung"] = $index; + else if ($bezeichnung == "telefon") + $spalte["telefon"] = $index; + else if ($bezeichnung == "mobil") + $spalte["mobil"] = $index; + else if ($bezeichnung == "beruf") + $spalte["beruf"] = $index; + else if ($bezeichnung == "austritt" || $bezeichnung == "ausgetreten") + $spalte["ausgetreten"] = $index; + else if ($bezeichnung == "mitgliedsstatus") + $spalte["mitgliedsstatus"] = $index; + } + + if (((!isset($spalte["nachname"]) || !isset($spalte["vorname"])) && !isset($spalte["name,vorname"])) || !isset($spalte["spielernr"])) { + redirectSportsManagerURL('&task=admin_spieler', "Die übergebene Datei ist keine Spielerdatei."); + + return; + } + } + + $session_id = date('Y-m-d H:i:s'); + +// $veranstalter_import = array(); + + while (!feof($handle)) { + $buffer = chop(utf8_encode(fgets($handle, 4096))); + $daten = explode($trennzeichen, $buffer); + + foreach ($daten as $index => $wert) { + $wert = trim($wert); + $len = strlen($wert); + if ($len < 2 || $wert[$len - 1] != '"' || !($wert[0] == '"' || ($wert[0] == '=' && $wert[1] == '"'))) + $daten[$index] = $wert; + else if ($wert[0] == '"') + $daten[$index] = trim(str_replace('""', '"', substr($wert, 1, $len - 2))); + else + $daten[$index] = trim(str_replace('""', '"', substr($wert, 2, $len - 3))); + } + + if (isset($spalte["vorname"]) && isset($spalte["nachname"]) && isset($daten[$spalte["vorname"]]) && isset($daten[$spalte["nachname"]])) { + $nachname = $daten[$spalte["nachname"]]; + $vorname = $daten[$spalte["vorname"]]; + } + else if (isset($spalte["name,vorname"]) && isset($daten[$spalte["name,vorname"]])) { + $pos = strpos($daten[$spalte["name,vorname"]], ","); + if ($pos === false) + continue; + $nachname = trim(substr($daten[$spalte["name,vorname"]], 0, $pos)); + $vorname = trim(substr($daten[$spalte["name,vorname"]], $pos + 1)); + } + else + continue; + + if ($vorname == "" || $nachname == "") + continue; + + $mitgliedsstatus = 1; + if (isset($spalte["mitgliedsstatus"]) && isset($daten[$spalte["mitgliedsstatus"]]) && !empty($daten[$spalte["mitgliedsstatus"]])) { + $s = strtolower($daten[$spalte["mitgliedsstatus"]]); + if ($s == "ausgetreten") + $mitgliedsstatus = 0; + else if ($s == "passiv") + $mitgliedsstatus = 3; + else if (substr($s, 0, 9) == "eingeschr") + $mitgliedsstatus = 2; + } + else if (isset($spalte["ausgetreten"]) && isset($daten[$spalte["ausgetreten"]]) && !empty($daten[$spalte["ausgetreten"]])) { + if (strtolower($daten[$spalte["ausgetreten"]]) == "ja") + $mitgliedsstatus = 0; + } + + if ($mitgliedsstatus == 0) + continue; + + $geschlecht = isset($spalte["geschlecht"]) && isset($daten[$spalte["geschlecht"]]) ? (($daten[$spalte["geschlecht"]][0] == "M" || $daten[$spalte["geschlecht"]][0] == "m" || $daten[$spalte["geschlecht"]][0] == "H" || $daten[$spalte["geschlecht"]][0] == "h") ? "M" : "W") : "M"; + $spielernr = isset($spalte["spielernr"]) && isset($daten[$spalte["spielernr"]]) ? trim($daten[$spalte["spielernr"]]) : ""; + if (!empty($spielernr) && !ctype_digit(substr($spielernr, strlen($spielernr) - 1, 1))) + $spielernr = ""; + $spielernr_alt = isset($spalte["spielernr_alt"]) && isset($daten[$spalte["spielernr_alt"]]) ? trim($daten[$spalte["spielernr_alt"]]) : ""; + $lizenznr = isset($spalte["lizenznr"]) && isset($daten[$spalte["lizenznr"]]) ? $daten[$spalte["lizenznr"]] : ""; + if (!empty($lizenznr) && !ctype_digit(substr($lizenznr, strlen($lizenznr) - 1, 1))) + $lizenznr = ""; + $pseudonym = isset($spalte["pseudonym"]) && isset($daten[$spalte["pseudonym"]]) ? $daten[$spalte["pseudonym"]] : ""; + $organisation = isset($spalte["organisation"]) && isset($daten[$spalte["organisation"]]) ? $daten[$spalte["organisation"]] : ""; + $vereinssitz = isset($spalte["vereinssitz"]) && isset($daten[$spalte["vereinssitz"]]) ? $daten[$spalte["vereinssitz"]] : ""; + $vereinsname = isset($spalte["vereinsname"]) && isset($daten[$spalte["vereinsname"]]) ? $daten[$spalte["vereinsname"]] : ""; + $geburtsdatum = isset($spalte["geburtsdatum"]) && isset($daten[$spalte["geburtsdatum"]]) ? normalisiertesDatum($daten[$spalte["geburtsdatum"]]) : null; + $geburtsjahr = isset($spalte["geburtsjahr"]) && isset($daten[$spalte["geburtsjahr"]]) ? $daten[$spalte["geburtsjahr"]] : null; + if (empty($geburtsjahr) || !ctype_digit($geburtsjahr) || $geburtsjahr < 1800) + $geburtsjahr = null; + $email = isset($spalte["email"]) && isset($daten[$spalte["email"]]) ? $daten[$spalte["email"]] : ""; + $strasse = isset($spalte["strasse"]) && isset($daten[$spalte["strasse"]]) ? $daten[$spalte["strasse"]] : ""; + if (isset($spalte["plz/ort"]) && isset($daten[$spalte["plz/ort"]])) { + $pos = strpos($daten[$spalte["plz/ort"]], ' '); + if ($pos == false) { + $plz = ""; + $ort = ""; + } + else { + $plz = substr($daten[$spalte["plz/ort"]], 0, $pos); + $ort = substr($daten[$spalte["plz/ort"]], $pos + 1); + } + } + else { + $plz = ""; + $ort = ""; + } + if (isset($spalte["plz"])) + $plz = isset($daten[$spalte["plz"]]) ? $daten[$spalte["plz"]] : ""; + if (isset($spalte["ort"])) + $ort = isset($daten[$spalte["ort"]]) ? $daten[$spalte["ort"]] : ""; + $landeskennung = isset($spalte["landeskennung"]) && isset($daten[$spalte["landeskennung"]]) ? $daten[$spalte["landeskennung"]] : ""; + $telefon = isset($spalte["telefon"]) && isset($daten[$spalte["telefon"]]) ? $daten[$spalte["telefon"]] : ""; + $mobil = isset($spalte["mobil"]) && isset($daten[$spalte["mobil"]]) ? $daten[$spalte["mobil"]] : ""; + $beruf = isset($spalte["beruf"]) && isset($daten[$spalte["beruf"]]) ? $daten[$spalte["beruf"]] : ""; + + $query = "INSERT #__sportsmanager_spieler_import" + . "\n SET session_id = '" . $db->escape($session_id) . "'," + . "\n vorname = '" . $db->escape($vorname) . "'," + . "\n nachname = '" . $db->escape($nachname) . "'"; + if (isset($spalte["spielernr"])) + $query .= ",\n spielernr = '" . $db->escape($spielernr) . "'"; + if (isset($spalte["spielernr_alt"])) + $query .= ",\n spielernr_alt = '" . $db->escape($spielernr_alt) . "'"; + if (isset($spalte["lizenznr"])) + $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; + if (isset($spalte["pseudonym"])) + $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"; + $query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'"; + if (isset($spalte["geburtsdatum"])) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"])) + $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? ($geburtsdatum == null ? "NULL" : ("YEAR('" . $db->escape($geburtsdatum) . "')")) : ("'" . $db->escape($geburtsjahr) . "'")); + if (isset($spalte["strasse"])) + $query .= ",\n strasse = '" . $db->escape($strasse) . "'"; + if (isset($spalte["plz"])) + $query .= ",\n plz = '" . $db->escape($plz) . "'"; + if (isset($spalte["ort"])) + $query .= ",\n ort = '" . $db->escape($ort) . "'"; + if (isset($spalte["landeskennung"])) + $query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'"; + if (isset($spalte["telefon"])) + $query .= ",\n telefon = '" . $db->escape($telefon) . "'"; + if (isset($spalte["mobil"])) + $query .= ",\n mobil = '" . $db->escape($mobil) . "'"; + if (isset($spalte["email"])) + $query .= ",\n email = '" . $db->escape($email) . "'"; + if (isset($spalte["vereinsname"])) + $query .= ",\n vereinsname = '" . $db->escape($vereinsname) . "'"; + if (isset($spalte["vereinssitz"])) + $query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'"; + if (isset($spalte["organisation"])) + $query .= ",\n veranstalterbezeichnung = '" . $db->escape($organisation) . "'"; + $query .= ",\n mitgliedsstatus = '" . $mitgliedsstatus . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + +// if (!isset($veranstalter_import[$organisation])) +// $veranstalter_import[$organisation] = TRUE; + } + fclose($handle); + + if ($lizenz_import) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_spieler_import" + . "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $lizenzen_aktualisiert = $db->loadResult(); + + $query = "UPDATE #__sportsmanager_spieler_import" + . "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)" + . "\n SET #__sportsmanager_spieler.lizenznr = #__sportsmanager_spieler_import.lizenznr" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); + + return; + } + + $spalten = array(); + if (isset($spalte["pseudonym"])) + array_push($spalten, "pseudonym"); + if (isset($spalte["geschlecht"])) + array_push($spalten, "geschlecht"); + if (isset($spalte["spielernr"])) + array_push($spalten, "spielernr"); + if (isset($spalte["spielernr_alt"])) + array_push($spalten, "spielernr_alt"); + if (isset($spalte["lizenznr"])) + array_push($spalten, "lizenznr"); + if (isset($spalte["organisation"])) + array_push($spalten, "organisation"); + if (isset($spalte["vereinssitz"])) + array_push($spalten, "vereinssitz"); + if (isset($spalte["vereinsname"])) + array_push($spalten, "vereinsname"); + if (isset($spalte["geburtsdatum"])) + array_push($spalten, "geburtsdatum"); + if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"])) + array_push($spalten, "geburtsjahr"); + if (isset($spalte["email"])) + array_push($spalten, "email"); + if (isset($spalte["strasse"])) + array_push($spalten, "strasse"); + if (isset($spalte["strasse"])) + array_push($spalten, "strasse"); + if (isset($spalte["plz/ort"]) || isset($spalte["plz"])) + array_push($spalten, "plz"); + if (isset($spalte["plz/ort"]) || isset($spalte["ort"])) + array_push($spalten, "ort"); + if (isset($spalte["landeskennung"])) + array_push($spalten, "landeskennung"); + if (isset($spalte["telefon"])) + array_push($spalten, "telefon"); + if (isset($spalte["mobil"])) + array_push($spalten, "mobil"); + array_push($spalten, "mitgliedsstatus"); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter"; + if ($beschraenkter_zugriff) + $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); + $query .= "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT DISTINCT veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); + + $veranstalter_zugehoerigkeit = array(); + foreach ($veranstalter_import as $v) { + $query = "SELECT #__sportsmanager_veranstalter.veranstalter_id, COUNT(*) AS spieler" + . "\n FROM #__sportsmanager_spieler_import" + . "\n INNER JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" + . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr != '' AND " . (empty($v->veranstalterbezeichnung) ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v->veranstalterbezeichnung) . "'")) . " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" + . "\n GROUP BY #__sportsmanager_veranstalter.veranstalter_id" + . "\n ORDER BY spieler DESC" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) + $veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] = $rows[0]->veranstalter_id; + } + + $query = "SELECT DISTINCT vereinsname, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine_import = $db->loadObjectList(); + $vereine_import_anzahl = count($vereine_import); + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_verein"; + if ($beschraenkter_zugriff) + $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine_aktuell_anzahl = $db->loadResult(); + + if (!$beschraenkter_zugriff && count($vereine_import) == 1) { + $verein_import = $vereine_import[0]->vereinsname; + $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten" + . "\n ORDER BY veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + } + else { + $verein_import = ""; + $vereine = array(); + } + + HTML_sportsmanager_admin::adminImportSpielerDetails($beschraenkter_zugriff, $ansprechpartner_importieren, $veranstalter, $veranstalter_import, $veranstalter_zugehoerigkeit, $session_id, implode(",", $spalten), $verein_import, $vereine, einstellungswert("spielerimport_persoenliche_daten_vorauswahl"), $vereine_import_anzahl, $vereine_aktuell_anzahl); +} + +function adminImportSpielerVorschau() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + if (!ini_get('safe_mode')) + set_time_limit(300); + + $session_id = $jinput->get('session_id', '', 'RAW'); + + $query = "SELECT DISTINCT veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); + + $spalten = array(); + foreach (explode(",", $jinput->get('spalten', '', 'RAW')) as $s) + $spalten[$s] = true; + $veranstalter = array(); + $n = 1; + foreach ($veranstalter_import as $v) { + $veranstalter_id = $jinput->get('veranstalter_' . $n . '_id', '', 'INT'); + if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id))) + $veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id; + else + $veranstalter[$v->veranstalterbezeichnung] = ""; + $n++; + } + + $spielernr_aendern = false; + if (isset($spalten["spielernr_alt"])) { + $query = "SELECT nachname, vorname, spielernr, spielernr_alt" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != ''" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielervergleich = $db->loadObjectList(); + + if (count($spielervergleich) > 0) { + $spielernr_aendern = true; + $s1 = $spielervergleich[0]; + $query = "SELECT nachname, vorname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE spielernr = '$s1->spielernr'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + if (count($spieler) > 0) { + $s2 = $spieler[0]; + if ($s1->vorname == $s2->vorname && $s1->nachname == $s1->nachname) { + $query = "UPDATE #__sportsmanager_spieler_import" + . "\n SET spielernr_alt = NULL"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielernr_aendern = false; + } + } + + if ($spielernr_aendern) { + $query = "SELECT nachname, vorname" + . "\n FROM" + . "\n (SELECT nachname, vorname, spielernr, spielernr_alt" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import" + . "\n INNER JOIN" + . "\n (SELECT spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n ) AS bestand" + . "\n ON bestand.spielernr = import.spielernr" + . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $konflikte = $db->loadObjectList(); + + if (count($konflikte) > 0) { + HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); + + return; + } + } + } + } + + $query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt," + . "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) AS namensgleich" + . "\n FROM #__sportsmanager_spieler_import" + . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr") + . "\n WHERE session_id = '" . $db->escape($session_id) . "'" + . "\n HAVING namensgleich > 0 OR NOT ISNULL(nachname_alt) OR NOT ISNULL(vorname_alt)" + // "namensgleich" kann in der "ORDER"-Anweisung" nicht verwendet werden, da MySQL 5.0.x dies nicht akzeptiert + . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) > 0 DESC, nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler_import = $db->loadObjectList(); + + $import_verweigern = false; + if ($beschraenkter_zugriff) { + $eintraege_zugeordnet = 0; + $eintraege_nicht_zugeordnet = 0; + foreach ($spieler_import as $s) { + if ($s->namensgleich > 0) { + $import_verweigern = true; + break; + } + $p1 = $p2 = 100; + if ($s->nachname_alt != null) + similar_text($s->nachname, $s->nachname_alt, $p1); + if ($s->vorname_alt != null) + similar_text($s->vorname, $s->vorname_alt, $p2); + if (floor($p1) < 75 && floor($p2) < 75) { + $p1 = $p2 = 100; + if ($s->nachname_alt != null) + similar_text($s->vorname, $s->nachname_alt, $p1); + if ($s->vorname_alt != null) + similar_text($s->nachname, $s->vorname_alt, $p2); + if (floor($p1) < 75 && floor($p2) < 75) { + $import_verweigern = true; + break; + } + } + } + if (!$import_verweigern) { + $query = "SELECT SUM(IF(ISNULL(spieler_id), 0, 1)) AS zugeordnet, SUM(IF(ISNULL(spieler_id), 1, 0)) AS nicht_zugeordnet" + . "\n FROM #__sportsmanager_spieler_import" + . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr") + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler_zugeordnet = $db->loadObjectList(); + + if (count($spieler_zugeordnet) > 0 && $spieler_zugeordnet[0]->nicht_zugeordnet > ($spieler_zugeordnet[0]->zugeordnet / 2)) + $import_verweigern = true; + } + } + + if ($import_verweigern) { + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + HTML_sportsmanager_admin::adminImportSpielerVorschau($import_verweigern, $spieler_import, $veranstalter, $session_id, $jinput->get('persoenliche_daten', 0, 'INT'), $jinput->get('lizenznr_beibehalten', 0, 'INT'), $jinput->get('spalten', '', 'RAW')); +} + +function adminImportSpieler() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + if (!ini_get('safe_mode')) + set_time_limit(300); + + + if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1) + $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" + else + $persoenliche_daten = 0; + $lizenznr_beibehalten = $jinput->get('lizenznr_beibehalten', 0, 'INT'); + + $session_id = $jinput->get('session_id', '', 'RAW'); + $query = "SELECT DISTINCT veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); + + $spalten = array(); + foreach (explode(",", $jinput->get('spalten', '', 'RAW')) as $s) + $spalten[$s] = true; + $veranstalter = array(); + $n = 1; + $verein_explizit = 0; + foreach ($veranstalter_import as $v) { + if (isset($_POST["veranstalter_" . $n . "_id"])) { + $veranstalter_id = $jinput->get('veranstalter_' . $n . '_id', '', 'INT'); + if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id))) { + if ($veranstalter_id == "") + $veranstalter_id = -1; + else if ($veranstalter_id < 0) { + $verein_explizit = abs($veranstalter_id); + break; + } + else + $veranstalter_id = intval($veranstalter_id); + $veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id; + } + else { + $veranstalter[$v->veranstalterbezeichnung] = -1; + } + } + $n++; + } + + $query = "LOCK TABLES #__sportsmanager_einstellungen READ, #__sportsmanager_spieler WRITE, #__sportsmanager_spieler AS tt1 READ, #__sportsmanager_spieler AS tt2 READ, #__sportsmanager_spieler_import WRITE, #__sportsmanager_spieler_import AS it1 READ, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_mitglied_von_verein AS t1 READ, #__sportsmanager_verein WRITE, #__sportsmanager_veranstalter READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + /* + // TODO: Importinhalt um Spielernummern ergänzen, dann UPDATE aller gegebenen Spalten. So kein Vorgehen Spieler für Spieler erforderlich. + + Immer Spieler neu hinzufügen, wenn Spieler über Spielernr. nicht gefunden werden konnte, d.h. + wenn keine Spielernr. vorhanden, dann Spielernr. generieren + sonst Spielernr. übernehmen + +*/ + + if (isset($spalten["spielernr_alt"])) { + $query = "SELECT nachname, vorname" + . "\n FROM" + . "\n (SELECT nachname, vorname, spielernr, spielernr_alt" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import" + . "\n INNER JOIN" + . "\n (SELECT spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n ) AS bestand" + . "\n ON bestand.spielernr = import.spielernr" + . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import AS it1 WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $konflikte = $db->loadObjectList(); + + if (count($konflikte) > 0) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); + + return; + } + + $query = "UPDATE #__sportsmanager_spieler" + . "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(spielernr_alt) AND spielernr_alt != '' AND spielernr_alt = #__sportsmanager_spieler.spielernr" + . "\n SET #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr_alt"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT IF(EXISTS(" + . "\n SELECT * FROM #__sportsmanager_spieler" + . "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(#__sportsmanager_spieler_import.spielernr) AND #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" + . "\n WHERE #__sportsmanager_spieler_import.geschlecht != #__sportsmanager_spieler.geschlecht OR #__sportsmanager_spieler_import.geburtsjahr != #__sportsmanager_spieler.geburtsjahr" + . "\n), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $kategorie_potentiell_geaendert = $db->loadResult(); + + $query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt," + . "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt1 WHERE (#__sportsmanager_spieler_import.vorname = tt1.vorname AND #__sportsmanager_spieler_import.nachname = tt1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt1.geburtsjahr))), 0) AS namensgleich" + . "\n FROM #__sportsmanager_spieler_import" + . "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND 1 = 1" + // "namensgleich", "nachname_alt", "vorname_alt" kann in der "ORDER"-Anweisung" nicht verwendet werden, da MySQL 5.0.x dies nicht akzeptiert + // . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt2 WHERE (#__sportsmanager_spieler_import.vorname = tt2.vorname AND #__sportsmanager_spieler_import.nachname = tt2.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt2.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt2.geburtsjahr))), 0) > 0 DESC, IF(NOT ISNULL(nachname_alt) OR NOT ISNULL(vorname_alt), 0, 1), nachname, vorname"; + . "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt2 WHERE (#__sportsmanager_spieler_import.vorname = tt2.vorname AND #__sportsmanager_spieler_import.nachname = tt2.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt2.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt2.geburtsjahr))), 0) > 0 DESC, IF(NOT ISNULL(IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL)) OR NOT ISNULL(IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL)), 0, 1), nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler_import = $db->loadObjectList(); + + if (empty($verein_explizit)) { + // Alle Vereinsmitgliedschaften des Verbandes vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können + foreach ($veranstalter as $v => $veranstalterid) { + if ($veranstalterid != -1) { + $query = "UPDATE #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id)" + . "\n SET mitgliedsstatus = 0," + . "\n #__sportsmanager_mitglied_von_verein.ausgetreten = TRUE" + . "\n WHERE " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + else if ($verein_explizit != -1) { + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + + // Alle Vereinsmitgliedschaften des Vereins vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET mitgliedsstatus = 0," + . "\n ausgetreten = TRUE" + . "\n WHERE verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" + . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + + // Nächste Spieler-Nr. ermitteln + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); + $naechste_spielernr = $rows[0]->wert; + if (empty($naechste_spielernr)) + $naechste_spielernr = "1"; + + for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { + if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') + break; + } + $spielernr_praefix = substr($naechste_spielernr, 0, $i + 1); + + $query = "SELECT spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'" + . "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) > 0) { + $naechste_spielernr = $rows[0]->spielernr; + for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { + if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { + $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); + break; + } + if ($naechste_spielernr[$i] <= '8') { + $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; + break; + } + // $naechste_spielernr[$i] == '9' + $naechste_spielernr[$i] = '0'; + } + if ($i < 0) + $naechste_spielernr = "1" . $naechste_spielernr; + } + + $aktualisierungen = 0; + $spielerHinzugefuegt = array(); + $vereineHinzugefuegt = 0; + $vereineManuell = array(); + $spielerIdsHinzugefuegt = array(); + + $organisation = -1; + $veranstalterid = -1; + foreach ($spieler_import as $t) { + // wenn der Spieler ausgetreten ist, dann nicht prüfen + $mitgliedsstatus = $t->mitgliedsstatus; + if ($mitgliedsstatus == 0) + continue; + + if (empty($verein_explizit)) { + if ($organisation != $t->veranstalterbezeichnung) { + $organisation = $t->veranstalterbezeichnung; + $veranstalterid = isset($veranstalter[$organisation]) ? $veranstalter[$organisation] : -1; + } + if ($veranstalterid == -1) + continue; + } + + $spieler_id = $t->spieler_id; + $nachname = $t->nachname; + $vorname = $t->vorname; + $name = $t->vorname . " " . $t->nachname; + $geschlecht = $t->geschlecht; + $spielernr = $t->spielernr; + $lizenznr = $t->lizenznr; + $pseudonym = $t->pseudonym; + $vereinsname = $t->vereinsname; + $geburtsdatum = $t->geburtsdatum; + $geburtsjahr = $t->geburtsjahr; + $email = $t->email; + $strasse = $t->strasse; + $plz = $t->plz; + $ort = $t->ort; + $landeskennung = $t->landeskennung; + $telefon = $t->telefon; + $mobil = $t->mobil; + $spielernr = $t->spielernr; + + if ($spieler_id == null && !empty($spielernr) && isset($spielerIdsHinzugefuegt[$spielernr])) + $spieler_id = $spielerIdsHinzugefuegt[$spielernr]; // Wenn Spieler schon hinzugefügt wurde, dann vorhandenen Eintrag verwenden; verhindert doppeltes Hinterlegen von Spielernr. + + // Wenn kein Vereinsname angegeben ist, aber eine Organisation gewählt wurde, dann Spieler nicht ergänzen + if ($spieler_id == null && empty($vereinsname) && empty($verein_explizit)) + continue; + + // Spieler aktualisieren bzw. ergänzen + if ($spieler_id != null) { // Spieler aktualisieren + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET vorname = '" . $db->escape($vorname) . "'," + . "\n nachname = '" . $db->escape($nachname) . "'," + . "\n spielernr = '" . $db->escape($spielernr) . "'"; + if (isset($spalten["lizenznr"]) && ($lizenznr_beibehalten == 0 || !empty($lizenznr))) + $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; + if (isset($spalten["pseudonym"])) + $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"; + if (isset($spalten["geschlecht"])) + $query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'"; + if (isset($spalten["geburtsdatum"]) || isset($spalten["geburtsjahr"])) + $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); + if (($persoenliche_daten == 1 || $persoenliche_daten == 2) && isset($spalten["geburtsdatum"])) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + if ($persoenliche_daten == 2) { + if (isset($spalten["strasse"])) + $query .= ",\n strasse = '" . $db->escape($strasse) . "'"; + if (isset($spalten["plz"])) + $query .= ",\n plz = '" . $db->escape($plz) . "'"; + if (isset($spalten["ort"])) + $query .= ",\n ort = '" . $db->escape($ort) . "'"; + if (isset($spalten["landeskennung"])) + $query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'"; + if (isset($spalten["telefon"])) + $query .= ",\n telefon = '" . $db->escape($telefon) . "'"; + if (isset($spalten["mobil"])) + $query .= ",\n mobil = '" . $db->escape($mobil) . "'"; + if (isset($spalten["email"])) + $query .= ",\n email = '" . $db->escape($email) . "'"; + } + $query .= "\n WHERE spieler_id = $spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + // $bearbeitungsVerlauf .= "-> Spielerdaten aktualisiert "; + + $aktualisierungen++; + } + else { // Spieler ergänzen + // Neuen Spieler anlegen + $query = "INSERT #__sportsmanager_spieler" + . "\n SET vorname = '" . $db->escape($vorname) . "'" + . ",\n nachname = '" . $db->escape($nachname) . "'" + . ",\n spielernr = '" . $db->escape(!empty($spielernr) ? $spielernr : $naechste_spielernr) . "'" + . ",\n lizenznr = '" . $db->escape($lizenznr) . "'" + . ",\n geschlecht = '" . $db->escape($geschlecht) . "'" + . ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); + if ($persoenliche_daten == 1 || $persoenliche_daten == 2) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + if ($persoenliche_daten == 2) + $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'" + . ",\n strasse = '" . $db->escape($strasse) . "'" + . ",\n plz = '" . $db->escape($plz) . "'" + . ",\n ort = '" . $db->escape($ort) . "'" + . ",\n landeskennung = '" . $db->escape($landeskennung) . "'" + . ",\n telefon = '" . $db->escape($telefon) . "'" + . ",\n mobil = '" . $db->escape($mobil) . "'" + . ",\n email = '" . $db->escape($email) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler_id = $db->insertid(); + + array_push($spielerHinzugefuegt, array($nachname, $vorname, !empty($spielernr) ? $spielernr : $naechste_spielernr)); + $spielerIdsHinzugefuegt[!empty($spielernr) ? $spielernr : $naechste_spielernr] = $spieler_id; + + if (empty($spielernr)) { + do { + for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) { + if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') { + $naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1); + break; + } + if ($naechste_spielernr[$i] <= '8') { + $naechste_spielernr[$i] = $naechste_spielernr[$i] + 1; + break; + } + // $naechste_spielernr[$i] == '9' + $naechste_spielernr[$i] = '0'; + } + if ($i < 0) + $naechste_spielernr = "1" . $naechste_spielernr; + } while (isset($spielerIdsHinzugefuegt[$naechste_spielernr])); + } + } + + // Wenn nicht ausgetreten und Vereisname angegeben, dann Vereinsmitgliedschaft herstellen + if (!empty($vereinsname) || !empty($verein_explizit)) { + // Prüfen, ob Vereinsmitgliedschaft besteht + if (!empty($verein_explizit)) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n WHERE spieler_id = $spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) { + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET mitgliedsstatus = '$mitgliedsstatus'," + . "\n ausgetreten = FALSE" + . "\n WHERE spieler_id = $spieler_id AND verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + // Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert + $query = "SELECT verein_id" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + // Wenn Verein existiert, dann Mitgliedschaft ergänzen + if (count($rows) > 0) { + $query = "INSERT #__sportsmanager_mitglied_von_verein" + . "\n SET spieler_id = $spieler_id, verein_id = $verein_explizit, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + else { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" + . "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" + . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) { + $query = "UPDATE #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" + . "\n SET mitgliedsstatus = '$mitgliedsstatus', #__sportsmanager_mitglied_von_verein.ausgetreten = FALSE" + . "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" + . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + // Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert + $query = "SELECT verein_id" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE vereinsname = '" . $db->escape($vereinsname) . "'" + . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + // Wenn mehrere Vereine existieren, dann Aktualisierung auslassen + if (count($rows) > 1) { + array_push($vereineManuell, $name); + // $bearbeitungsVerlauf .= "-> Vereinsaktualiesierung übersprungen, da mehrere Vereine mit Namen existieren"; + // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; + continue; + } + // Wenn Verein nicht existiert, dann ergänzen + if (count($rows) == 0) { + $query = "INSERT #__sportsmanager_verein" + . "\n SET vereinsname = '" . $db->escape($vereinsname) . "'"; + if (!empty($vereinssitz)) + $query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'"; + $query .= ",\n veranstalter_id = " . ($veranstalterid == 0 ? "NULL" : "$veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $verein_id = $db->insertid(); + $vereineHinzugefuegt++; + // $bearbeitungsVerlauf .= "-> Verein ergänzt "; + } + // Sonst Verein merken + else { + $verein_id = $rows[0]->verein_id; + // $bearbeitungsVerlauf .= "-> Verein gefunden "; + } + + // Vereinsmitgliedschaft setzen + $query = "INSERT #__sportsmanager_mitglied_von_verein" + . "\n SET spieler_id = $spieler_id, verein_id = $verein_id, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + // $bearbeitungsVerlauf .= "-> Vereinsmitgliedschaft ergänzt "; + } + } + } + // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; + } + + $ausgetreteneVereineMitAktivenMitgliedern = array(); + /* + if ($verein_explizit != 0) { + // Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied des importierten Vereins waren + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET ausgetreten = TRUE" + . "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit AND #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id) > 0" + . " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0" + . " AND NOT ausgetreten"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + } + else { + // Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied in einem Verein des Verbandes waren oder sind + foreach ($veranstalter as $v => $veranstalterid) { + if ($veranstalterid != -1) { + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET ausgetreten = TRUE" + . "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid") . ") > 0" + . " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0" + . " AND NOT ausgetreten"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + } + } + */ + + if ($verein_explizit == 0) { + // Vereine der Organisation als ausgetreten notieren, die keine aktiven Mitglieder haben + foreach ($veranstalter as $v => $veranstalterid) { + if ($veranstalterid != -1) { + $query = "UPDATE #__sportsmanager_verein" + . "\n SET ausgetreten = TRUE" + . "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND NOT ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + // Vereine der Organisation aus nicht ausgetreten notieren, die aktive Mitglieder haben, aber als ausgetreten notiert sind + foreach ($veranstalter as $v => $veranstalterid) { + if ($veranstalterid != -1) { + $query = "SELECT vereinsname" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $query = "UPDATE #__sportsmanager_verein" + . "\n SET ausgetreten = FALSE" + . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + foreach ($rows as $row) + array_push($ausgetreteneVereineMitAktivenMitgliedern, $row->vereinsname); + + $query = "SELECT DISTINCT verein_id, #__sportsmanager_spieler_import.vereinsname, #__sportsmanager_spieler_import.vereinssitz" + . "\n FROM #__sportsmanager_spieler_import" + . "\n INNER JOIN #__sportsmanager_verein ON #__sportsmanager_verein.vereinsname = #__sportsmanager_spieler_import.vereinsname" + . "\n WHERE session_id = '" . $db->escape($session_id) . "' AND " . ($v == null ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v) . "'")) . " AND #__sportsmanager_spieler_import.vereinsname != '' AND #__sportsmanager_spieler_import.vereinssitz != '' AND (ISNULL(#__sportsmanager_verein.vereinssitz) OR #__sportsmanager_verein.vereinssitz != #__sportsmanager_spieler_import.vereinssitz) AND NOT #__sportsmanager_verein.ausgetreten AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "UPDATE #__sportsmanager_verein" + . "\n SET vereinssitz = '" . $db->escape($row->vereinssitz) . "'" + . "\n WHERE verein_id = $row->verein_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + sort($vereineManuell); + sort($ausgetreteneVereineMitAktivenMitgliedern); + + aktuellerVereinAktualisieren(); + if ($kategorie_potentiell_geaendert) { + ranglisteAktualisieren(); + einstufungAktualisieren(); + } + + HTML_sportsmanager_admin::adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); +} + +function adminExportSpielerInternationalForm() { + $db =& getDatabase(); + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); + + HTML_sportsmanager_admin::adminExportSpielerInternational(); +} + +function csvFilter($value, $decode = true) { + if ($value === null) + return ""; + if ($decode) + $value = utf8_decode($value); + $value = str_replace('"', '""', $value); + /* + $value = str_replace("\t", ' ', $value); + $value = str_replace("\r", '', $value); + $value = str_replace("\n", ' ', $value); + */ + + // escape tab characters + $value = preg_replace("/\t/", "\\t", $value); + + // escape new lines + $value = preg_replace("/\r?\n/", "\\n", $value); + + /* + // convert 't' and 'f' to boolean values + if($str == 't') $str = 'TRUE'; + if($str == 'f') $str = 'FALSE'; + */ + + // force certain number/date formats to be imported as strings + /* + if (preg_match("/^0/", $value) || preg_match("/^\+?\d{8,}$/", $value) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $value)) + $value = "'$value"; + */ + + /* + // escape fields that include double quotes + if(strstr($value, '"')) $value = '"' . str_replace('"', '""', $value) . '"'; + */ + $value = '="' . $value . '"'; + + return $value; +} + +function adminExportSpielerInternational() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" + $landeskennung = $db->escape(trim($jinput->get('landeskennung', '', 'RAW'))); + + $jahr = date("Y"); + $query = "SELECT lizenznr, vorname, nachname, spielernr, geschlecht, geburtsjahr"; + if ($persoenliche_daten == 1) + $query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym"; + $query .= "\n FROM #__sportsmanager_spieler"// . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid AND NOT t1.ausgetreten AND NOT t2.ausgetreten)" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) { + redirectSportsManagerURL('&task=admin_spieler_export_international_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); + + return; + } + + $dateiname = "Spieler international " . date('Y-m-d') . ".csv"; + $dateiname = bereinigterDateiname($dateiname); + + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + Header("Content-Type: text/x-csv"); + Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); + Header("Pragma: no-cache"); + + $trennzeichen = "\t"; + + $header = "ITSF Number\tGender\tFirst Name\tLAST NAME\tNationality\tYear of birth\tNational Code\tPlayer in wheelchair ?\tE-mail\tCountry of residence\tAddress\tZip/Postal Code\tCity\tPhone\tProfession"; + echo "sep=" . $trennzeichen . "\n" . $header . "\n"; + foreach ($rows as $row) { + echo csvFilter($row->lizenznr) . $trennzeichen + . csvFilter($row->geschlecht == "M" ? "M" : "F") . $trennzeichen + . csvFilter($row->vorname) . $trennzeichen + . csvFilter($row->nachname) . $trennzeichen + . csvFilter($landeskennung) . $trennzeichen + . csvFilter($row->geburtsjahr) . $trennzeichen + . csvFilter($row->spielernr) . $trennzeichen + . "N" . $trennzeichen; + if ($persoenliche_daten == 1) { + echo csvFilter($row->email) . $trennzeichen + . csvFilter($row->landeskennung) . $trennzeichen + . csvFilter($row->strasse) . $trennzeichen + . csvFilter($row->plz) . $trennzeichen + . csvFilter($row->ort) . $trennzeichen + . csvFilter($row->telefon) . $trennzeichen + . "\n"; + } + else { + echo $trennzeichen + . $trennzeichen + . $trennzeichen + . $trennzeichen + . $trennzeichen + . $trennzeichen + . "\n"; + } + } + die(); +} + +function adminExportSpielerForm() { + $db =& getDatabase(); + + $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)"; + if ($beschraenkter_zugriff) + $query .= " AND" . veranstalterFilter("veranstalter_id IN"); + $query .= "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + if (!$beschraenkter_zugriff) { + $query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)" + . "\n ORDER BY veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + } + else { + $vereine = array(); + } + + HTML_sportsmanager_admin::adminExportSpieler($beschraenkter_zugriff, $ansprechpartner_exportieren, $veranstalter, $vereine); +} + +function adminExportSpieler() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren"); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + $verein_explizit = 0; + if ($beschraenkter_zugriff) { + $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); + if (!benutzerVeranstalterModerator($veranstalterid)) + $veranstalterid = 0; + $verein_explizit = 0; + $ausgetretene = 0; + if ($ansprechpartner_exportieren != 1) + $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" + else + $persoenliche_daten = 0; + $organisatorische_daten = 0; + $statistische_daten = 1; + } + else { + $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); + $verein_explizit = $veranstalterid < 0 ? abs($veranstalterid) : 0; + + $ausgetretene = $jinput->get('ausgetretene', 0, 'INT'); // "Nein", "Ja" + $persoenliche_daten = $jinput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" + $organisatorische_daten = $jinput->get('organisatorische_daten', 0, 'INT'); // 0: "Verein, Vereinssitz, Wettbewerb, Mannschaft, Ausgetreten", 1: "Ausgetreten" + $statistische_daten = $jinput->get('statistische_daten', 0, 'INT'); // 0: "Elo-Werte, Kategorie, Zuletzt gespielt", 1: "Kategorie", 2: "Keine" + } + + if ($verein_explizit != 0) { + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $verein = $rows[0]; + } + else if ($veranstalterid != 0) { + $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $veranstalter = $rows[0]; + } + + $jahr = date("Y"); + $query = "SELECT nachname, vorname, spielernr, lizenznr, lizenz, geschlecht"; + if ($statistische_daten != 2) + $query .= ",\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie"; + if ($organisatorische_daten != 2) + $query .= ",\n vereinsname as verein, vereinssitz, veranstalterbezeichnung as organisation, IF(mitgliedsstatus = 1, 'Aktiv', IF(mitgliedsstatus = 0, 'Ausgetreten', IF(mitgliedsstatus = 2, 'Eingeschränkt', 'Passiv'))) AS mitgliedsstatus"; + else if ($ausgetretene != 0) + $query .= ", IF(ISNULL(aktueller_verein_id), 'Ausgetreten', 'Aktiv') as mitgliedsstatus"; + if ($persoenliche_daten == 0) + $query .= ",\n geburtsjahr"; + if ($persoenliche_daten != 0) + $query .= ",\n geburtsjahr, geburtsdatum"; + if ($persoenliche_daten == 2) + $query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym"; + if ($organisatorische_daten == 1) + $query .= ",\n (SELECT bezeichnung FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS wettbewerb," + . "\n (SELECT teamname FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS mannschaft"; + if ($statistische_daten == 0) + $query .= ",\n zuletzt_gespielt, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele"; + $query .= "\n FROM #__sportsmanager_spieler"; + if ($organisatorische_daten != 2) { + $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"; + } + if ($beschraenkter_zugriff == 2) + $query .= "\n WHERE " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"; + else if ($verein_explizit != 0) { + if ($ausgetretene != 0) + $query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit"; + else + $query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"; + } + else if ($veranstalterid != 0) { + if ($ausgetretene != 0) { + if ($organisatorische_daten == 0) + $query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterid"; + else + $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid) > 0"; + } + else { + if ($organisatorische_daten == 0) + $query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterid AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten"; + else + $query .= "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterid AND NOT t1.ausgetreten AND NOT t2.ausgetreten)"; + } + } + else if ($ausgetretene == 0) { + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; + if ($organisatorische_daten == 0) + $query .= " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten"; + } + if ($organisatorische_daten == 0) + $query .= "\n ORDER BY nachname, vorname, IF(ISNULL(IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL)), 1, 0), IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL), verein"; + else + $query .= "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) { + redirectSportsManagerURL('&task=admin_spieler_export_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); + + return; + } + + $dateiname = "Spieler"; + if ($verein_explizit != 0) + $dateiname .= " " . utf8_decode($verein->vereinsname); + else if ($veranstalterid != 0) + $dateiname .= " " . utf8_decode($veranstalter->veranstalterbezeichnung); + $dateiname .= " " . date('Y-m-d') . ".csv"; + $dateiname = bereinigterDateiname($dateiname); + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + Header("Content-Type: text/x-csv"); + Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); + Header("Pragma: no-cache"); + + $trennzeichen = "\t"; + + $header = ""; + foreach ($rows[0] as $field => $value) + $header .= $field . $trennzeichen; + + $data = ""; + foreach ($rows as $row) { + $line = ''; + foreach ($row as $value) { + if ((!isset($value)) OR ($value == "")) { + $value = $trennzeichen; + } + else { + $value = str_replace('"', '""', $value); + $value = str_replace("\t", ' ', $value); + $value = str_replace("\r", '', $value); + $value = str_replace("\n", ' ', $value); + $value = '="' . $value . '"' . $trennzeichen; + } + $line .= $value; + } + $data .= trim($line) . "\n"; + } + $data = str_replace("\r", "", $data); + + echo "sep=" . $trennzeichen . "\n" . $header . "\n" . utf8_decode($data); + + die(); +} + +function adminExportSpielerSport() { + $db =& getDatabase(); + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator()) + $beschraenkter_zugriff = 1; +// else if (benutzerVereinModerator()) +// $beschraenkter_zugriff = 2; + else + keinZugriff(true); + + $jahr = date("Y"); + $query = "SELECT *," + . " IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie, vereinsname" +// . " (SELECT veranstalterbezeichnung FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein, #__sportsmanager_veranstalter WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_verein.spieler_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id ORDER BY #__sportsmanager_verein.verein_id DESC LIMIT 1) AS veranstalterbezeichnung" +// . "\n (SELECT bezeichnung FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS wettbewerb," +// . "\n (SELECT teamname FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS mannschaft" + . "\n FROM #__sportsmanager_spieler"; + + if ($beschraenkter_zugriff == 2) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + else + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n INNER JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $dateiname = "Spieler " . date('Y-m-d') . ".csv"; + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + Header("Content-Type: text/x-csv; charset=utf-8;"); + Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); + Header("Pragma: no-cache"); + echo "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM\r\n"; + + $wiederholung_zaehler = 0; + foreach ($rows as $index => $row) { + $spielernr = $row->spielernr != null && $row->spielernr != "" ? $row->spielernr : "N/A"; + $lizenznr = $row->lizenznr != null && $row->lizenznr != "" ? $row->lizenznr : "N/A"; + $kategorie = array("H" => "Herren", "D" => "Damen", "J" => "Junioren", "S" => "Senioren"); + $kommentar = $kategorie[$row->kategorie]; + if ($lizenznr != null && $row->lizenznr != "") + $kommentar .= " / " . $lizenznr; + /* + echo $row->nachname . "#" . $row->vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#" + . ($row->vereinsname != NULL ? ($row->vereinsname . ($row->veranstalterbezeichnung != NULL ? (" (" . $row->veranstalterbezeichnung . ")") : "")) : "Keiner") . "#" . $row->strasse . "#" . trim($row->plz . " " . $row->ort) . "#" . $row->telefon . "#" + . "" . "#" . $row->mobil . "#" . $row->email . "#" . $kommentar . "#" . $spielernr . "#" . $row->geburtsdatum . "\r\n"; + */ + $vorname = $row->vorname; + $nachname = $row->nachname; + $naechster_name = isset($rows[$index + 1]) ? ($rows[$index + 1]->nachname . ", " . $rows[$index + 1]->vorname) : null; + $name = $nachname . ", " . $vorname; + if ($name == $naechster_name || $wiederholung_zaehler > 0) // Sports Manager macht einen case sensitive-Vergleich + $vorname .= " (" . ($wiederholung_zaehler + 1) . ")"; + if ($name == $naechster_name) + $wiederholung_zaehler++; + else + $wiederholung_zaehler = 0; + echo utf8_decode($nachname . "#" . $vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#" + . ($row->vereinsname != null ? $row->vereinsname : "Keiner") . "#######" . $kommentar . "#" . $spielernr . "#\r\n"); + } + die(); +} + +function adminVereine() { + $db =& getDatabase(); + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $organisationAnzeigen = $db->loadResult() > 1; + + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, ausgetreten, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen); +} + +function adminEditVerein() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if ($id == null) { + $row = null; + $berechtigt_fuer_verein = null; + $vereinsansprechpartner = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + + $query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_verein AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_verein_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_verein = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id ORDER BY vereinsansprechpartner_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereinsansprechpartner = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditVerein($row, $users, $veranstalter, $berechtigt_fuer_verein, $vereinsansprechpartner); +} + +function adminSaveVerein() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $vereinsname = $db->escape(trim($jinput->get('vereinsname', '', 'RAW'))); + $vereinssitz = $db->escape(trim($jinput->get('vereinssitz', '', 'RAW'))); + $vereinssitz_ortsteil = $db->escape(trim($jinput->get('vereinssitz_ortsteil', '', 'RAW'))); + $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); + $url = $db->escape(trim($jinput->get('url', '', 'RAW'))); + $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); + $ausgetreten = $jinput->get('ausgetreten', 0, 'INT'); + $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); + + $berechtigt_fuer_verein_user_ids = array($jinput->get('berechtigt_fuer_verein_user_1_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_verein_user_2_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_verein_user_3_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_verein_user_4_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_verein_user_5_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_verein_user_6_id', 0, 'INT')); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine#id' . $id); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_verein WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_vereinsansprechpartner WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" + . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_verein" + . "\n SET vereinsname = '$vereinsname'," + . "\n vereinssitz = '$vereinssitz'," + . "\n vereinssitz_ortsteil = '$vereinssitz_ortsteil'," + . "\n veranstalter_id = " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . "," + . "\n url = '$url'," + . "\n beschreibung = '$beschreibung'," + . "\n ausgetreten = " . ($ausgetreten ? "TRUE" : "FALSE") + . "\n WHERE verein_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Vereinsvertreter speichern + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[5];"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + for ($nummer = 0; $nummer <= 5; $nummer++) { + $berechtigt_user_id = $berechtigt_fuer_verein_user_ids[$nummer]; + if ($berechtigt_user_id != 0) { + $gefunden = false; + foreach ($rows as $row) { + if ($row->berechtigt_user_id == $berechtigt_user_id) + $gefunden = true; + } + if (!$gefunden) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_verein (berechtigt_user_id, berechtigt_verein_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Ansprechpartner speichern + + for ($nummer = 1; $nummer <= 3; $nummer++) { + $vereinsansprechpartner_id = $jinput->get('vereinsansprechpartner_' . $nummer . '_id', 0, 'INT'); + $vereinsansprechpartner_vorname = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_vorname', '', 'RAW')); + $vereinsansprechpartner_nachname = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_nachname', '', 'RAW')); + $vereinsansprechpartner_telefon = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_telefon', '', 'RAW')); + $vereinsansprechpartner_mobil = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_mobil', '', 'RAW')); + $vereinsansprechpartner_email = trim($jinput->get('vereinsansprechpartner_' . $nummer . '_email', '', 'RAW')); + + if ($vereinsansprechpartner_id == 0) { + if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) { + $query = "INSERT INTO #__sportsmanager_vereinsansprechpartner (verein_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$vereinsansprechpartner_vorname', '$vereinsansprechpartner_nachname', '$vereinsansprechpartner_telefon', '$vereinsansprechpartner_mobil', '$vereinsansprechpartner_email');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) { + $query = "UPDATE #__sportsmanager_vereinsansprechpartner" + . "\n SET vorname = '$vereinsansprechpartner_vorname'," + . "\n nachname = '$vereinsansprechpartner_nachname'," + . "\n telefon = '$vereinsansprechpartner_telefon'," + . "\n mobil = '$vereinsansprechpartner_mobil'," + . "\n email = '$vereinsansprechpartner_email'" + . "\n WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($bildbeibehalten == 0) { + bildLoeschen("vereine", $id); + + if (!empty($_FILES["bild"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { + $size = getimagesize($_FILES["bild"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { + redirectSportsManagerURL('&task=admin_vereine', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt."); + + return; + } + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine'; + if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 240, 240, 0)) { + redirectSportsManagerURL('&task=admin_vereine', "Das Bild konnte nicht an die Zielposition kopiert werden."); + + return; + } + } + } + } + + aktuellerVereinAktualisieren(); + + redirectSportsManagerURL('&task=admin_vereine#id' . $id); +} + +function adminRemoveVerein() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_team WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_vereinsansprechpartner WRITE, #__sportsmanager_verein WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_team SET verein_id = NULL WHERE verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rechnung SET verein_id = NULL WHERE verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("vereine", $id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + aktuellerVereinAktualisieren(); + + redirectSportsManagerURL('&task=admin_vereine'); +} + +function adminVereineZusammenlegenForm() { + $db =& getDatabase(); + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n ORDER BY veranstalterbezeichnung, vereinsname, ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVereineZusammenlegen($vereine); +} + +function adminVereineZusammenlegen() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine'); + + return; + } + + $verein_beizubehalten_id = $jinput->get('verein_beizubehalten_id', 0, 'INT'); + $verein_zu_entfernen_id = $jinput->get('verein_zu_entfernen_id', 0, 'INT'); + + if ($verein_beizubehalten_id == $verein_zu_entfernen_id) { + redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Vereine gewählt werden"); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_verein WRITE, #__sportsmanager_mitglied_von_verein WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_mitglied_von_verein AS t1 WRITE, #__sportsmanager_vereinsansprechpartner WRITE, #__sportsmanager_berechtigt_fuer_verein WRITE, #__sportsmanager_team WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET verein_id = $verein_beizubehalten_id" + . "\n WHERE verein_id = $verein_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT mitglied_von_verein_id, ausgetreten, spieler_id" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_beizubehalten_id" + . "\n ORDER BY spieler_id, IF(ausgetreten, 1, 0), ausgetreten DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $spieler_id = null; + foreach ($rows as $row) { + if ($row->spieler_id == $spieler_id) { + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $row->mitglied_von_verein_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else + $spieler_id = $row->spieler_id; + } + + + $query = "UPDATE #__sportsmanager_team" + . "\n SET verein_id = $verein_beizubehalten_id" + . "\n WHERE verein_id = $verein_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rechnung" + . "\n SET verein_id = $verein_beizubehalten_id" + . "\n WHERE verein_id = $verein_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $verein_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $verein_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $verein_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("vereine", $verein_zu_entfernen_id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + aktuellerVereinAktualisieren(); + + redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id); +} + +function adminVereinsmitglieder() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $vereinid = $jinput->get('vereinid', 0, 'INT'); + if ($vereinid == 0) die ("Wrong id!"); + + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + if (count($vereine) < 1) die ("Wrong id"); + $verein = $vereine[0]; + + $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern"); + + $query = "SELECT mitglied_von_verein_id, mitgliedsstatus, vorname, nachname, spielernr, #__sportsmanager_spieler.spieler_id" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $vereinid" + . "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereinsmitglieder = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVereinsmitglieder($verein, $vereinsmitglieder, $berechtigt_spieler_aendern); +} + +function adminEditVereinsmitglied() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $vereinid = $jinput->get('vereinid', 0, 'INT'); + + if ($id == 0) + $row = null; + else { + $query = "SELECT t1.*, t2.vorname, t2.nachname FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_spieler AS t2 ON t1.spieler_id = t2.spieler_id WHERE mitglied_von_verein_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + if (count($vereine) < 1) die ("Wrong id"); + $verein = $vereine[0]; + + $query = "SELECT spieler_id, vorname, nachname, spielernr FROM #__sportsmanager_spieler ORDER BY nachname, vorname, spielernr"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditVereinsmitglied($row, $verein, $spieler); +} + +function adminSaveVereinsmitglied() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $spielerid = $jinput->get('spielerid', 0, 'INT'); + $vereinid = $jinput->get('vereinid', 0, 'INT'); + $mitgliedsstatus = $jinput->get('mitgliedsstatus', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); + + return; + } + + if (empty($id)) { + $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$spielerid', '$vereinid', '1', FALSE);"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET mitgliedsstatus = '" . $mitgliedsstatus . "'," + . "\n ausgetreten = " . ($mitgliedsstatus == 0 ? "TRUE" : "FALSE") + . "\n WHERE mitglied_von_verein_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + aktuellerVereinAktualisieren($spielerid); + + redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); +} + +function adminRemoveVereinsmitglied() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $vereinid = $jinput->get('vereinid', 0, 'INT'); + $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + aktuellerVereinAktualisieren(); + + redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); +} + +function adminSpielorte() { + $db =& getDatabase(); + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielorte($spielorte); +} + +function adminEditSpielort() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if ($id == null) { + $row = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditSpielort($row); +} + +function adminSaveSpielort() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $name = $db->escape(trim($jinput->get('name', '', 'RAW'))); + $strasse = $db->escape(trim($jinput->get('strasse', '', 'RAW'))); + $plz = $db->escape(trim($jinput->get('plz', '', 'RAW'))); + $ortsname = $db->escape(trim($jinput->get('ortsname', '', 'RAW'))); + $ortsteil = $db->escape(trim($jinput->get('ortsteil', '', 'RAW'))); + $url = $db->escape(trim($jinput->get('url', '', 'RAW'))); + $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); + $status = $jinput->get('status', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spielorte#id' . $id); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_spielort WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_spielort (name, strasse, plz, ortsname, ortsteil, url, beschreibung, status)" + . "\n VALUES ('$name', '$strasse', '$plz', '$ortsname', '$ortsteil', '$url', '$beschreibung', '$status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_spielort" + . "\n SET name = '$name'," + . "\n strasse = '$strasse'," + . "\n plz = '$plz'," + . "\n ortsname = '$ortsname'," + . "\n ortsteil = '$ortsteil'," + . "\n url = '$url'," + . "\n beschreibung = '$beschreibung'," + . "\n status = '$status'" + . "\n WHERE spielort_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spielorte#id' . $id); +} + +function adminRemoveSpielort() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_spielort WRITE, #__sportsmanager_begegnung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_team SET heimspielort_id = NULL WHERE heimspielort_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_begegnung SET spielort_id = NULL WHERE spielort_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spielorte'); +} + +function adminSpielorteZusammenlegenForm() { + $db =& getDatabase(); + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielorteZusammenlegen($spielorte); +} + +function adminSpielorteZusammenlegen() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielorte_aendern")) + keinZugriff(true); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spielorte'); + + return; + } + + $spielort_beizubehalten_id = $jinput->get('spielort_beizubehalten_id', 0, 'INT'); + $spielort_zu_entfernen_id = $jinput->get('spielort_zu_entfernen_id', 0, 'INT'); + + if ($spielort_beizubehalten_id == $spielort_zu_entfernen_id) { + redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spielorte gewählt werden"); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_spielort WRITE, #__sportsmanager_begegnung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_team" + . "\n SET heimspielort_id = $spielort_beizubehalten_id" + . "\n WHERE heimspielort_id = $spielort_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET spielort_id = $spielort_beizubehalten_id" + . "\n WHERE spielort_id = $spielort_zu_entfernen_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $spielort_zu_entfernen_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id); +} + +function adminEinstufungen() { + $db =& getDatabase(); + + if (!benutzerZugriff("einstufungen_aendern")) + keinZugriff(true); + + $query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_einstufung_rangliste WHERE #__sportsmanager_einstufung.einstufung_id = #__sportsmanager_einstufung_rangliste.einstufung_id) AS ranglisten" + . "\n FROM #__sportsmanager_einstufung" + . "\n ORDER BY typ, prioritaet, bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $einstufungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEinstufungen($einstufungen); +} + +function adminEditEinstufung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("einstufungen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if ($id == null) { + $row = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_einstufung WHERE einstufung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + // Ranglisten ermitteln + if ($id == 0) { + $query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + } + else { + $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, ranglisten.einstufung_rangliste_id, ranglisten.platz_min, ranglisten.platz_max, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT rangliste_id, einstufung_rangliste_id, platz_min, platz_max FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id) AS ranglisten USING (rangliste_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditEinstufung($row, $ranglisten); +} + +function adminSaveEinstufung() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("einstufungen_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $prioritaet = $jinput->get('prioritaet', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'INT'); + $elo_min = $jinput->get('elo_min', 0, 'INT'); + $elo_max = $jinput->get('elo_max', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_einstufungen#id' . $id); + + return; + } + + $ranglisten_beruecksichtigt = array(); + $ranglisten_beruecksichtigt_platz_min = array(); + $ranglisten_beruecksichtigt_platz_max = array(); + $i = 0; + $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); + $rangliste_platz_min = $jinput->get('rangliste_platz_min_' . $i, 0, 'INT'); + $rangliste_platz_max = $jinput->get('rangliste_platz_max_' . $i, 0, 'INT'); + while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) { + array_push($ranglisten_beruecksichtigt, $rangliste_id); + array_push($ranglisten_beruecksichtigt_platz_min, $rangliste_platz_min); + array_push($ranglisten_beruecksichtigt_platz_max, $rangliste_platz_max); + $i++; + $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); + $rangliste_platz_min = $jinput->get('rangliste_platz_min_' . $i, 0, 'INT'); + $rangliste_platz_max = $jinput->get('rangliste_platz_max_' . $i, 0, 'INT'); + } + + $query = "LOCK TABLES #__sportsmanager_einstufung WRITE, #__sportsmanager_einstufung_rangliste WRITE, #__sportsmanager_rangliste READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_einstufung (bezeichnung, prioritaet, typ, elo_min, elo_max)" + . "\n VALUES ('$bezeichnung', '$prioritaet', '$typ', '$elo_min', '$elo_max');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_einstufung" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n prioritaet = '$prioritaet'," + . "\n typ = '$typ'," + . "\n elo_min = '$elo_min'," + . "\n elo_max = '$elo_max'" + . "\n WHERE einstufung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Berücksichtige Ranglisten prüfen und ggf. aktualisieren + $query = "SELECT *" + . "\n FROM #__sportsmanager_einstufung_rangliste" + . "\n WHERE einstufung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); + + $einstufungen_aktualisieren = false; + foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { + $ist_beruecksichtigt = false; + foreach ($ranglisten_beruecksichtigt as $rangliste_id) { + if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { + $ist_beruecksichtigt = true; + break; + } + } + if (!$ist_beruecksichtigt) { + $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND einstufung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { + $ist_beruecksichtigt = false; + foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { + if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { + $ist_beruecksichtigt = true; + $bestehende_rangliste_platz_min = $bestehende_rangliste_beruecksichtigt->platz_min; + $bestehende_rangliste_platz_min = $bestehende_rangliste_beruecksichtigt->platz_max; + break; + } + } + $platz_min = $ranglisten_beruecksichtigt_platz_min[$index]; + $platz_max = $ranglisten_beruecksichtigt_platz_max[$index]; + if (!$ist_beruecksichtigt) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) { + $query = "INSERT INTO #__sportsmanager_einstufung_rangliste (einstufung_id, rangliste_id, platz_min, platz_max) VALUES ('$id', '$rangliste_id', '$platz_min', '$platz_max');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else if ($platz_min != $bestehende_rangliste_platz_min || $platz_max != $bestehende_rangliste_platz_max) { + $query = "UPDATE #__sportsmanager_einstufung_rangliste" + . "\n SET platz_min = '$platz_min'," + . "\n platz_max = '$platz_max'" + . "\n WHERE einstufung_id = $id AND rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_einstufungen#id' . $id); +} + +function adminRemoveEinstufung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("einstufungen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_einstufung WRITE, #__sportsmanager_einstufung_rangliste WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_einstufung WHERE einstufung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_einstufungen'); +} + +function einstufungAktualisieren($berechnungen_auswerten = false) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $query = "LOCK TABLES #__sportsmanager_berechnung WRITE, #__sportsmanager_rangliste_punkte READ, #__sportsmanager_spieler WRITE, #__sportsmanager_einstufung READ, #__sportsmanager_einstufung_rangliste READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($berechnungen_auswerten) { + $session_id = redirectRequestGetSessionId(); + + $query = "SELECT IF(EXISTS(" + . "\n SELECT *" + . "\n FROM #__sportsmanager_berechnung" + . "\n WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")) + . "\n ), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechnungen = $db->loadResult();; + + if (empty($berechnungen) || laufzeit() >= 5) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + return; + } + } + else if (!redirectSessionIdEmpty() || laufzeit() >= 5) { + $session_id = redirectSessionIdSetzen(); + + $query = "INSERT INTO #__sportsmanager_berechnung (session_id, typ, id) VALUES ('$session_id', 'einstufung', NULL);"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + return; + } + + $query = "SELECT einstufung_id, prioritaet, typ, elo_min, elo_max" + . "\n FROM #__sportsmanager_einstufung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $einstufung_prioritaet = array(); + $einstufung_typ = array(); + foreach ($rows as $row) { + $einstufung_prioritaet[$row->einstufung_id] = $row->prioritaet; + $einstufung_typ[$row->einstufung_id] = $row->typ; + } + + $spieler_einstufung_allgemein = array(); + $spieler_einstufung_einzel = array(); + $spieler_einstufung_doppel = array(); + $query = "SELECT rangliste_id, einstufung_id, platz_min, platz_max" + . "\n FROM #__sportsmanager_einstufung_rangliste" + . "\n ORDER BY rangliste_id, platz_min, platz_max"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $einstufung_ranglisten = $db->loadObjectList(); + + $einstufungen_per_ranglisten = array(); + foreach ($einstufung_ranglisten as $einstufung_rangliste) { + $platz_min = $einstufung_rangliste->platz_min; + $platz_max = $einstufung_rangliste->platz_max; + if (empty($platz_min) && empty($platz_max)) + continue; + if (!isset($einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id])) + $einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id] = array(); + array_push($einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id], array($einstufung_rangliste->einstufung_id, $platz_min, $platz_max)); + } + + foreach ($einstufungen_per_ranglisten as $rangliste_id => $einstufung) { + $query = "SELECT spieler_id, platz" + . "\n FROM #__sportsmanager_rangliste_punkte" + . "\n WHERE rangliste_id = $rangliste_id" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rangliste_punkte = $db->loadObjectList(); + + foreach ($rangliste_punkte as $punkte) { + foreach ($einstufung as $einstufung_platzierung) { + $platz_min = $einstufung_platzierung[1]; + $platz_max = $einstufung_platzierung[2]; + if (($punkte->platz >= $platz_min || $platz_min == 0) && ($punkte->platz <= $platz_max || $platz_max == 0)) { + $einstufung_id = $einstufung_platzierung[0]; + if ($einstufung_typ[$einstufung_id] == 0) { + if (!isset($spieler_einstufung_allgemein[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_allgemein[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) + $spieler_einstufung_allgemein[$punkte->spieler_id] = $einstufung_id; + } + else if ($einstufung->typ == 1) { + if (!isset($spieler_einstufung_einzel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_einzel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) + $spieler_einstufung_einzel[$punkte->spieler_id] = $einstufung_id; + } + else { + if (!isset($spieler_einstufung_doppel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_doppel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id])) + $spieler_einstufung_doppel[$punkte->spieler_id] = $einstufung_id; + } + } + } + } + } + + $query = "SELECT spieler_id, elo_einzel, elo_doppel" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(elo_einzel) OR NOT ISNULL(elo_doppel) OR elo_einzel > 0 OR elo_doppel > 0"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + foreach ($spieler as $s) { + $spieler_id = $s->spieler_id; + $elo_einzel = $s->elo_einzel; + $elo_doppel = $s->elo_doppel; + foreach ($rows as $einstufung) { + $einstufung_id = $einstufung->einstufung_id; + $elo_min = $einstufung->elo_min; + $elo_max = $einstufung->elo_max; + if (empty($elo_min) && empty($elo_max)) + continue; + if ($einstufung_typ[$einstufung_id] == 0) { + if (($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max))) + || ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max)))) { + if (!isset($spieler_einstufung_allgemein[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_allgemein[$spieler_id]])) + $spieler_einstufung_allgemein[$spieler_id] = $einstufung_id; + } + } + else if ($einstufung->typ == 1) { + if ($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max))) { + if (!isset($spieler_einstufung_einzel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_einzel[$spieler_id]])) + $spieler_einstufung_einzel[$spieler_id] = $einstufung_id; + } + } + else { + if ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max))) { + if (!isset($spieler_einstufung_doppel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_doppel[$spieler_id]])) + $spieler_einstufung_doppel[$spieler_id] = $einstufung_id; + } + } + } + } + + $db->transactionStart(); + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET einstufung_allgemein_id = NULL," + . "\n einstufung_einzel_id = NULL," + . "\n einstufung_doppel_id = NULL"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $spieler_ids = array_keys($spieler_einstufung_allgemein) + array_keys($spieler_einstufung_einzel) + array_keys($spieler_einstufung_doppel); + foreach ($spieler_ids as $spieler_id) { + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET einstufung_allgemein_id = " . (isset($spieler_einstufung_allgemein[$spieler_id]) ? $spieler_einstufung_allgemein[$spieler_id] : "NULL") . "," + . "\n einstufung_einzel_id = " . (isset($spieler_einstufung_einzel[$spieler_id]) ? $spieler_einstufung_einzel[$spieler_id] : "NULL") . "," + . "\n einstufung_doppel_id = " . (isset($spieler_einstufung_doppel[$spieler_id]) ? $spieler_einstufung_doppel[$spieler_id] : "NULL"); + $query .= "\n WHERE spieler_id = $spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + $db->transactionCommit(); + + if ($berechnungen_auswerten) { + $query = "DELETE FROM #__sportsmanager_berechnung WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } +} + +function adminTeamspielmodi() { + $db =& getDatabase(); + + if (!benutzerZugriff("mannschaftsspielplaene_aendern")) + keinZugriff(true); + + $query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE teamspiel_modus_id = modus_id), 1, 0) AS veranstaltungen" + . "\n FROM #__sportsmanager_teamspiel_modus" + . "\n ORDER BY status DESC, bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTeamspielmodi($rows); +} + +function adminEditTeamspielmodus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftsspielplaene_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTeamspielmodus($row); +} + +function adminSaveTeamspielmodus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftsspielplaene_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $punktetyp = $jinput->get('punktetyp', 0, 'INT'); + $punkte_sieg_einzel = $jinput->get('punkte_sieg_einzel', 0, 'INT'); + $punkte_sieg_doppel_separat = $jinput->get('punkte_sieg_doppel_separat', 0, 'INT'); + $punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jinput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel; + $heimtausch = $jinput->get('heimtausch', 0, 'INT'); + $status = $jinput->get('status', 0, 'INT'); + $spielpunkte_wertung_einzel = $jinput->get('spielpunkte_wertung_einzel', 0, 'INT'); + $spielpunkte_wertung_doppel_separat = $jinput->get('spielpunkte_wertung_doppel_separat', 0, 'INT'); + $spielpunkte_wertung_doppel = $spielpunkte_wertung_doppel_separat ? $jinput->get('spielpunkte_wertung_doppel', 0, 'INT') : $spielpunkte_wertung_einzel; + $spielpunkte_bedingung = $jinput->get('spielpunkte_bedingung', 0, 'INT'); + $spielernamen = $jinput->get('spielernamen', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_teamspiel_modi'); + + return; + } + + $modus = ""; + $spiel_nr = 1; + do { + $spiel_heim = $jinput->get('spiel_' . $spiel_nr . '_heim', '', 'RAW'); + $spiel_gast = $jinput->get('spiel_' . $spiel_nr . '_gast', '', 'RAW'); + $spiel_auflage = $jinput->get('spiel_' . $spiel_nr . '_auflage', '', 'RAW'); + if (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0 && ($spiel_auflage == "" || $spiel_auflage == "H" || $spiel_auflage == "G")) { + if (strlen($modus) != 0) + $modus .= ","; + $modus .= $spiel_heim . $spiel_gast . $spiel_auflage; + } + $spiel_nr++; + } while (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0); + + $verknuepfungen = ""; + $verknuepfung_nr = 1; + for (; ;) { + $verknuepfung_doppel = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_doppel', '', 'RAW'); + $verknuepfung_einzel1 = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_einzel1', '', 'RAW'); + $verknuepfung_einzel2 = $jinput->get('verknuepfung_' . $verknuepfung_nr . '_einzel2', '', 'RAW'); + if (strlen($verknuepfung_doppel) == 0 || strlen($verknuepfung_einzel1) == 0 || strlen($verknuepfung_einzel2) == 0) + break; + if (strpos($verknuepfungen, $verknuepfung_doppel) !== false || strpos($verknuepfungen, $verknuepfung_einzel1) !== false || strpos($verknuepfungen, $verknuepfung_einzel2) !== false || + $verknuepfung_einzel1 == $verknuepfung_einzel2) + break; + if (strlen($verknuepfungen) != 0) + $verknuepfungen .= ","; + $verknuepfungen .= $verknuepfung_doppel . $verknuepfung_einzel1 . $verknuepfung_einzel2; + $verknuepfung_nr++; + } + + if (strlen($verknuepfungen) > 0) + $modus .= "|" . $verknuepfungen; + $modus = $db->escape($modus); + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel', '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_teamspiel_modus" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n punktetyp = '$punktetyp'," + . "\n punkte_sieg_einzel = '$punkte_sieg_einzel'," + . "\n punkte_sieg_doppel = '$punkte_sieg_doppel'," + . "\n spielpunkte_wertung_einzel = '$spielpunkte_wertung_einzel'," + . "\n spielpunkte_wertung_doppel = '$spielpunkte_wertung_doppel'," + . "\n spielpunkte_bedingung = '$spielpunkte_bedingung'," + . "\n spielernamen = '$spielernamen'," + . "\n heimtausch = '$heimtausch'," + . "\n modus = '$modus'," + . "\n status = '$status'" + . "\n WHERE teamspiel_modus_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + begegnungenAktualisieren(0, $id); + teamstatistikAktualisieren(0, $id); + spielerstatistikAktualisieren(0, 0, 0, $id); + + redirectSportsManagerURL('&task=admin_teamspiel_modi'); +} + +function adminRemoveTeamspielmodus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftsspielplaene_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE modus_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_teamspiel_modi'); +} + +function adminKopierenTeamspielmodus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftsspielplaene_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $teamspiel_modus = $rows[0]; + + $query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('" . $db->escape($teamspiel_modus->bezeichnung) . " (Kopie)', '$teamspiel_modus->punktetyp', '$teamspiel_modus->punkte_sieg_einzel', '$teamspiel_modus->punkte_sieg_doppel', '$teamspiel_modus->spielpunkte_wertung_einzel', '$teamspiel_modus->spielpunkte_wertung_doppel', '$teamspiel_modus->spielpunkte_bedingung', '$teamspiel_modus->spielernamen', '$teamspiel_modus->heimtausch', '$teamspiel_modus->modus', '$teamspiel_modus->status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + redirectSportsManagerURL('&task=admin_teamspiel_modi'); +} + +function adminVerschiebenModi() { + $db =& getDatabase(); + + if (!benutzerZugriff("verschieberegeln_aendern")) + keinZugriff(true); + + $query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.verschieberegel_id = #__sportsmanager_verschieberegel.verschieberegel_id), 1, 0) AS veranstaltungen" + . "\n FROM #__sportsmanager_verschieberegel" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVerschiebenModi($rows); +} + +function adminEditVerschiebenModus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verschieberegeln_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditVerschiebenModus($row); +} + +function adminSaveVerschiebenModus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verschieberegeln_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_verschieben_modi'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $initial_ohne_termin = $jinput->get('initial_ohne_termin', 0, 'INT'); + $keine_gegenvorschlaege = $jinput->get('keine_gegenvorschlaege', 0, 'INT'); + $vorlaufzeit_tage = $jinput->get('vorlaufzeit_tage', 0, 'INT'); + $termine_minimal = $jinput->get('termine_minimal', 1, 'INT'); + $termine_maximal = $jinput->get('termine_maximal', 3, 'INT'); + $ablehnen = $jinput->get('ablehnen', 0, 'INT'); + + if ($termine_minimal > 0 && $termine_maximal > 0 && $termine_minimal > $termine_maximal) { + $t = $termine_minimal; + $termine_minimal = $termine_maximal; + $termine_maximal = $t; + } + + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen) VALUES ('$bezeichnung', '$initial_ohne_termin', '$keine_gegenvorschlaege', '$vorlaufzeit_tage', '$termine_minimal', '$termine_maximal', '$ablehnen');"; + else { + $query = "UPDATE #__sportsmanager_verschieberegel" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n initial_ohne_termin = '$initial_ohne_termin'," + . "\n keine_gegenvorschlaege = '$keine_gegenvorschlaege'," + . "\n vorlaufzeit_tage = '$vorlaufzeit_tage'," + . "\n termine_minimal = '$termine_minimal'," + . "\n termine_maximal = '$termine_maximal'," + . "\n ablehnen = '$ablehnen'" + . "\n WHERE verschieberegel_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_verschieben_modi'); +} + +function adminRemoveVerschiebenModus() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("verschieberegeln_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_verschieberegel WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE verschieberegel_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_verschieben_modi'); +} + +function adminKategorien() { + $db =& getDatabase(); + + if (!benutzerZugriff("kategorien_aendern")) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $kategorien = array(); + $kategorien[1] = array(); + $kategorien[2] = array(); + $kategorien[3] = array(); + $kategorien[4] = array(); + + foreach ($rows as $row) + $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; + + HTML_sportsmanager_admin::adminKategorien($kategorien); +} + +function adminSaveKategorien() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("kategorien_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_kategorie WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $kategorien = array(); + $kategorien[1] = array(); + $kategorien[2] = array(); + $kategorien[3] = array(); + $kategorien[4] = array(); + $kategorien[5] = array(); + $kategorien[6] = array(); + + foreach ($rows as $row) + $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; + + for ($typ = 1; $typ <= 6; $typ++) { + for ($nummer = 1; $nummer <= 30; $nummer++) { + $bezeichnung = $db->escape($jinput->get('bezeichnung_' . $typ . '_' . $nummer, '', 'RAW')); + if (empty($bezeichnung)) { + if (isset($kategorien[$typ][$nummer])) { + $query = "DELETE FROM #__sportsmanager_kategorie WHERE typ = $typ AND nummer = $nummer;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (isset($kategorien[$typ][$nummer])) { + $query = "UPDATE #__sportsmanager_kategorie" + . "\n SET bezeichnung = '$bezeichnung'" + . "\n WHERE typ = $typ AND nummer = $nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "INSERT INTO #__sportsmanager_kategorie (typ, nummer, bezeichnung) VALUES ('$typ', '$nummer', '$bezeichnung');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRanglistensysteme() { + $db =& getDatabase(); + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); + + $query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_rangliste WHERE rangliste_system_id = system_id) AS ranglisten, (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_system_id = system_id) AS ranglistenturnierdisziplinen FROM #__sportsmanager_rangliste_system ORDER BY status DESC, systembezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $error_level = error_reporting(E_ERROR); + $math = new MathParserSM; + $math->setVariable('n', 100); + $math->setVariable('m', 1); + $math->setVariable('p', 5); + $pruefung = array(); + foreach ($rows as $row) { + $korrekt = true; + $pruefung[$row->rangliste_system_id] = $korrekt; + if (!empty($row->funktion)) { + try { + $math->setExpression($row->funktion); + $n = $math->getValue(); + } + catch (Exception $e) { + $korrekt = false; + } + } + $pruefung[$row->rangliste_system_id] = $korrekt; + } + error_reporting($error_level); + + HTML_sportsmanager_admin::adminRanglistensysteme($rows, $pruefung); +} + +function adminEditRanglistensystem() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); + + $row = null; + $punkte = null; + + $id = $jinput->get('id', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'INT'); + if ($id != null) { + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $punkte = $db->loadObjectList(); + } + + HTML_sportsmanager_admin::adminEditRanglistensystem($row, $punkte, $row != null ? ($row->funktion != null) : $typ); +} + +function adminSaveRanglistensystem() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_ranglistensysteme'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $status = $jinput->get('status', 0, 'INT'); + $funktion = $db->escape(trim($jinput->get('funktion', '', 'RAW'))); + $typ = $jinput->get('typ', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_rangliste_system WRITE, #__sportsmanager_rangliste_system_punkte WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + if ($typ != 1) + $query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status) VALUES ('$bezeichnung', '$status');"; + else + $query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status, funktion) VALUES ('$bezeichnung', '$status', '$funktion');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_rangliste_system" + . "\n SET systembezeichnung = '$bezeichnung'," + . "\n status = '$status'"; + if ($typ == 1) + $query .= ",\n funktion = '$funktion'"; + $query .= "\n WHERE rangliste_system_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($typ != 1) { + for ($punkte_nr = 1; $punkte_nr <= 50; $punkte_nr++) { + $platz_min = $jinput->get('punkte_' . $punkte_nr . '_platz_min', 0, 'INT'); + $platz_max = $jinput->get('punkte_' . $punkte_nr . '_platz_max', 0, 'INT'); + $teilnehmer_min = $jinput->get('punkte_' . $punkte_nr . '_teilnehmer_min', 0, 'INT'); + $teilnehmer_max = $jinput->get('punkte_' . $punkte_nr . '_teilnehmer_max', 0, 'INT'); + $punkte = $jinput->get('punkte_' . $punkte_nr . '_punkte', 0, 'INT'); + + if ($punkte != 0) { + $query = "INSERT INTO #__sportsmanager_rangliste_system_punkte (system_id, platz_min, platz_max, teilnehmer_min, teilnehmer_max, punkte) VALUES ('$id', '$platz_min', '$platz_max', '$teilnehmer_min', '$teilnehmer_max', '$punkte');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren(); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_ranglistensysteme'); +} + +function adminRanglistensystemAuswertung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_ranglistensysteme'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $teilnehmer = $jinput->get('teilnehmer', 100, 'INT'); + $multiplikator = $jinput->get('multiplikator', 1, 'FLOAT'); + + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $system = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $systempunkte = $db->loadObjectList(); + + if ($system->funktion != NULL) { + $math = new MathParserSM; + try { + $math->setVariable('n', $teilnehmer); + $math->setVariable('m', $multiplikator); + $math->setExpression($system->funktion); + } catch (Exception $e) { + } + } + + $teilnehmerpunkte = array(); + for ($platz = 1; $platz <= $teilnehmer; $platz++) { + $p = 0; + if ($system->funktion == NULL) { + foreach ($systempunkte as $sp) { + if (($sp->platz_min == 0 || $sp->platz_min <= $platz) && ($sp->platz_max == 0 || $platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { + $p = round($sp->punkte * $multiplikator); + break; + } + } + } else { + try { + $math->setVariable('p', $platz); + $p = round($math->getValue()); + } catch (Exception $e) { + } + } + $teilnehmerpunkte[$platz] = $p; + } + + HTML_sportsmanager_admin::adminRanglistensystemAuswertung($system, $teilnehmer, $multiplikator, $teilnehmerpunkte); +} + +function adminRanglistensystemAuswertungOLd() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_ranglistensysteme'); + + return; + } + + $row = null; + $punkte = null; + + $id = $jinput->get('id', 0, 'INT'); + $teilnehmer = $jinput->get('teilnehmer', 100, 'INT'); + $multiplikator = $jinput->get('multiplikator', 1, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $system = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $systempunkte = $db->loadObjectList(); + + $teilnehmerpunkte = array(); + $math = new MathParserSM; + for ($platz = 1; $platz <= $teilnehmer; $platz++) { + $p = 0; + if ($id != 0 && $system->funktion == NULL) { + foreach ($systempunkte as $sp) { + if (($sp->platz_min == 0 || $sp->platz_min <= $platz) && ($sp->platz_max == 0 || $platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { + $p = round($sp->punkte * $wertung_multiplikator_normal); + break; + } + } + } else { + $math->setVariable('p', $turnierplatzierung->platz); + $math->setVariable('m', $wertung_multiplikator_normal); + $math->setExpression($system->funktion); + try { + $p = round($math->getValue()); + } catch (Exception $e) { + + } + } + $teilnehmerpunkte[$platz] = $p; + } + + HTML_sportsmanager_admin::adminRanglistensystemAuswertung($row, $teilnehmer, $multiplikator, $teilnehmerpunkte); +} + +function adminRemoveRanglistensystem() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_rangliste_system WRITE, #__sportsmanager_rangliste_system_punkte WRITE, #__sportsmanager_rangliste READ, #__sportsmanager_rangliste_turnierdisziplin READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste WHERE system_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE system_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_ranglistensysteme'); +} + +function adminEditRangliste() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) + $rangliste = null; + else { + $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $rangliste = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status > 0 " . ($id != 0 ? "OR rangliste_system_id = $rangliste->system_id " : "") . "ORDER BY systembezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 4 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + HTML_sportsmanager_admin::adminEditRangliste($rangliste, $systeme, $kategorien, $saisons); +} + +function adminSaveRangliste() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $saison_id = $jinput->get('saison_id', 0, 'INT'); + $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); + $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); + $system_id = $jinput->get('system_id', 0, 'INT'); + $maximal_gewertet_typ = $jinput->get('maximal_gewertet_typ', 0, 'INT'); + if ($maximal_gewertet_typ == 0) + $maximal_gewertet_zahl = 0; + else if ($maximal_gewertet_typ == 1) + $maximal_gewertet_zahl = -$jinput->get('maximal_gewertet_zahl', 0, 'INT'); + else + $maximal_gewertet_zahl = max(0, 100 - $jinput->get('maximal_gewertet_zahl', 0, 'INT')); + $minalter = $jinput->get('minalter', 0, 'INT'); + $maxalter = $jinput->get('maxalter', 0, 'INT'); + $ohnealter = $jinput->get('ohnealter', 0, 'INT'); + $geschlecht = $jinput->get('geschlecht', 0, 'INT'); + $status = $jinput->get('status', 0, 'INT'); + $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_rangliste (bezeichnung, saison_id, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "system_id, streichergebnisse, geschlecht, minalter, maxalter, ohnealter, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$system_id', '$maximal_gewertet_zahl', " . ($geschlecht == null ? "null" : "'$geschlecht'") . ", " . ($minalter == null ? "null" : "'$minalter'") . ", " . ($maxalter == null ? "null" : "'$maxalter'") . ", '$ohnealter', '$status', '$reihenfolge', '$kategorie');"; + else { + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n erster_tag = '$erster_tag'," + . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") + . "\n system_id = '$system_id'," + . "\n streichergebnisse = '$maximal_gewertet_zahl'," + . "\n geschlecht = " . ($geschlecht != null ? "'$geschlecht'," : "NULL,") + . "\n minalter = " . ($minalter != null ? "'$minalter'," : "NULL,") + . "\n maxalter = " . ($maxalter != null ? "'$maxalter'," : "NULL,") + . "\n ohnealter = '$ohnealter'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'" + . "\n WHERE rangliste_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + if ($id == 0) + $id = $db->insertid(); + + ranglisteAktualisieren($id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRemoveRangliste() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_rangliste_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin_punkte WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste WRITE, #__sportsmanager_einstufung_rangliste WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_turnierdisziplin" + . "\n SET voranmeldungen_rangliste_id = NULL" + . "\n WHERE voranmeldungen_rangliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste WHERE rangliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren($id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminKopierenRangliste() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_rangliste WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $rangliste = $rows[0]; + + $query = "INSERT INTO #__sportsmanager_rangliste (saison_id, system_id, streichergebnisse, geschlecht, minalter, maxalter, ohnealter, bezeichnung, erster_tag, letzter_tag, status, reihenfolge, kategorie)" + . "\n VALUES ('$rangliste->saison_id', " . ($rangliste->system_id == null ? "null" : "'$rangliste->system_id'") . ", '" . $db->escape($rangliste->streichergebnisse) . "', " . ($rangliste->geschlecht == null ? "null" : "'$rangliste->geschlecht'") . ", " . ($rangliste->minalter == null ? "null" : "'$rangliste->minalter'") . ", " . ($rangliste->maxalter == null ? "null" : "'$rangliste->maxalter'") . ", '$rangliste->ohnealter', '" . $db->escape($rangliste->bezeichnung . " (Kopie)") . "', '" . $db->escape($rangliste->erster_tag) . "', '" . $db->escape($rangliste->letzter_tag) . "', '0', '" . $db->escape($rangliste->reihenfolge) . "', '" . $db->escape($rangliste->kategorie) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_rangliste_id = $db->insertid(); + + // Disziplinen kopieren + + $query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung)" + . "\n VALUES ($ziel_rangliste_id, '$row->turnierdisziplin_id', " . ($row->system_id == null ? "null" : "'$row->system_id'") . ", '$row->wertung', '$row->doppel_teilwertung');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRanglisteTurnierdisziplinen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + if ($rangliste_id == 0) die ("Wrong id!"); + + $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + if (count($ranglisten) < 1) die ("Wrong id"); + $rangliste = $ranglisten[0]; + + $query = "SELECT #__sportsmanager_rangliste_turnierdisziplin.*, disziplin, turnierbezeichnung, turnierort, systembezeichnung, beginn" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n LEFT JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)" + . "\n LEFT JOIN #__sportsmanager_rangliste_system ON system_id = rangliste_system_id" + . "\n WHERE rangliste_id = $rangliste_id" + . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC, disziplin"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turnierdisziplinen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminRanglisteTurnierdisziplinen($rangliste, $turnierdisziplinen); +} + +function adminEditRanglisteTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + + if ($id == 0) + $ranglisteTurnierdisziplin = null; + else { + $query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $ranglisteTurnierdisziplin = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + if (count($ranglisten) < 1) die ("Wrong id"); + $rangliste = $ranglisten[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnierdisziplin, #__sportsmanager_turnier" + . "\n WHERE #__sportsmanager_turnierdisziplin.turnier_id = #__sportsmanager_turnier.turnier_id"; + if ($rangliste->erster_tag != null) + $query .= " AND (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$rangliste->erster_tag') >= -1096" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")"; + if ($rangliste->letzter_tag != null) + $query .= " AND (ISNULL(erster_tag) OR DATEDIFF('$rangliste->letzter_tag', letzter_Tag) >= -366" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")"; + $query .= "\n ORDER BY erster_tag DESC, turnierbezeichnung, reihenfolge, disziplin"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turnierdisziplinen = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status != 0 " . ($id != 0 && $ranglisteTurnierdisziplin->system_id != null ? "OR rangliste_system_id = $ranglisteTurnierdisziplin->system_id " : "") . "ORDER BY systembezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditRanglisteTurnierdisziplin($rangliste, $ranglisteTurnierdisziplin, $turnierdisziplinen, $systeme); +} + +function adminSaveRanglisteTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + $turnierdisziplin_id = $db->escape($jinput->get('turnierdisziplin_id', 0, 'INT')); + $system_id = $jinput->get('system_id', 0, 'INT'); + $wertung = $jinput->get('wertung', 0, 'RAW'); + $doppel_teilwertung = $jinput->get('doppel_teilwertung', 0, 'RAW'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); + + return; + } + + $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET rangliste_id = '$rangliste_id'," + . "\n turnierdisziplin_id = '$turnierdisziplin_id'," + . "\n system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . "," + . "\n wertung = '" . $db->escape($wertung) . "'," + . "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'"; + if ($id != 0) + $query .= "\n WHERE rangliste_turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren($rangliste_id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); +} + +function adminRemoveRanglisteTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren($rangliste_id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); +} + +function adminRanglisteDisziplinenEntfernen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $rangliste_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren($rangliste_id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); +} + +function adminRanglisteSystemZuruecksetzen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("ranglisten_aendern")) + keinZugriff(true); + + $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + + $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET system_id = NULL," + . "\n wertung = 1" + . "\n WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren($rangliste_id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); +} + +function adminEditSpielerstatistik() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) + $spielerstatistik = null; + else { + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistik = $rows[0]; + } + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 5 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditSpielerstatistik($spielerstatistik, $kategorien, $saisons); +} + +function adminSaveSpielerstatistik() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $saison_id = $jinput->get('saison_id', 0, 'INT'); + $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); + $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); + $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'INT'); + $status = $jinput->get('status', 0, 'INT'); + $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_bestenliste (bezeichnung, saison_id, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "tabellenwertung, typ, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$tabellenwertung', '$typ', '$status', '$reihenfolge', '$kategorie');"; + $spielerstatistik_aktualisieren = false; + } + else { + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistik = $rows[0]; + + $query = "UPDATE #__sportsmanager_bestenliste" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n erster_tag = '$erster_tag'," + . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") + . "\n tabellenwertung = '$tabellenwertung'," + . "\n typ = '$typ'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'" + . "\n WHERE bestenliste_id = $id"; + + if ($spielerstatistik->tabellenwertung != $tabellenwertung || $spielerstatistik->typ != $typ) + $spielerstatistik_aktualisieren = true; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + if ($id == 0) + $id = $db->insertid(); + + if ($spielerstatistik_aktualisieren) + spielerstatistikAktualisieren($id); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRemoveSpielerstatistik() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_bestenliste_punkte WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE, #__sportsmanager_bestenliste WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminKopierenSpielerstatistik() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_bestenliste WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $spielerstatistik = $rows[0]; + + $query = "INSERT INTO #__sportsmanager_bestenliste (saison_id, bezeichnung, tabellenwertung, typ, erster_tag, letzter_tag, status, reihenfolge, kategorie)" + . "\n VALUES ('$spielerstatistik->saison_id', '" . $db->escape($spielerstatistik->bezeichnung . " (Kopie)") . "', '$spielerstatistik->tabellenwertung', '$spielerstatistik->typ', '" . $db->escape($spielerstatistik->erster_tag) . "', '" . $db->escape($spielerstatistik->letzter_tag) . "', '0', '" . $db->escape($spielerstatistik->reihenfolge) . "', '" . $db->escape($spielerstatistik->kategorie) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_spielerstatistik_id = $db->insertid(); + + $query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_bestenliste_veranstaltung (bestenliste_id, veranstaltung_id)" + . "\n VALUES ($ziel_spielerstatistik_id, $row->veranstaltung_id);"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_bestenliste_individualwettbewerb (bestenliste_id, individualwettbewerb_id)" + . "\n VALUES ($ziel_spielerstatistik_id, $row->individualwettbewerb_id);"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($ziel_spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminSpielerstatistikVeranstaltungen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + if ($spielerstatistik_id == 0) die ("Wrong id!"); + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + if (count($spielerstatistiken) < 1) die ("Wrong id"); + $spielerstatistik = $spielerstatistiken[0]; + + $query = "SELECT #__sportsmanager_bestenliste_veranstaltung.*, bezeichnung, erster_tag, letzter_tag, saisonbezeichnung" + . "\n FROM #__sportsmanager_bestenliste_veranstaltung" + . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_veranstaltung.saison_id" + . "\n WHERE bestenliste_id = $spielerstatistik_id" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $query = "SELECT #__sportsmanager_bestenliste_individualwettbewerb.*, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_bestenliste_individualwettbewerb" + . "\n LEFT JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_individualwettbewerb.saison_id" + . "\n WHERE bestenliste_id = $spielerstatistik_id" + . "\n ORDER BY saisonbezeichnung, reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielerstatistikVeranstaltungen($spielerstatistik, $veranstaltungen, $individualwettbewerbe); +} + +function adminEditSpielerstatistikVeranstaltung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + + if ($id == 0) + $spielerstatistikVeranstaltung = null; + else { + $query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistikVeranstaltung = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + if (count($spielerstatistiken) < 1) die ("Wrong id"); + $spielerstatistik = $spielerstatistiken[0]; + + $query = "SELECT * FROM #__sportsmanager_veranstaltung"; + if ($spielerstatistik->erster_tag != null) + $query .= "\n WHERE (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$spielerstatistik->erster_tag') >= -1096" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")"; + if ($spielerstatistik->letzter_tag != null) + $query .= ($spielerstatistik->erster_tag != null ? " AND" : "\n WHERE") . " (ISNULL(erster_tag) OR DATEDIFF('$spielerstatistik->letzter_tag', letzter_Tag) >= -366" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")"; + $query .= "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditSpielerstatistikVeranstaltung($spielerstatistik, $spielerstatistikVeranstaltung, $veranstaltungen); +} + +function adminSaveSpielerstatistikVeranstaltung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + $veranstaltung_id = $jinput->get('veranstaltung_id', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); + + return; + } + + $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_veranstaltung" + . "\n SET bestenliste_id = '$spielerstatistik_id'," + . "\n veranstaltung_id = '$veranstaltung_id'"; + if ($id != 0) + $query .= "\n WHERE bestenliste_veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); +} + +function adminRemoveSpielerstatistikVeranstaltung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); +} + +function adminEditSpielerstatistikIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + + if ($id == 0) + $spielerstatistikIndividualwettbewerb = null; + else { + $query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistikIndividualwettbewerb = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + if (count($spielerstatistiken) < 1) die ("Wrong id"); + $spielerstatistik = $spielerstatistiken[0]; + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb" + . "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditSpielerstatistikIndividualwettbewerb($spielerstatistik, $spielerstatistikIndividualwettbewerb, $individualwettbewerbe); +} + +function adminSaveSpielerstatistikIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + $individualwettbewerb_id = $jinput->get('individualwettbewerb_id', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); + + return; + } + + $query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_individualwettbewerb" + . "\n SET bestenliste_id = '$spielerstatistik_id'," + . "\n individualwettbewerb_id = '$individualwettbewerb_id'"; + if ($id != 0) + $query .= "\n WHERE bestenliste_individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); +} + +function adminRemoveSpielerstatistikIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); +} + +function adminSpielerstatistikVeranstaltungenEntfernen() { + $db =& getDatabase(); + + if (!benutzerZugriff("spielerstatistiken_aendern")) + keinZugriff(true); + + $spielerstatistik_id = $jinput->get('spielerstatistik_id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_bestenliste_individualwettbewerb WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $spielerstatistik_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $spielerstatistik_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren($spielerstatistik_id); + + redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); +} + +function adminModeratoren() { + $db =& getDatabase(); + + if (!benutzerZugriff("moderatoren_aendern")) + keinZugriff(true); + + $query = "SELECT t1.moderator_id, t1.moderator_user_id, t2.name, t2.username, (SELECT COUNT(*) FROM #__sportsmanager_moderator_zugriff WHERE #__sportsmanager_moderator_zugriff.moderator_id = t1.moderator_id) AS zugriffe FROM #__sportsmanager_moderator as t1 LEFT JOIN #__users AS t2 ON t1.moderator_user_id=t2.id ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminModeratoren($rows); +} + +function adminEditModerator() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("moderatoren_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $row = null; + if ($id != 0) { + $query = "SELECT * FROM #__sportsmanager_moderator WHERE moderator_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + if (empty($id)) { + $zugriffe = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $zugriffe = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditModerator($row, $zugriffe, $users); +} + +function adminSaveModerator() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("moderatoren_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_moderatoren'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $userid = $jinput->get('userid', 0, 'INT'); + $zugriffe = $jinput->get('zugriffe', array(), 'ARRAY'); + + $query = "LOCK TABLES #__sportsmanager_moderator WRITE, #__sportsmanager_moderator_zugriff WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_moderator (moderator_user_id)" + . "\n VALUES ('$userid');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_moderator" + . "\n SET moderator_user_id = '$userid'" + . "\n WHERE moderator_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $alte_zugriffe = $db->loadObjectList(); + + foreach ($alte_zugriffe as $alter_zugriff) { + if (!in_array($alter_zugriff->zugriff, $zugriffe)) { + $alter_zugriff_id = $alter_zugriff->moderator_zugriff_id; + $query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_zugriff_id = $alter_zugriff_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $index = array_search($alter_zugriff->zugriff, $zugriffe); + if ($index !== false) { + unset($zugriffe[$index]); + } + } + } + + foreach ($zugriffe as $zugriff) { + $query = "INSERT #__sportsmanager_moderator_zugriff" + . "\n SET moderator_id = '$id'," + . "\n zugriff = '$zugriff'," + . "\n zusatz = ''"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_moderatoren'); +} + +function adminRemoveModerator() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("moderatoren_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_moderator WRITE, #__sportsmanager_moderator_zugriff WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_moderator WHERE moderator_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_moderatoren'); +} + +function adminVeranstalter() { + $db =& getDatabase(); + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_veranstaltung.veranstalter_id) AS veranstaltungen," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_verein WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id) AS vereine," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_turnier WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_turnier.veranstalter_id) AS turniere," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_individualwettbewerb.veranstalter_id) AS individualwettbewerbe" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVeranstalter($rows); +} + +function adminEditVeranstalter() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) { + $row = null; + $berechtigt_fuer_veranstalter = array(); + } + else { + $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + + $query = "SELECT #__sportsmanager_berechtigt_fuer_veranstalter.* FROM #__sportsmanager_berechtigt_fuer_veranstalter, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstalter_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_veranstalter = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 1 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + HTML_sportsmanager_admin::adminEditVeranstalter($row, $berechtigt_fuer_veranstalter, $users, $kategorien); +} + +function adminSaveVeranstalter() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_veranstalter'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $kuerzel = $db->escape(trim($jinput->get('kuerzel', '', 'RAW'))); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + + $berechtigt_fuer_veranstalter_user_ids = array($jinput->get('berechtigt_fuer_veranstalter_user_1_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_veranstalter_user_2_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_veranstalter_user_3_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_veranstalter_user_4_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_veranstalter_user_5_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_veranstalter_user_6_id', 0, 'INT')); + + $query = "LOCK TABLES #__sportsmanager_veranstalter WRITE, #__sportsmanager_berechtigt_fuer_veranstalter WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_veranstalter (veranstalterbezeichnung, veranstalterkuerzel, kategorie) VALUES ('$bezeichnung', '$kuerzel', '$kategorie');"; + else { + $query = "UPDATE #__sportsmanager_veranstalter" + . "\n SET veranstalterbezeichnung = '$bezeichnung'," + . "\n veranstalterkuerzel = '$kuerzel'," + . "\n kategorie = '$kategorie'" + . "\n WHERE veranstalter_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + if ($id == 0) + $id = $db->insertid(); + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[5];"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + for ($nummer = 0; $nummer <= 5; $nummer++) { + $berechtigt_user_id = $berechtigt_fuer_veranstalter_user_ids[$nummer]; + if ($berechtigt_user_id != 0) { + $gefunden = false; + foreach ($rows as $row) { + if ($row->berechtigt_user_id == $berechtigt_user_id) + $gefunden = true; + } + if (!$gefunden) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstalter (berechtigt_user_id, berechtigt_veranstalter_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_veranstalter'); +} + +function adminRemoveVeranstalter() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_rechnung WRITE, #__sportsmanager_berechtigt_fuer_veranstalter WRITE, #__sportsmanager_verein WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_veranstalter WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstalter_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_verein WHERE veranstalter_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnier WHERE veranstalter_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb WHERE veranstalter_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "UPDATE #__sportsmanager_rechnung SET veranstalter_id = NULL WHERE veranstalter_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_veranstalter'); +} + +function adminSaisons() { + $db =& getDatabase(); + + if (!benutzerZugriff("saisons_aendern")) + keinZugriff(true); + + $query = "SELECT *," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSaisons($rows); +} + +function adminEditSaison() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("saisons_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_saison WHERE saison_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditSaison($row); +} + +function adminSaveSaison() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("saisons_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_saisons'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $saisonbezeichnung = $db->escape(trim($jinput->get('saisonbezeichnung', '', 'RAW'))); + + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_saison (saisonbezeichnung) VALUES ('$saisonbezeichnung');"; + else { + $query = "UPDATE #__sportsmanager_saison" + . "\n SET saisonbezeichnung = '$saisonbezeichnung'" + . "\n WHERE saison_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_saisons'); +} + +function adminRemoveSaison() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("saisons_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_saison WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_turnier READ, #__sportsmanager_rangliste READ, #__sportsmanager_bestenliste READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT *," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten," + . "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten" + . "\n FROM #__sportsmanager_saison" + . "\n WHERE saison_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $row = $rows[0]; + if ($row->veranstaltungen != 0 || $row->turniere != 0 || $row->ranglisten != 0 || $row->bestenlisten != 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_saison WHERE saison_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_saisons'); +} + +function adminEditVeranstaltung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + if (!benutzerZugriff("mannschaftswettbewerb_aendern")) + keinZugriff(true); + + if ($id == 0) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + $vorlage = $jinput->get('vorlage', 0, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielmodi = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_verschieberegel ORDER BY bezeichnung"; // WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $verschieberegeln = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 2 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (empty($id)) { + $berechtigt_fuer_veranstaltung = array(); + } + else { + $query = "SELECT #__sportsmanager_berechtigt_fuer_veranstaltung.* FROM #__sportsmanager_berechtigt_fuer_veranstaltung, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstaltung_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_veranstaltung = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditVeranstaltung($row, $veranstalter, $spielmodi, $verschieberegeln, $kategorien, $saisons, $users, $berechtigt_fuer_veranstaltung, $vorlage); +} + +function adminSaveVeranstaltung() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $vorlage = $jinput->get('vorlage', 0, 'INT'); + $id = $vorlage ? 0 : $jinput->get('id', 0, 'INT'); + $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $saison_id = $jinput->get('saison_id', 0, 'INT'); + $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); + $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); + $modus_id = $jinput->get('modus_id', 0, 'INT'); + $verschieberegel_id = $jinput->get('verschieberegel_id', 0, 'INT'); + $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); + $unterteilung = $jinput->get('unterteilung', 0, 'INT'); + $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); + $logo_url = $db->escape(trim($jinput->get('logo_url', '', 'RAW'))); + $ticker_logo_url = $db->escape(trim($jinput->get('ticker_logo_url', '', 'RAW'))); + $status = $jinput->get('status', 0, 'INT'); + $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + $bildbeibehalten_logo = $jinput->get('bildbeibehalten_logo', 0, 'INT'); + $bildbeibehalten_ticker_logo = $jinput->get('bildbeibehalten_ticker_logo', 0, 'INT'); + $aktualisieren_ab_datum = $erster_tag; + $berechtigt_fuer_veranstaltung_user_ids = array(); + for ($i = 1; $i <= 6; $i++) { + $berechtigt_user_id = $jinput->get('berechtigt_fuer_veranstaltung_user_' . $i . '_id', 0, 'INT'); + if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids)) + array_push($berechtigt_fuer_veranstaltung_user_ids, $berechtigt_user_id); + } + + $query = "LOCK TABLES #__sportsmanager_veranstaltung WRITE, #__sportsmanager_berechtigt_fuer_veranstaltung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $elo_aktualisieren = false; + $spielerstatistik_aktualisieren = false; + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_veranstaltung (veranstalter_id, saison_id, bezeichnung, erster_tag, " . ($letzter_tag != null ? "letzter_tag, " : "") . "modus_id, verschieberegel_id, tabellenwertung, unterteilung, elo_wertung, logo_url, ticker_logo_url, status, reihenfolge, kategorie) VALUES + ('$veranstalterid', '$saison_id', '$bezeichnung', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$modus_id', '$verschieberegel_id', '$tabellenwertung', '$unterteilung', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht', "Die Veranstaltung existiert nicht mehr!"); + + return; + } + $row = $rows[0]; + + if (!empty($row->erster_tag) && $row->erster_tag < $erster_tag) + $aktualisieren_ab_datum = $erster_tag; + + $query = "UPDATE #__sportsmanager_veranstaltung" + . "\n SET veranstalter_id = '$veranstalterid'," + . "\n bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n erster_tag = '$erster_tag'," + . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,") + . "\n modus_id = '$modus_id'," + . "\n verschieberegel_id = '$verschieberegel_id'," + . "\n tabellenwertung = '$tabellenwertung'," + . "\n unterteilung = '$unterteilung'," + . "\n elo_wertung = '$elo_wertung'," + . "\n logo_url = '$logo_url'," + . "\n ticker_logo_url = '$ticker_logo_url'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'" + . "\n WHERE veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0)) + $elo_aktualisieren = true; + if ((($modus_id != 0 || $row->modus_id != 0) && $status != $row->status) + || (($status != 0 || $row->status != 0) && $modus_id != $row->modus_id)) + $spielerstatistik_aktualisieren = true; + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; + if (!empty($berechtigt_fuer_veranstaltung_user_ids)) + $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_veranstaltung_user_ids, ", ") . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids); + if ($index !== false) { + unset($berechtigt_fuer_veranstaltung_user_ids[$index]); + } + } + + foreach ($berechtigt_fuer_veranstaltung_user_ids as $berechtigt_user_id) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstaltung (berechtigt_user_id, berechtigt_veranstaltung_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($elo_aktualisieren) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + + teamstatistikAktualisieren($id); + + if ($spielerstatistik_aktualisieren) { + begegnungenAktualisieren($id, 0); + spielerstatistikAktualisieren(0, $id); + } + + if ($bildbeibehalten_ticker_logo == 0) { + bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id); + + if (!empty($_FILES["bild_ticker_logo"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild_ticker_logo"]["tmp_name"])) { + $size = getimagesize($_FILES["bild_ticker_logo"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] > 8192 || $size[1] > 8192)) { + redirectSportsManagerURL('&task=admin_ubersicht', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit maximal 8192*8192 Bildpunkten vorliegt."); + + return; + } + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe'; + if (!JFile::copy($_FILES["bild_ticker_logo"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . 'ticker_logo' . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) { + redirectSportsManagerURL('&task=admin_uebersicht', "Das Bild konnte nicht an die Zielposition kopiert werden."); + + return; + } + } + } + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRemoveVeranstaltung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_bestenliste_veranstaltung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_berechtigt_fuer_veranstaltung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_team WHERE veranstaltung_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE veranstaltung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + spielerstatistikAktualisieren(0, $id); + + bildLoeschen("mannschaftswettbewerbe/logo", $id); + bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminMannschaften() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT #__sportsmanager_team.*, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.*," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND NOT ausgetreten) AS mitglieder_aktiv," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id) AS mitglieder," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung WHERE heim_team_id = #__sportsmanager_team.team_id OR gast_team_id = #__sportsmanager_team.team_id) AS begegnungen" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_verein.verein_id = #__sportsmanager_team.verein_id" + . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id" + . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows); +} + +function adminEditMannschaft() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + if ($id == 0) { + $row = null; + $berechtigt_fuer_team = null; + $teamansprechpartner = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + + if ($veranstaltungid != $row->veranstaltung_id) + die("Wrong id!"); + + $query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_team_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_team = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teamansprechpartner = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten" . (!empty($row) && !empty($row->verein_id) ? " OR verein_id = $row->verein_id" : "") + . "\n ORDER BY veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_veranstaltungen) { + if (empty($id) || empty($row->teamgruppe_id)) { + $query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + else { + $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)" + . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND ((saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") . ") OR NOT ISNULL(team_id))" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + } + else { + if (empty($id) || empty($row->teamgruppe_id)) { + $query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + else { + $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)" + . "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND (saison_id = $veranstaltung->saison_id OR NOT ISNULL(team_id))" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditMannschaft($veranstaltung, $row, $veranstaltungen, $vereine, $users, $berechtigt_fuer_team, $teamansprechpartner, $spielorte, $beschraenkter_zugriff_veranstaltungen); +} + +function adminSaveMannschaft() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltung_id)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); + + return; + } + + $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + $beschraenkter_zugriff_veranstaltungen_ids = $beschraenkter_zugriff_veranstaltungen ? benutzerVeranstaltungIdsModerator() : null; + + $teamname = $db->escape(trim($jinput->get('teamname', '', 'RAW'))); + $platz = $jinput->get('platz', 0, 'INT'); + $verein_id = $jinput->get('verein_id', 0, 'INT'); + $tischtyp = $db->escape(trim($jinput->get('tischtyp', '', 'RAW'))); + $tischeigenschaften = $db->escape(trim($jinput->get('tischeigenschaften', '', 'RAW'))); + $heimspiel_wochentag = $jinput->get('heimspiel_wochentag', 0, 'INT'); + $heimspiel_uhrzeit = sprintf("%02d%02d", $jinput->get('heimspiel_uhrzeit_stunden', 0, 'INT'), $jinput->get('heimspiel_uhrzeit_minuten', 0, 'INT')); + $heimspielort_id = $jinput->get('heimspielort_id', 0, 'INT'); + $nichtraucherschutz = $jinput->get('nichtraucherschutz', 0, 'INT'); + $zusatzpunkte = $jinput->get('zusatzpunkte', 0, 'FLOAT'); + $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); + + $berechtigt_fuer_team_user_ids = array($jinput->get('berechtigt_fuer_team_user_1_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_team_user_2_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_team_user_3_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_team_user_4_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_team_user_5_id', 0, 'INT'), + $jinput->get('berechtigt_fuer_team_user_6_id', 0, 'INT')); + $pin = $db->escape(trim($jinput->get('pin', '', 'RAW'))); + + $weitere_veranstaltungen_anzahl = $jinput->get('weitere_veranstaltungen_anzahl', 0, 'INT'); + $weitere_veranstaltungen_beruecksichtigt = array(); + for ($i = 0; $i < $weitere_veranstaltungen_anzahl; $i++) { + $weitere_veranstaltung_id = $jinput->get('weitere_veranstaltung_id_' . $i, 0, 'INT'); + if ($weitere_veranstaltung_id != 0 && !in_array($weitere_veranstaltung_id, $weitere_veranstaltungen_beruecksichtigt)) + array_push($weitere_veranstaltungen_beruecksichtigt, $weitere_veranstaltung_id); + } + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_begegnung_historie READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, zusatzpunkte" . ($veranstaltung->tabellenwertung == -2 ? ", platz" : "") . ", pin)" + . "\n VALUES (" . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ", '$veranstaltungid', '$teamname', '$tischtyp', '$tischeigenschaften', '$heimspiel_wochentag', '$heimspiel_uhrzeit', " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ", '$nichtraucherschutz', '$zusatzpunkte'" . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? ", '$platz'" : ", NULL") : "") . ", '$pin');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + $teamgruppe_id = $id; + $team_alt = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) == 0) die("Wrong id!"); + $team_alt = $teams[0]; + $teamgruppe_id = $team_alt->teamgruppe_id != null ? $team_alt->teamgruppe_id : $id; + + if ($veranstaltungid != $team_alt->veranstaltung_id) + die("Wrong id!"); + + $query = "UPDATE #__sportsmanager_team" + . "\n SET verein_id = " . ($verein_id != 0 ? "'$verein_id'" : "NULL") . "," + . "\n teamname = '$teamname'," + . "\n tischtyp = '$tischtyp'," + . "\n tischeigenschaften = '$tischeigenschaften'," + . "\n heimspiel_wochentag = '$heimspiel_wochentag'," + . "\n heimspiel_uhrzeit = '$heimspiel_uhrzeit'," + . "\n heimspielort_id = " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . "," + . "\n nichtraucherschutz = '$nichtraucherschutz'," + . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? "\n platz = '$platz'," : "\n platz = NULL,") : "") + . "\n zusatzpunkte = '$zusatzpunkte'," + . "\n pin = '$pin'" + . "\n WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Teamvertreter speichern + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[5];"; + + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + for ($nummer = 0; $nummer <= 5; $nummer++) { + $berechtigt_user_id = $berechtigt_fuer_team_user_ids[$nummer]; + if ($berechtigt_user_id != 0) { + $gefunden = false; + foreach ($rows as $row) { + if ($row->berechtigt_user_id == $berechtigt_user_id) + $gefunden = true; + } + if (!$gefunden) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Ansprechpartner speichern + for ($nummer = 1; $nummer <= 2; $nummer++) { + $teamansprechpartner_id = $jinput->get('teamansprechpartner_' . $nummer . '_id', 0, 'INT'); + $teamansprechpartner_vorname = trim($jinput->get('teamansprechpartner_' . $nummer . '_vorname', '', 'RAW')); + $teamansprechpartner_nachname = trim($jinput->get('teamansprechpartner_' . $nummer . '_nachname', '', 'RAW')); + $teamansprechpartner_telefon = trim($jinput->get('teamansprechpartner_' . $nummer . '_telefon', '', 'RAW')); + $teamansprechpartner_mobil = trim($jinput->get('teamansprechpartner_' . $nummer . '_mobil', '', 'RAW')); + $teamansprechpartner_email = trim($jinput->get('teamansprechpartner_' . $nummer . '_email', '', 'RAW')); + + if ($teamansprechpartner_id == 0) { + if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) { + $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$teamansprechpartner_vorname', '$teamansprechpartner_nachname', '$teamansprechpartner_telefon', '$teamansprechpartner_mobil', '$teamansprechpartner_email');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) { + $query = "UPDATE #__sportsmanager_teamansprechpartner" + . "\n SET vorname = '$teamansprechpartner_vorname'," + . "\n nachname = '$teamansprechpartner_nachname'," + . "\n telefon = '$teamansprechpartner_telefon'," + . "\n mobil = '$teamansprechpartner_mobil'," + . "\n email = '$teamansprechpartner_email'" + . "\n WHERE kontaktperson_id = $teamansprechpartner_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $teamansprechpartner_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit)) + heimspieltag_aktualisieren($id); + + $bild_aktualisieren_gescheitert = 0; + if ($bildbeibehalten == 0) { + bildLoeschen("mannschaften", $id); + if (!empty($_FILES["bild"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { + $size = getimagesize($_FILES["bild"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { + $bild_aktualisieren_gescheitert = 1; + } + else { + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften'; + $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'); + if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $ziel_pfad, 240, 240, 0)) + $bild_aktualisieren_gescheitert = 2; + } + } + } + } + + // Weitere Wettbewerbe aktualisieren + $query = "SELECT team_id, veranstaltung_id" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id != $id AND teamgruppe_id = $teamgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); + + $veranstaltungen_aktualisieren = array(); + foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) { + if ($beschraenkter_zugriff_veranstaltungen && !in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids)) + continue; + $ist_beruecksichtigt = false; + foreach ($weitere_veranstaltungen_beruecksichtigt as $weitere_veranstaltung_id) { + if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) { + $ist_beruecksichtigt = true; + break; + } + } + if (!$ist_beruecksichtigt) + mannschaftsgruppe_entfernen($bestehende_weitere_veranstaltung_beruecksichtigt->team_id); + else { + mannschaftsgruppe_verknuepfen($id, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, true, false, $bildbeibehalten == 0); + if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit)) + heimspieltag_aktualisieren($bestehende_weitere_veranstaltung_beruecksichtigt->team_id); + } + if (!in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $veranstaltungen_aktualisieren)) + array_push($veranstaltungen_aktualisieren, $bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id); + } + + foreach ($weitere_veranstaltungen_beruecksichtigt as $index => $weitere_veranstaltung_id) { + if ($beschraenkter_zugriff_veranstaltungen && !in_array($weitere_veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids)) + continue; + + $ist_beruecksichtigt = false; + foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) { + if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) { + $ist_beruecksichtigt = true; + break; + } + } + if (!$ist_beruecksichtigt) + mannschaftsgruppe_hinzufuegen($id, $weitere_veranstaltung_id); + if (!in_array($weitere_veranstaltung_id, $veranstaltungen_aktualisieren)) + array_push($veranstaltungen_aktualisieren, $weitere_veranstaltung_id); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + teamstatistikAktualisieren($veranstaltungid); + foreach ($veranstaltungen_aktualisieren as $weitere_veranstaltung_id) + teamstatistikAktualisieren($weitere_veranstaltung_id); + + if ($bild_aktualisieren_gescheitert > 0) { + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid, $bild_aktualisieren_gescheitert == 1 ? "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt." : "Das Bild konnte nicht an die Zielposition kopiert werden."); + + return; + } + + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); +} + +function mannschaftsgruppe_hinzufuegen($quelle_team_id, $ziel_veranstaltung_id) { + $db =& getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $quelle_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) == 0) die("Wrong id!"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id; + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_team" + . "\n WHERE teamgruppe_id = $teamgruppe_id AND veranstaltung_id = $ziel_veranstaltung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) + return false; + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE veranstaltung_id = $ziel_veranstaltung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n == 0) die("Wrong id!"); + + $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)" + . "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltung_id', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_team_id = $db->insertid(); + + return mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, true, true, true); +} + +function mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, $mannschaftsdaten_aktualisieren, $mannschaftsspieler_aktualisieren, $mannschaftsbild_aktualisieren) { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + + if ($quelle_team_id == $ziel_team_id) + return false; + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $quelle_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id; + + if ($team->teamgruppe_id == null) { + $query = "UPDATE #__sportsmanager_team" + . "\n SET teamgruppe_id = '$teamgruppe_id'" + . "\n WHERE team_id = $quelle_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Mannschaftsdaten aktualisieren + if ($mannschaftsdaten_aktualisieren) { + $query = "UPDATE #__sportsmanager_team" + . "\n SET teamgruppe_id = '$teamgruppe_id'," + . "\n verein_id = " . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . "," + . "\n teamname = '" . $db->escape($team->teamname) . "'," + . "\n tischtyp = '" . $db->escape($team->tischtyp) . "'," + . "\n tischeigenschaften = '" . $db->escape($team->tischeigenschaften) . "'," + . "\n heimspiel_wochentag = '" . $db->escape($team->heimspiel_wochentag) . "'," + . "\n heimspiel_uhrzeit = '" . $db->escape($team->heimspiel_uhrzeit) . "'," + . "\n heimspielort_id = " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . "," + . "\n nichtraucherschutz = '$team->nichtraucherschutz'," + . "\n pin = '" . $db->escape($team->pin) . "'" + . "\n WHERE team_id = $ziel_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // Teamvertreter kopieren + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $quelle_team_id ORDER BY berechtigt_fuer_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $quelle_teamvertreter = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id ORDER BY berechtigt_fuer_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_teamvertreter = $db->loadObjectList(); + + $quelle_teamvertreter_anzahl = count($quelle_teamvertreter); + $ziel_teamvertreter_anzahl = count($ziel_teamvertreter); + for ($i = 0; $i < $quelle_teamvertreter_anzahl; $i++) { + $berechtigt_user_id = $quelle_teamvertreter[$i]->berechtigt_user_id; + if ($i < $ziel_teamvertreter_anzahl) { + $berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id; + $query = "UPDATE #__sportsmanager_berechtigt_fuer_team" + . "\n SET berechtigt_user_id = '$berechtigt_user_id'" + . "\n WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id"; + } + else { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)" + . "\n VALUES ('$berechtigt_user_id', '$ziel_team_id');"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + for ($i = $quelle_teamvertreter_anzahl; $i < $ziel_teamvertreter_anzahl; $i++) { + $berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id; + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Ansprechpartner kopieren + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $quelle_team_id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $quelle_ansprechpartner = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_ansprechpartner = $db->loadObjectList(); + + $quelle_ansprechpartner_anzahl = count($quelle_ansprechpartner); + $ziel_ansprechpartner_anzahl = count($ziel_ansprechpartner); + for ($i = 0; $i < $quelle_ansprechpartner_anzahl; $i++) { + if ($i < $ziel_ansprechpartner_anzahl) { + $kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id; + $query = "UPDATE #__sportsmanager_teamansprechpartner" + . "\n SET nachname = '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "'," + . "\n vorname = '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "'," + . "\n telefon = '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "'," + . "\n mobil = '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "'," + . "\n email = '" . $db->escape($quelle_ansprechpartner[$i]->email) . "'" + . "\n WHERE kontaktperson_id = $kontaktperson_id"; + } + else { + $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)" + . "\n VALUES ('$ziel_team_id', '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "', '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "', '" . $db->escape($quelle_ansprechpartner[$i]->email) . "');"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + for ($i = $quelle_ansprechpartner_anzahl; $i < $ziel_ansprechpartner_anzahl; $i++) { + $kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id; + $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $kontaktperson_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + // Mitglieder aktualisieren + if ($mannschaftsspieler_aktualisieren) { + $query = "SELECT spieler_id, ausgetreten, SUM(IF(team_id = $quelle_team_id, 1, 0)) AS mitglied_quelle, SUM(IF(team_id = $ziel_team_id, 1, 0)) AS mitglied_ziel" // , SUM(IF(team_id = $quelle_team_id, 1, IF(team_id = $ziel_team_id, 10000, 0))) AS teammitgliedschaften" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE team_id = $quelle_team_id OR team_id = $ziel_team_id" + . "\n GROUP BY spieler_id, ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereinte_mitglieder = $db->loadObjectList(); + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder'; + foreach ($vereinte_mitglieder as $mitglied) { + $query = "SELECT mitglied_von_team_id" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_mitglieder = $db->loadObjectList(); + + foreach ($ziel_mitglieder as $ziel_mitglied) + bildLoeschen("mannschaftsmitglieder", $ziel_mitglied->mitglied_von_team_id); + + if ($mitglied->mitglied_quelle == 0 && $mitglied->mitglied_ziel > 0) { + $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + continue; + } + + if ($mitglied->mitglied_quelle > 0 && $mitglied->mitglied_ziel == 0) { + $query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id, ausgetreten)" + . "\n VALUES ('$mitglied->spieler_id', '$ziel_team_id', '$mitglied->ausgetreten');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT mitglied_von_team_id" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_mitglieder = $db->loadObjectList(); + } + + $query = "SELECT mitglied_von_team_id" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $quelle_team_id AND ausgetreten = $mitglied->ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $quelle_mitglieder = $db->loadObjectList(); + + $bild_kopiert = false; + foreach ($quelle_mitglieder as $quelle_mitglied) { + foreach ($ziel_mitglieder as $ziel_mitglied) { + $pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_mitglied->mitglied_von_team_id . '.'; + if (JFile::exists($pfad . 'png')) { + JFile::copy($pfad . 'png', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.png'); + $bild_kopiert = true; + } + else if (JFile::exists($pfad . 'jpg')) { + JFile::copy($pfad . 'jpg', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.jpg'); + $bild_kopiert = true; + } + } + if ($bild_kopiert) + break; + } + } + } + + // Mannschaftsbild aktualisieren + if ($mannschaftsbild_aktualisieren) { + bildLoeschen("mannschaften", $ziel_team_id); + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften'; + $quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_team_id . '.'; + $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_team_id . '.'; + if (JFile::exists($quelle_pfad . 'png')) + $ext = "png"; + else if (JFile::exists($quelle_pfad . 'jpg')) + $ext = "jpg"; + else + $ext = ""; + if (!empty($ext) && !JFile::copy($quelle_pfad . $ext, $ziel_pfad . $ext)) + return false; + } + + return true; +} + +function mannschaftsgruppe_entfernen($ziel_team_id) { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $ziel_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id; + if ($teamgruppe_id == null) + return false; + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $ziel_team_id OR gast_team_id = $ziel_team_id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) + return false; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE team_id = $ziel_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) + bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $ziel_team_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $ziel_team_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_team" + . "\n WHERE teamgruppe_id = $teamgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n == 1) { + $query = "UPDATE #__sportsmanager_team" + . "\n SET teamgruppe_id = NULL" + . "\n WHERE teamgruppe_id = $teamgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + return true; +} + +function heimspieltag_aktualisieren($team_id) { + $db =& getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + + if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7) + return; + + $query = "SELECT begegnung_id, zeitpunkt" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)" + . "\n WHERE heim_team_id = $team_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)" + . "\n ORDER BY spieltag DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + foreach ($begegnungen as $begegnung) { + $ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1)); + $neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100); + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET zeitpunkt = '$neuer_zeitpunkt'" + . "\n WHERE begegnung_id = $begegnung->begegnung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } +} + +function termin_aktualisieren($begegnung_id) { + $db =& getDatabase(); + + $query = "SELECT heim_team_id, zeitpunkt" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)" + . "\n WHERE begegnung_id = $begegnung_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)" + . "\n ORDER BY spieltag DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + if (count($begegnungen) < 1) + return; + $begegnung = $begegnungen[0]; + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + + if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7) + return; + + $ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1)); + $neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100); + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET zeitpunkt = '$neuer_zeitpunkt'" + . "\n WHERE begegnung_id = $begegnung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } +} + +function adminRemoveMannschaft() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_team WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT teamgruppe_id, veranstaltung_id FROM #__sportsmanager_team WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $teamgruppe_id = $rows[0]->teamgruppe_id != null ? $rows[0]->teamgruppe_id : $id; + + if ($veranstaltungid != $rows[0]->veranstaltung_id) + die("Wrong id!"); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $id OR gast_team_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + + if ($rows[0]->teamgruppe_id != null) { + mannschaftsgruppe_entfernen($id); + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) + bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("mannschaften", $id); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + teamstatistikAktualisieren($veranstaltungid); + + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); +} + +function adminKopierenMannschaftForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT #__sportsmanager_team.*, vereinsname" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_veranstaltungen) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE " . veranstaltungFilter("veranstaltung_id IN") + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminKopierenMannschaft($veranstaltung, $teams, $veranstaltungen); +} + +function adminKopierenMannschaft() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $ids = $jinput->get('ids', array(), 'ARRAY'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + $mitglieder_kopieren = $jinput->get('mitglieder_kopieren', 0, 'INT'); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); + + return; + } + + $beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + + $ziel_veranstaltungen_ids = array(); + for ($i = 1; $i <= 4; $i++) { + $ziel_veranstaltungid = $jinput->get('ziel_veranstaltungid_' . $i, 0, 'INT'); + if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid))) + continue; + if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids)) + array_push($ziel_veranstaltungen_ids, $ziel_veranstaltungid); + } + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) { + foreach ($ids as $id) { + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + + if ($veranstaltungid != $team->veranstaltung_id) + die("Wrong id!"); + + $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)" + . "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltungid', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_teamid = $db->insertid(); + + // Mitglieder kopieren + if ($mitglieder_kopieren) { + $query = "SELECT * FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id AND NOT ausgetreten"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id)" + . "\n VALUES ('$row->spieler_id', '$ziel_teamid');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_mitglied_von_team_id = $db->insertid(); + + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . '.'; + if (JFile::exists($pfad . 'png')) + JFile::copy($pfad . 'png', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.png'); + else if (JFile::exists($pfad . 'jpg')) + JFile::copy($pfad . 'jpg', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.jpg'); + } + } + + // Teamvertreter kopieren + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id ORDER BY berechtigt_fuer_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)" + . "\n VALUES ('$row->berechtigt_user_id', '$ziel_teamid');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Ansprechpartner kopieren + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)" + . "\n VALUES ('$ziel_teamid', '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->telefon) . "', '" . $db->escape($row->mobil) . "', '" . $db->escape($row->email) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $id . '.'; + if (JFile::exists($pfad . 'png')) + JFile::copy($pfad . "png", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.png'); + else if (JFile::exists($pfad . 'jpg')) + JFile::copy($pfad . "jpg", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.jpg'); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + teamstatistikAktualisieren($ziel_veranstaltungid); + + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); +} + +function adminVerknuepfenMannschaftForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT #__sportsmanager_team.*, vereinsname" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + if ($beschraenkter_zugriff_veranstaltungen) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE saison_id = $veranstaltung->saison_id" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVerknuepfenMannschaft($veranstaltung, $teams, $veranstaltungen); +} + +function adminVerknuepfenMannschaft() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $ids = $jinput->get('ids', array(), 'ARRAY'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); + + return; + } + + $beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1; + + $ziel_veranstaltungen_ids = array(); + for ($i = 1; $i <= 4; $i++) { + $ziel_veranstaltungid = $jinput->get('ziel_veranstaltungid_' . $i, 0, 'INT'); + if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid))) + continue; + if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids)) + array_push($ziel_veranstaltungen_ids, $ziel_veranstaltungid); + } + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_veranstaltung READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) { + foreach ($ids as $id) { + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 0) die("Wrong id!"); + $team = $teams[0]; + + if ($veranstaltungid != $team->veranstaltung_id) + die("Wrong id!"); + + mannschaftsgruppe_hinzufuegen($id, $ziel_veranstaltungid); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + teamstatistikAktualisieren($ziel_veranstaltungid); + + redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); +} + +function adminMitglieder() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) + keinZugriff(true); + + $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern"); + + $teamid = $jinput->get('teamid', 0, 'INT'); + if ($teamid == 0) die ("Wrong id!"); + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT mitglied_von_team_id, spieler_id, aktueller_verein_id, MAX(IF(team_id = $teamid, #__sportsmanager_mitglied_von_team.ausgetreten, 0)) AS ausgetreten, MAX(IF(team_id = $teamid, erster_spieltag, NULL)) AS erster_spieltag, MAX(IF(team_id = $teamid, letzter_spieltag, NULL)) AS letzter_spieltag, vorname, nachname, spielernr, MIN(IF(team_id = $teamid, 0, 1)) AS anderes_team" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_team USING (team_id)" + . "\n WHERE (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" + . "\n GROUP BY spieler_id" + . "\n ORDER BY anderes_team, IF(#__sportsmanager_mitglied_von_team.ausgetreten, 1, 0), nachname, vorname, erster_spieltag"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $mitglieder = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminMitglieder($team, $veranstaltung, $mitglieder, $berechtigt_spieler_aendern); +} + +function adminEditMitglied() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $teamid = $jinput->get('teamid', 0, 'INT'); + $alle_anzeigen = $jinput->get('alle_anzeigen', 0, 'INT'); + $entfernen = $jinput->get('entfernen', 0, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; + + if (empty($id)) + $row = null; + else { + $query = "SELECT #__sportsmanager_mitglied_von_team.*, vorname, nachname FROM #__sportsmanager_mitglied_von_team LEFT JOIN #__sportsmanager_spieler USING (spieler_id) INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + if (empty($id)) { + $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, team_id, NULL AS mitglied_von_team_id, NULL AS erster_spieltag, NULL AS letzter_spieltag, NULL AS ausgetreten" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)" + . "\n WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") + . "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung"; + } + else { + $query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, veranstaltungen.team_id, mitglied_von_team_id, erster_spieltag, letzter_spieltag, #__sportsmanager_mitglied_von_team.ausgetreten" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE #__sportsmanager_team.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team ON veranstaltungen.team_id = #__sportsmanager_mitglied_von_team.team_id AND spieler_id = " . $row->spieler_id + . "\n WHERE veranstaltungen.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") + . "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $veranstaltungen_begegnungen = array(); + foreach ($veranstaltungen as $v) { + $query = "SELECT spieltag, zeitpunkt" + . "\n FROM #__sportsmanager_begegnung" + . "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt < CURDATE()" + . "\n ORDER BY zeitpunkt DESC" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + $veranstaltungen_begegnungen[$v->veranstaltung_id] = array(); + $begegnungen = array_reverse($begegnungen); + foreach ($begegnungen as $begegnung) + array_push($veranstaltungen_begegnungen[$v->veranstaltung_id], array($begegnung->spieltag, $begegnung->zeitpunkt)); + + $query = "SELECT spieltag, zeitpunkt" + . "\n FROM #__sportsmanager_begegnung" + . "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt >= CURDATE()" + . "\n ORDER BY zeitpunkt" + . "\n LIMIT 4"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + foreach ($begegnungen as $begegnung) + array_push($veranstaltungen_begegnungen[$v->veranstaltung_id], array($begegnung->spieltag, $begegnung->zeitpunkt)); + } + + /* + $query = "SELECT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler"; + if ($team->verein_id != NULL) + $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT ISNULL(aktueller_verein_id)"; + else + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; + $query .= "\n ORDER BY nachname, vorname"; +*/ + if ($team->verein_id != null) { + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $team->verein_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + if (count($vereine) < 1) die ("Wrong id"); + $verein = $vereine[0]; + } + else + $verein = null; + + if (empty($id)) { + if (!empty($team->verein_id) && !$alle_anzeigen) { + $query = "SELECT DISTINCT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, 1 AS aktives_mitglied" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten" + . " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" + . "\n ORDER BY nachname, vorname"; + } + else { + $query = "SELECT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" + . " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)" + . "\n ORDER BY nachname, vorname"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + if (!empty($team->verein_id) && !$alle_anzeigen) { + $query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1)" + . " AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)" + . "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + + } + else { + $query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1) AND NOT ISNULL(aktueller_verein_id)" + . "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $mitgliedschaften = $db->loadObjectList(); + + $spielberechtigungen = array(); + foreach ($mitgliedschaften as $mitgliedschaft) { + if (!isset($spielberechtigungen[$mitgliedschaft->spieler_id])) + $spielberechtigungen[$mitgliedschaft->spieler_id] = array(); + array_push($spielberechtigungen[$mitgliedschaft->spieler_id], array($mitgliedschaft->veranstaltung_id, $mitgliedschaft->unterteilung, $mitgliedschaft->erster_spieltag, $mitgliedschaft->letzter_spieltag, $mitgliedschaft->team_id, $mitgliedschaft->ausgetreten)); + } + + // Veranstaltungsbezeichnungen ermitteln + $query = "SELECT veranstaltung_id, bezeichnung" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE saison_id = $veranstaltung->saison_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $veranstaltungsbezeichnungen = array(); + foreach ($rows as $v) + $veranstaltungsbezeichnungen[$v->veranstaltung_id] = $v->bezeichnung; + + // Mannschaftsbezeichnungen ermitteln + $query = "SELECT team_id, teamname" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n WHERE saison_id = $veranstaltung->saison_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $mannschaftsnamen = array(); + foreach ($rows as $m) + $veranstaltungsbezeichnungen[$m->team_id] = $m->teamname; + + } + else { + $spieler = array(); + $spielberechtigungen = null; + $veranstaltungsbezeichnungen = null; + $mannschaftsnamen = null; + } + + HTML_sportsmanager_admin::adminEditMitglied($row, $team, $verein, $veranstaltung, $spieler, $spielberechtigungen, $veranstaltungsbezeichnungen, $mannschaftsnamen, $veranstaltungen, $veranstaltungen_begegnungen, $alle_anzeigen, $entfernen); +} + +function adminSaveMitglied() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator()) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $spielerids = $id != 0 ? array($id) : $jinput->get('spielerids', array(), 'ARRAY'); + $teamid = $jinput->get('teamid', 0, 'INT'); + $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid); + + return; + } + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id"); + $team = $teams[0]; + $teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid; + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id)) + keinZugriff(); + + $query = "LOCK TABLES #__sportsmanager_team WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamansprechpartner WRITE, #__sportsmanager_mitglied_von_team WRITE, #__sportsmanager_begegnung READ, #__sportsmanager_veranstaltung READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // Sicherstellen, dass Mannschaftsmitglied zum Team gehört + if (!empty($id)) { + $query = "SELECT * FROM #__sportsmanager_mitglied_von_team INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + } + + $query = "SELECT DISTINCT veranstaltung_id, team_id" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $teamid" . (!empty($teamgruppe_id) ? " OR teamgruppe_id = $teamgruppe_id" : null); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + foreach ($veranstaltungen as $v) { + $status = $jinput->get('status_' . $v->veranstaltung_id, -1, 'INT'); + if ($status == -1) + continue; + $erster_spieltag = $jinput->get('erster_spieltag_' . $v->veranstaltung_id, 0, 'INT'); + $letzter_spieltag = $jinput->get('letzter_spieltag_' . $v->veranstaltung_id, 0, 'INT'); + + $erste_runde_typ = $jinput->get('erste_runde_typ_' . $v->veranstaltung_id, -1, 'INT'); + $erste_runde = max(min(abs($jinput->get('erste_runde_' . $v->veranstaltung_id, 1, 'INT')), $erste_runde_typ == -2 ? 99 : 9999), 1); + $erste_runde_platzierung_ende = max(min(abs($jinput->get('erste_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $erste_runde + 99), 1); + + if ($erste_runde_typ >= 10000) + $erste_runde = $erste_runde_typ; + else if ($erste_runde_typ == -2) + $erste_runde = 20000 + ((99 - abs($erste_runde_platzierung_ende - $erste_runde)) * 100) + 99 - min($erste_runde, $erste_runde_platzierung_ende); + else if ($erste_runde_typ == 0) + $erste_runde = 0; + + $letzte_runde_typ = $jinput->get('letzte_runde_typ_' . $v->veranstaltung_id, -1, 'INT'); + $letzte_runde = max(min(abs($jinput->get('letzte_runde_' . $v->veranstaltung_id, 1, 'INT')), $letzte_runde_typ == -2 ? 99 : 9999), 1); + $letzte_runde_platzierung_ende = max(min(abs($jinput->get('letzte_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $letzte_runde + 99), 1); + + if ($letzte_runde_typ >= 10000) + $letzte_runde = $letzte_runde_typ; + else if ($letzte_runde_typ == -2) + $letzte_runde = 20000 + ((99 - abs($letzte_runde_platzierung_ende - $letzte_runde)) * 100) + 99 - min($letzte_runde, $letzte_runde_platzierung_ende); + else if ($letzte_runde_typ == 0) + $letzte_runde = 0; + + if ($letzte_runde != 0 && $erste_runde != 0 && $erste_runde > $letzte_runde) { + $t = $erste_runde; + $erste_runde = $letzte_runde; + $letzte_runde = $t; + } + + if ($id == 0) { + foreach ($spielerids as $spielerid) { + if ($status == 0) + continue; + + $query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = '" . $db->escape($spielerid) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) > 0) + continue; + + $query = "INSERT #__sportsmanager_mitglied_von_team" + . "\n SET spieler_id = '" . $db->escape($spielerid) . "'," + . "\n team_id = '$v->team_id'," + . "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," + . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," + . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE") . ";"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + $query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if ($status == 0) { + foreach ($rows as $row) { + $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE mitglied_von_team_id = " . $row->mitglied_von_team_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); + } + } + else { + if (count($rows) == 0) { + $query = "INSERT #__sportsmanager_mitglied_von_team" + . "\n SET spieler_id = '$id'," + . "\n team_id = '$v->team_id'," + . "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," + . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," + . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE"); + } + else { + $query = "UPDATE #__sportsmanager_mitglied_von_team" + . "\n SET erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . "," + . "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . "," + . "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE") + . "\n WHERE mitglied_von_team_id = " . $rows[0]->mitglied_von_team_id; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($bildbeibehalten == 0) { + foreach ($rows as $row) { + bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id); + + if (!empty($_FILES["bild"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { + $size = getimagesize($_FILES["bild"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt."); + + return; + } + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder'; + if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild konnte nicht an die Zielposition kopiert werden."); + + return; + } + } + } + } + } + } + } + } + + $query = "SELECT team_id" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id != $teamid AND teamgruppe_id = $teamgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); + + foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) + mannschaftsgruppe_verknuepfen($teamid, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, false, false, false); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid); +} + +function adminBegegnungen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $modus_id = $veranstaltung->modus_id; + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $modus = $rows[0]; + + $query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t2.nichtraucherschutz AS heim_nichtraucherschutz, t3.nichtraucherschutz AS gast_nichtraucherschutz," + . "\n EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id AND aktion IN (1, 5)) AS verlegt," + . "\n (SELECT IF(#__sportsmanager_begegnung_historie.aktion NOT IN (0, 3, 4), NULL, #__sportsmanager_begegnung_historie.eingetragen) AS eingetragen FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" + . "\n FROM #__sportsmanager_begegnung AS t1" + . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" + . "\n WHERE t2.veranstaltung_id = $veranstaltungid" + . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, " : "") . "t1.zeitpunkt, heim_name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows); +} + +function adminEditBegegnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + if (empty($id)) { + $query = "SELECT #__sportsmanager_begegnung.*" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY zeitpunkt DESC LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $row = count($rows) < 1 ? null : $rows[0]; // Falls keine Begegnung als Vorlage verfügbar ist + } + else { + $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $row = $rows[0]; + + // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + // Vorgeschlagene Termine ermitteln + $query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)" + . "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id" + . "\n LEFT JOIN #__users AS user ON user.id = user_id" + . "\n WHERE begegnung_id = $id" + . "\n ORDER BY begegnung_historie_id DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte); + HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); +} + +function adminSaveBegegnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $update = $id != 0; + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); + + return; + } + + $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); + $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); + $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); + $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); + $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); + $spielort_id = $jinput->get('spielort_id', 0, 'INT'); + $tisch = $db->escape(trim($jinput->get('tisch', '', 'RAW'))); + $nichtraucherschutz = $jinput->get('nichtraucherschutz', 0, 'INT'); + $rundentyp = $jinput->get('rundentyp', -1, 'INT'); + $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); + $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); + $aktualisieren_ab_datum = $datum; + + if ($rundentyp >= 10000) + $runde = $rundentyp; + else if ($rundentyp == -2) + $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); + else if ($rundentyp == 0) + $runde = 0; + + $query = "SELECT status, elo_wertung" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong Id!"); + $veranstaltung = $rows[0]; + + // Sicherstellen, dass Teams zu Veranstaltung gehören + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $heim_team_id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + $heim_team = $teams[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $gast_team_id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + $gast_team = $teams[0]; + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_begegnung_historie WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id, tisch, nichtraucherschutz)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ", '$tisch', '$nichtraucherschutz');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + // Begegnung ermitteln + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" + . "\n FROM #__sportsmanager_begegnung" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $begegnung = $rows[0]; + + if (!empty($begegnung->zeitpunkt) && substr($begegnung->zeitpunkt, 0, 10) < $aktualisieren_ab_datum) + $aktualisieren_ab_datum = substr($begegnung->zeitpunkt, 0, 10); + + if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id) { + $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($begegnung->zeitpunkt != $zeitpunkt && $begegnung->verlegen_aktionen != 0) { + $aktueller_zeitpunkt = date('Y-m-d H:i:s'); + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 5, " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$user_id', NULL, NULL, NULL, '$aktueller_zeitpunkt');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) { + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET zeitpunkt = " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . "," + . "\n spieltag = " . ($runde != null ? "'$runde'" : "NULL") . "," + . "\n heim_team_id = '$heim_team_id'," + . "\n gast_team_id = '$gast_team_id'," + . "\n spielort_id = " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . "," + . "\n tisch = '$tisch'," + . "\n nichtraucherschutz = '$nichtraucherschutz'" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($veranstaltung->status > 0) { + if ($update && (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch)) { + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" + . "\n FROM #__sportsmanager_begegnung" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $begegnung = $rows[0]; + begegnungTischChanged($begegnung, $heim_team, $gast_team); + } + + wannGespieltAktualisieren(); + if ($veranstaltung->elo_wertung > 0) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + } + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); +} + +function adminRemoveBegegnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung WRITE, #__sportsmanager_team READ, #__sportsmanager_veranstaltung READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // Sicherstellen, dass Begegnung zu Veranstaltung gehört und Elo-Status abrufen + $query = "SELECT status, elo_wertung, zeitpunkt" + . "\n FROM #__sportsmanager_begegnung" + . "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n WHERE begegnung_id = $id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + return; + } + $row = $rows[0]; + + $elo_aktualisieren = $row->status != 0 && $row->elo_wertung != 0; + $aktualisieren_ab_datum = !empty($row->zeitpunkt) ? substr($row->zeitpunkt, 0, 10) : null; + + $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($elo_aktualisieren) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, $veranstaltungid); + teamstatistikAktualisieren($veranstaltungid); + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); +} + +function adminHeimtauschBegegnung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_unbestaetigtes_ergebnis READ, #__sportsmanager_begegnung_historie READ, #__sportsmanager_team READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $row = $rows[0]; + + // Sicherstellen, dass mindestens ein Team zur Veranstaltung gehört + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id," + . "\n gast_team_id = @temp_heim_team_id," + . "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte," + . "\n gast_punkte = @temp_heim_punkte," + . "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte," + . "\n gast_spielpunkte = @temp_heim_spielpunkte" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id," + . "\n gast_spieler_1_id = @temp_heim_spieler_1_id," + . "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id," + . "\n gast_spieler_2_id = @temp_heim_spieler_2_id," + . "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte," + . "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte," + . "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte," + . "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + termin_aktualisieren($id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); +} + +function adminEditBegegnungSpielplan($bestaetigen) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); + $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); + + if ($bestaetigen == 2) { + $pin = $db->escape(trim($jinput->get('pin', '', 'RAW'))); + if (empty($pin)) { + $encrypted_pin = $db->escape($jinput->get('epin', '', 'RAW')); + if (empty($encrypted_pin)) { + redirectSportsManagerURL(null, "Keine PIN eingegeben."); + jexit(); + } + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) die("Missing id!"); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); + $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); + } + + $query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id" + . "\n FROM #__sportsmanager_begegnung AS t1" + . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" + . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))" + . "\n ORDER BY t1.zeitpunkt" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) { + redirectSportsManagerURL(null, "Keine offene Begegnung zur PIN gefunden."); + jexit(); + } + + $id = $rows[0]->begegnung_id; + $veranstaltungid = $rows[0]->veranstaltung_id; + $aus_uebersicht = 0; + $aktion_team_id = $rows[0]->aktion_team_id; + $anderes_team_id = $rows[0]->anderes_team_id; + } + else { + $pin = ""; + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) die("Missing id!"); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $teamspiel_modus_id = $veranstaltung->modus_id; + + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $teamspiel_modus_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $teamspiel_modus = $rows[0]; + + $query = "SELECT t1.*, t2.unbestaetigtes_ergebnis_id, t2.kommentar, t2.zwischenergebnis,"; + $query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND (tt1.berechtigt_team_id = t1.heim_team_id OR tt1.berechtigt_team_id = t1.gast_team_id)) AS berechtigt_fuer_team_eintragen,"; + if ($bestaetigen != 2) { + $query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND ((tt1.berechtigt_team_id = t1.heim_team_id AND t4.vorschlagendes_team_id = t1.gast_team_id) OR (tt1.berechtigt_team_id = t1.gast_team_id AND t4.vorschlagendes_team_id = t1.heim_team_id))) AS berechtigt_fuer_team_akzeptieren"; + } else { + $query .= "\n IF(t4.vorschlagendes_team_id = $anderes_team_id, 1, 0) AS berechtigt_fuer_team_akzeptieren"; + } + $query .= "\n FROM #__sportsmanager_begegnung AS t1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t2 ON t1.begegnung_id = t2.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" + . "\n WHERE t1.begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $begegnung = $rows[0]; + + // Vorgeschlagene Termine ermitteln + $query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)" + . "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id" + . "\n LEFT JOIN #__users AS user ON user.id = user_id" + . "\n WHERE begegnung_id = $id" + . "\n ORDER BY begegnung_historie_id DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); + + if ($bestaetigen == 1) { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) + keinZugriff(); + + $query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + keinZugriff(true); + } + else if ($bestaetigen == 2) { + // + } + else { + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + } + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $heim_team = $rows[0]; + + if ($veranstaltungid != $heim_team->veranstaltung_id) + die("Wrong id!"); + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $gast_team = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_mitglied_von_team as t1" + . "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)" + . "\n WHERE team_id = $begegnung->heim_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "") + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $heim_spieler = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_mitglied_von_team as t1" + . "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)" + . "\n WHERE team_id = $begegnung->gast_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "") + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $gast_spieler = $db->loadObjectList(); + + $encrypted_pin = encrypt($pin, "a9cZ" . $veranstaltung->veranstaltung_id . "oDS7" . $id . "2eA"); + // Spielort ermitteln + $spielortQuery = "SELECT name FROM #__sportsmanager_spielort WHERE spielort_id = \"" + . (JFactory::getApplication()->input->getCmd('spielort_heim') == 1 + ? $heim_team->heimspielort_id + : $begegnung->spielort_id) . "\""; + $db->setQuery($spielortQuery); + $begegnung->spielort_name = $db->loadResult(); + + + if (isJson()) { + $response = JSON_sportsmanager::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht); + JSON_sportsmanager::JSON($response); + } else { + HTML_sportsmanager_admin::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht); + HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); + } + +} + + +function adminSaveBegegnungSpielplan() { + $app = &JFactory::getApplication(); + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + $begegnung_input = isJson() ? $jinput->json : $jinput; + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); + $id = $jinput->get('id', 0, 'INT'); + $bestaetigen = $begegnung_input->get('bestaetigen', 0, 'INT'); + $zwischenergebnis = isJson() && $jinput->getMethod() === 'PATCH' ? true : $begegnung_input->get('live', false, 'BOOL'); + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) { + abortWithError("Missing id!"); + } + $kommentar = $db->escape($jinput->get('kommentar', '', 'RAW')); + $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); + $anzahl_historie = $jinput->get('anzahl_historie', 0, 'INT'); + $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); + $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); + $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + if ($bestaetigen == 1) { + if ($aus_uebersicht) { + redirectSportsManagerURL('#id' . $id); + } + else { + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); + } + } + else if ($bestaetigen == 2) { + if ($aus_uebersicht) { + redirectSportsManagerURL(); + } + else { + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid); + } + } + else { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); + } + + return; + } + + $benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungid); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_team WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," + . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; + + $mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id; + $aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null; + + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $veranstaltung = $rows[0]; + + // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) { + abortWithError("Wrong id!"); + } + + // Spielmodus ermitteln + $modus_id = $veranstaltung->modus_id; + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $teamspiel_modus = $rows[0]; + + $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; + $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; + $modus = explode("|", $teamspiel_modus->modus); + $spieltypen = isset($modus[0]) ? explode(",", $modus[0]) : array(); + + if ($bestaetigen == 1) { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { + keinZugriff(); + } + + $query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) { + keinZugriff(); + } + $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; + } + else if ($bestaetigen == 2) { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { + keinZugriff(); + } + + $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); + $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); + if (empty($pin)) { + keinZugriff(); + } + + $query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) { + keinZugriff(); + } + + $vorschlagendes_team_id = $rows[0]->team_id; + } + else { + if (!$benutzer_ist_moderator) { + keinZugriff(); + } + } + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) { + abortWithError("Missing id!"); + } + + $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + if ($zwischenergebnis) { + $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, zwischenergebnis, kommentar, vorgeschlagen)" + . "\n VALUES ('$id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "'0'") . ", '1', '$kommentar', now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 9, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + } + else if ($bestaetigen != 0) { + $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)" + . "\n VALUES ('$id', '$vorschlagendes_team_id', '$kommentar', now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 6, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', NULL, now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + } + else { + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 8, NULL, '$user_id', NULL, NULL, NULL, now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + $spiele_nummern = array(); + foreach ($spiele as $spiel) { + $spiele_nummern[$spiel->teamspiel_nummer] = $spiel; + } + + $ergebnis_vereinen = $zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie; + + $total_heim_punkte = 0; + $total_gast_punkte = 0; + $total_heim_spielpunkte = 0; + $total_gast_spielpunkte = 0; + $spiel_nr = 1; + do { + $spieltyp = isset($spieltypen[$spiel_nr - 1]) ? $spieltypen[$spiel_nr - 1] : ''; + + $skip_spiel = $begegnung_input->get('spiel_' . $spiel_nr . '_typ', '', 'RAW') == '' && $jinput->getMethod() === 'PATCH'; + + if ($skip_spiel) { + if (isset($spiele_nummern[$spiel_nr])) { + $spiel_heim_punkte = $spiele_nummern[$spiel_nr]->$spiel_heim_punkte; + $spiel_gast_punkte = $spiele_nummern[$spiel_nr]->$spiel_gast_punkte; + } + else { + $spiel_heim_punkte = 0; + $spiel_gast_punkte = 0; + } + } + else { + $spiel_heim_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte_detailliert', array(), 'ARRAY'); + $spiel_gast_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte_detailliert', array(), 'ARRAY'); + if (empty($spiel_heim_punkte_detailliert)) { + $spiel_heim_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte', 0, 'INT'); + $spiel_gast_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte', 0, 'INT'); + $ergebnis_detailliert = $spiel_heim_punkte == 0 && $spiel_gast_punkte == 0 ? '' : ($spiel_heim_punkte . ":" . $spiel_gast_punkte); + } + else { + $ergebnis_detailliert = ""; + $spiel_heim_punkte = 0; + $spiel_gast_punkte = 0; + for ($i = 0; $i < count($spiel_heim_punkte_detailliert); $i++) { + if (($spiel_heim_punkte_detailliert[$i] == 0 || empty($spiel_heim_punkte_detailliert[$i])) && ($spiel_gast_punkte_detailliert[$i] == 0 || empty($spiel_gast_punkte_detailliert[$i]))) { + continue; + } + if (!empty($ergebnis_detailliert)) { + $ergebnis_detailliert .= " "; + } + $punkte_heim = empty($spiel_heim_punkte_detailliert[$i]) ? "0" : $spiel_heim_punkte_detailliert[$i]; + $punkte_gast = empty($spiel_gast_punkte_detailliert[$i]) ? "0" : $spiel_gast_punkte_detailliert[$i]; + if ($punkte_heim > $punkte_gast) { + $spiel_heim_punkte++; + } + else if ($punkte_gast > $punkte_heim) { + $spiel_gast_punkte++; + } + $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; + } + } + + if ($spieltyp[0] == "S") { + $spiel_heim_spieler_1_id = 0; + $spiel_gast_spieler_1_id = 0; + $spiel_heim_spieler_2_id = 0; + $spiel_gast_spieler_2_id = 0; + } + else { + $spiel_heim_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_1_id', 0, 'INT'); + $spiel_gast_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_1_id', 0, 'INT'); + if ($spieltyp[0] == "E") { + $spiel_heim_spieler_2_id = 0; + $spiel_gast_spieler_2_id = 0; + } + else { + $spiel_heim_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_2_id', 0, 'INT'); + $spiel_gast_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_2_id', 0, 'INT'); + } + $spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0 || $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0; + } + + if ($mannschaften_vertauscht) { + $t = $spiel_heim_punkte; + $spiel_heim_punkte = $spiel_gast_punkte; + $spiel_gast_punkte = $t; + $ergebnis_detailliert = runden_detailliert_invers($ergebnis_detailliert); + + $t = $spiel_heim_spieler_1_id; + $spiel_heim_spieler_1_id = $spiel_gast_spieler_1_id; + $spiel_gast_spieler_1_id = $t; + + $t = $spiel_heim_spieler_2_id; + $spiel_heim_spieler_2_id = $spiel_gast_spieler_2_id; + $spiel_gast_spieler_2_id = $t; + } + + if ($zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie && isset($spiele_nummern[$spiel_nr])) { + $spiel = $spiele_nummern[$spiel_nr]; + if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { + $spiel_heim_punkte = $spiel->teamspiel_heim_punkte; + $spiel_gast_punkte = $spiel->teamspiel_gast_punkte; + } + if ($spiel_heim_spieler_1_id == 0) + $spiel_heim_spieler_1_id = $spiel->heim_spieler_1_id; + if ($spiel_gast_spieler_1_id == 0) + $spiel_gast_spieler_1_id = $spiel->gast_spieler_1_id; + $spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0; + if ((!empty($spieltyp) && $spieltyp[0] == "D")) { + if ($spiel_heim_spieler_2_id == 0) + $spiel_heim_spieler_2_id = $spiel->heim_spieler_2_id; + if ($spiel_gast_spieler_2_id == 0) + $spiel_gast_spieler_2_id = $spiel->gast_spieler_2_id; + if (!$spieler_angegeben) + $spieler_angegeben = $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0; + } + } + } + + if ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)) { + $total_heim_punkte += $spiel_heim_punkte; + $total_gast_punkte += $spiel_gast_punkte; + + if ($spieltyp[0] != "D") { + if ($spielpunkte_wertung_einzel == 2) { + $spiel_heim_spielpunkte = $spiel_heim_punkte; + $spiel_gast_spielpunkte = $spiel_gast_punkte; + } + else { + if ($spiel_heim_punkte > $spiel_gast_punkte) { + $spiel_heim_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1); + $spiel_gast_spielpunkte = 0; + } + else if ($spiel_heim_punkte < $spiel_gast_punkte) { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1); + } + else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = 0; + } + else if ($spielpunkte_wertung != 3) { + $spiel_heim_spielpunkte = 1; + $spiel_gast_spielpunkte = 1; + } + else { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = 0; + } + } + } + else { + if ($spielpunkte_wertung_doppel == 2) { + $spiel_heim_spielpunkte = $spiel_heim_punkte; + $spiel_gast_spielpunkte = $spiel_gast_punkte; + } + else { + if ($spiel_heim_punkte > $spiel_gast_punkte) { + $spiel_heim_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1); + $spiel_gast_spielpunkte = 0; + } + else if ($spiel_heim_punkte < $spiel_gast_punkte) { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1); + } + else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = 0; + } + else if ($spielpunkte_wertung_doppel != 3) { + $spiel_heim_spielpunkte = 1; + $spiel_gast_spielpunkte = 1; + } + else { + $spiel_heim_spielpunkte = 0; + $spiel_gast_spielpunkte = 0; + } + } + } + + $total_heim_spielpunkte += $spiel_heim_spielpunkte; + $total_gast_spielpunkte += $spiel_gast_spielpunkte; + + if (!$skip_spiel) { + if (!isset($spiele_nummern[$spiel_nr])) { + $query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + } + else { + $teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id; + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET heim_spieler_1_id = '$spiel_heim_spieler_1_id'," + . "\n heim_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . "," + . "\n gast_spieler_1_id = '$spiel_gast_spieler_1_id'," + . "\n gast_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . "," + . "\n teamspiel_heim_punkte = '$spiel_heim_punkte'," + . "\n teamspiel_gast_punkte = '$spiel_gast_punkte'," + . "\n teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," + . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'," + . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") + . "\n WHERE teamspiel_id = $teamspiel_id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + } + + $spiel_nr++; + } + + } while (isset($spieltypen[$spiel_nr - 1]) && ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben))); + + $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id AND teamspiel_nummer >= $spiel_nr;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + if ($spiel_nr > 1) { + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET heim_punkte = '$total_heim_punkte'," + . "\n gast_punkte = '$total_gast_punkte'," + . "\n heim_spielpunkte = '$total_heim_spielpunkte'," + . "\n gast_spielpunkte = '$total_gast_spielpunkte'" + . "\n WHERE begegnung_id = $id"; + } + else { + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET heim_punkte = NULL," + . "\n gast_punkte = NULL," + . "\n heim_spielpunkte = NULL," + . "\n gast_spielpunkte = NULL" + . "\n WHERE begegnung_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + // Benachrichtigung schreiben + /* + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + $rows = $db->loadObjectList(); + if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) + $twitter_benutzername = ""; + else { + $twitter_benutzername = $rows[0]->wert; + $twitter_kennwort = $rows[1]->wert; + } + */ + +// if (!empty($twitter_benutzername) || $bestaetigen) { + if ($bestaetigen != 0) { + // Begegnung ermitteln + $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $begegnung_alt = $begegnung; + $begegnung = $rows[0]; + + // Heimteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $heim_team = $rows[0]; + + // Gastteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $rows[0]; + } + + if ($bestaetigen != 0 && !$zwischenergebnis) { + $mailfrom = $app->getCfg('mailfrom'); + $fromname = $app->getCfg('fromname'); + $subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis vorgeschlagen"; + $body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " ein Ergebnis eingetragen.\n\nBestaetigen des Ergebnisses ueber " . SportsManagerURL('&task=admin_begegnung_spielplan_edit_bestaetigen&veranstaltungid=' . $veranstaltungid . '&id=' . $id, -1) . "."; + + $query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + foreach ($rows as $row) { + JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } + } + + /* + if (!empty($twitter_benutzername) + && ($begegnung_alt->zwischenergebnis != $begegnung->zwischenergebnis + || $begegnung_alt->heim_punkte != $begegnung->heim_punkte + || $begegnung_alt->gast_punkte != $begegnung->gast_punkte + || $begegnung_alt->heim_spielpunkte != $begegnung->heim_spielpunkte + || $begegnung_alt->gast_spielpunkte != $begegnung->gast_spielpunkte)) { + try { + $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); + $status = $twitter->send(($zwischenergebnis ? "Live: " : "") . $veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $total_heim_spielpunkte . ":" . $total_gast_spielpunkte . " (" . $total_heim_punkte . ":" . $total_gast_punkte . ")"); + } + catch(TwitterException $e) { + } + + } + */ + + begegnungChanged($begegnung, $begegnung_alt, $modus, $heim_team, $gast_team, $spiele); + + if ($bestaetigen == 0) { + if ($veranstaltung->status != 0) { + wannGespieltAktualisieren(); + if ($veranstaltung->elo_wertung != 0) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + } + spielerstatistikAktualisieren(0, $veranstaltungid); + teamstatistikAktualisieren($veranstaltungid); + } + + if (isJson()) { + begegnungSpielplan(); + } else { + if ($erneut_oeffnen) { + redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungid . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungid . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : '')); + } + else if ($bestaetigen == 1) { + if ($aus_uebersicht) + redirectSportsManagerURL('#id' . $id); + else + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); + } + else if ($bestaetigen == 2) { + if ($aus_uebersicht) + redirectSportsManagerURL(); + else + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid); + } + else { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); + } + } +} + +function adminBegegnungSpielplanHeimtausch() { + $app = &JFactory::getApplication(); + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; + $id = $jinput->get('id', 0, 'INT'); + $bestaetigen = $jinput->get('bestaetigen', 0, 'INT'); + $zwischenergebnis = $jinput->get('zwischenergebnis', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + $kommentar = $db->escape($jinput->get('kommentar', '', 'RAW')); + $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); + $anzahl_historie = $jinput->get('anzahl_historie', 0, 'INT'); + $erneut_oeffnen = $jinput->get('erneut_oeffnen', 0, 'INT'); + $heim_team_id = $jinput->get('heim_team_id', 0, 'INT'); + $gast_team_id = $jinput->get('gast_team_id', 0, 'INT'); + + $benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungid); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_veranstaltung WRITE, #__sportsmanager_teamspiel_modus WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_berechtigt_fuer_team WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_team WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," + . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); + $begegnung = $rows[0]; + + $mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id; + + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + // Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + + // Spielmodus ermitteln + $modus_id = $veranstaltung->modus_id; + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $modus = $rows[0]; + + if ($bestaetigen == 1) { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) + keinZugriff(); + + $query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + keinZugriff(); + $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; + } + else if ($bestaetigen == 2) { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) + keinZugriff(); + + $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); + $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); + if (empty($pin)) + keinZugriff(); + + $query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) + keinZugriff(); + + $vorschlagendes_team_id = $rows[0]->team_id; + } + else { + if (!$benutzer_ist_moderator) + keinZugriff(); + } + + if (!$benutzer_ist_moderator && !$modus->heimtausch) + keinZugriff(); + + if (!$mannschaften_vertauscht) { + /* + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 9, NULL, '$user_id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { die($db->stderr(true)); } + */ + + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id," + . "\n gast_team_id = @temp_heim_team_id," + . "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte," + . "\n gast_punkte = @temp_heim_punkte," + . "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte," + . "\n gast_spielpunkte = @temp_heim_spielpunkte" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id," + . "\n gast_spieler_1_id = @temp_heim_spieler_1_id," + . "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id," + . "\n gast_spieler_2_id = @temp_heim_spieler_2_id," + . "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte," + . "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte," + . "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte," + . "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungid . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungid . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : '')); +} + +function adminBegegnungSpielplanBestaetigen() { + $app = &JFactory::getApplication(); + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); + $id = $jinput->get('id', 0, 'INT'); + $bestaetigen = $jinput->get('bestaetigen', 0, 'INT'); + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); + + // Begegnung ermitteln + $query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis," + . " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; + + $aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null; + + if ($bestaetigen == 2) { + $encrypted_pin = $db->escape($jinput->get('pin', '', 'RAW')); + $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungid . "oDS7" . $id . "2eA"); + if (empty($pin)) { + keinZugriff(); + } + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { + keinZugriff(); + } + + $query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id," + . "\n IF(t4.vorschlagendes_team_id = IF(t2.pin = '$pin', gast_team_id, heim_team_id), 1, 0) AS berechtigt_fuer_team_akzeptieren" + . "\n FROM #__sportsmanager_begegnung AS t1" + . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" + . "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))" + . "\n ORDER BY t1.zeitpunkt" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) == 0) { + keinZugriff(); + } + + if (!$rows[0]->berechtigt_fuer_team_akzeptieren) { + keinZugriff(); + } + + $aktion_team_id = $rows[0]->aktion_team_id; + } + else { + if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) { + keinZugriff(); + } + + $query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung AS t2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis t3 ON t2.begegnung_id = t3.begegnung_id WHERE NOT t3.zwischenergebnis AND t2.begegnung_id = $id AND t1.berechtigt_user_id = $user_id AND ((t1.berechtigt_team_id = t2.heim_team_id AND t3.vorschlagendes_team_id = t2.gast_team_id) OR (t1.berechtigt_team_id = t2.gast_team_id AND t3.vorschlagendes_team_id = t2.heim_team_id))"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) { + keinZugriff(); + } + + $aktion_team_id = $rows[0]->berechtigt_team_id; + } + + $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + /* + // Benachrichtigung schreiben + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + $rows = $db->loadObjectList(); + if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) + $twitter_benutzername = ""; + else { + $twitter_benutzername = $rows[0]->wert; + $twitter_kennwort = $rows[1]->wert; + } + */ + + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $veranstaltung = $rows[0]; + + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 7, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$aktion_team_id', NULL, NULL, now());"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + + // Heimteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $heim_team = $rows[0]; + + // Gastteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $rows[0]; + + if ($veranstaltung->status != 0) { + wannGespieltAktualisieren(); + if ($veranstaltung->elo_wertung != 0) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + } + spielerstatistikAktualisieren(0, $veranstaltungid); + teamstatistikAktualisieren($veranstaltungid); + + $mailfrom = $app->getCfg('mailfrom'); + $fromname = $app->getCfg('fromname'); + $subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis akzeptiert"; + $body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($aktion_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " das Ergebnis akzeptiert."; + + $query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + foreach ($rows as $row) { + JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } + + /* + if (!empty($twitter_benutzername)) { + try { + $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); + $status = $twitter->send($veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte . " (" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")"); + } + catch(TwitterException $e) { + } + } + */ + if (isJson()) { +// adminEditBegegnungSpielplan(0); + begegnungSpielplan(false); + } else { + if ($aus_uebersicht) { + redirectSportsManagerURL('#id' . $id); + } + else { + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); + } + } +} + +/* Generiert Gruppenspiele zu einer beliebigen geraden Anzahl Teams + * bei denen jedes Team genau einmal gegen jedes andere Team spielt, + * die Spiele an Anzahl Teams - 1 Spieltagen ausgetragen werden und + * jedes Team an jedem Tag genau ein Spiel austrägt + * + * Rückgabewert: Dreidimensionales Array mit Spieltag als erstem Index (1, ..., Anzahl Teams - 1), + * Spiel-Nr. als zweitem Index (1, ..., Anzahl Teams / 2) und als drittem Index 0 für das erste + * und 1 für das zweite Team, wobei jeweils die Teamnummer enthalten ist (1, ..., Anzahl Teams) + * + * (C) Sven Nickel 2006 + */ +function Gruppenspiele($anzahlteams) { + if ($anzahlteams % 2 == 1) { + die ("Gruppenspiele(): Eine ungerade Anzahl an Teams ist nicht zulässig!"); + exit; + } + + $b = 1; + for ($i = 1; $i < $anzahlteams; $i++) { + for ($j = $i + 1; $j <= $anzahlteams; $j++) { + $begegnungen[$b++] = array($i, $j); + } + } + + $rueckschritt = false; + for ($spieltag = 1; $spieltag < $anzahlteams;) { + for ($spielnr = 1; $spielnr <= $anzahlteams / 2;) { + // Nächste noch nicht eingetragene Begegnung ermitteln, in der + // keine Mannschaft am aktuellen Spieltag bereits spielt + for ($b = 1; $b <= ($anzahlteams - 1) * $anzahlteams / 2; $b++) { + if ($rueckschritt) { + if ($begegnungen[$b][0] != $spiele[$spieltag][$spielnr][0] || + $begegnungen[$b][1] != $spiele[$spieltag][$spielnr][1]) + continue; + $rueckschritt = false; + continue; + } + $nicht_zulaessig = false; + for ($i = 1; $i <= $spieltag && !$nicht_zulaessig; $i++) { + for ($j = 1; $j <= ($i != $spieltag ? $anzahlteams / 2 : $spielnr - 1) && !$nicht_zulaessig; $j++) { + if (($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $begegnungen[$b][1]) || + ($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $begegnungen[$b][0])) { + $nicht_zulaessig = true; + break; + } + if ($spielnr > 1 && $spieltag < $anzahlteams - 1) { + if (($spiele[$i][$j][0] == $spiele[$spieltag][$spielnr - 1][1] && $spiele[$i][$j][1] == $begegnungen[$b][0]) || + ($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $spiele[$spieltag][$spielnr - 1][1])) { + $nicht_zulaessig = true; + break; + } + if ($spielnr == $anzahlteams / 2) { + if (($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $spiele[$spieltag][1][0]) || + ($spiele[$i][$j][0] == $spiele[$spieltag][1][0] && $spiele[$i][$j][1] == $begegnungen[$b][1])) { + $nicht_zulaessig = true; + break; + } + } + } + if ($i == $spieltag) + if ($begegnungen[$b][0] == $spiele[$i][$j][0] || + $begegnungen[$b][0] == $spiele[$i][$j][1] || + $begegnungen[$b][1] == $spiele[$i][$j][0] || + $begegnungen[$b][1] == $spiele[$i][$j][1]) { + $nicht_zulaessig = true; + break; + } + } + } + if (!$nicht_zulaessig) + break; + } + if ($b <= ($anzahlteams - 1) * $anzahlteams / 2) { // Begegnung gefunden + $spiele[$spieltag][$spielnr][0] = $begegnungen[$b][0]; + $spiele[$spieltag][$spielnr][1] = $begegnungen[$b][1]; + if ($spieltag < ($anzahlteams - 1)) { + $spiele[$spieltag + 1][$spielnr == 1 ? $anzahlteams / 2 : $spielnr - 1][1] = $begegnungen[$b][0]; + $spiele[$spieltag + 1][$spielnr][0] = $begegnungen[$b][1]; + } + $spielnr++; + } + else { // Keine weitere Begegnung gefunden + // Rückschritt durchführen + if ($spielnr > 1) { + $spielnr--; + } + else { + $spielnr = $anzahlteams / 2; + $spieltag -= 2; + } + $rueckschritt = true; + } + } + $spieltag += 2; + } + + return $spiele; +} + +function adminBegegnungenGenerierenForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminBegegnungenGenerieren($veranstaltung, $rows); +} + +function adminBegegnungenGenerieren() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + + return; + } + + $anzahlteams = $jinput->get('anzahlteams', 0, 'INT'); + if ($anzahlteams == 0) die("Wrong number of teams!"); + + $query = "SELECT t1.*" + . "\n FROM #__sportsmanager_team AS t1" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY t1.teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + for ($i = 1; $i <= $anzahlteams; $i++) { + $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); + if ($teamids[$i] == 0) die("Wrong id!"); + } + + $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; + $spieltag_basis = array(); + for ($i = 1; $i <= ($spieltage * 2); $i++) { + $jahr = $jinput->get('datum_jahr_' . $i, 0, 'INT'); + $kw = $jinput->get('datum_kw_' . $i, 0, 'INT'); + if ($jahr == 0 || $kw == 0) die("Wrong date!"); + $spieltag_basis[$i] = array(); + $spieltag_basis[$i]["jahr"] = $jahr; + $spieltag_basis[$i]["kw"] = $kw; + } + + $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); + + for ($spieltag = 1; $spieltag <= $spieltage; $spieltag++) { + for ($spielnr = 1; $spielnr <= ($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams) / 2; $spielnr++) { + if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams) + continue; + + $heim_team_id = $teamids[$spiele[$spieltag][$spielnr][0]]; + $gast_team_id = $teamids[$spiele[$spieltag][$spielnr][1]]; + + $heim_team = null; + foreach ($teams as $t) { + if ($t->team_id == $heim_team_id) { + $heim_team = $t; + break; + } + } + if ($heim_team == null) die("Team id not found!"); + + $gast_team = null; + foreach ($teams as $t) { + if ($t->team_id == $gast_team_id) { + $gast_team = $t; + break; + } + } + if ($gast_team == null) die("Team id not found!"); + + if ($heim_team->heimspiel_wochentag == 0) + $zeitpunkt = null; + else { + $ts = getdate(mondaykw($spieltag_basis[$spieltag]["kw"], $spieltag_basis[$spieltag]["jahr"], $heim_team->heimspiel_wochentag - 1)); + $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); + } + + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$spieltag', '$heim_team_id', '$gast_team_id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $weiterer_spieltag = $spieltag + $spieltage; + if ($gast_team->heimspiel_wochentag == 0) + $zeitpunkt = null; + else { + $ts = getdate(mondaykw($spieltag_basis[$weiterer_spieltag]["kw"], $spieltag_basis[$weiterer_spieltag]["jahr"], $gast_team->heimspiel_wochentag - 1)); + $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); + } + + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$weiterer_spieltag', '$gast_team_id', '$heim_team_id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); +} + +function adminBegegnungenRundeErzeugenForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT #__sportsmanager_begegnung.*" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY zeitpunkt DESC LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $row = count($rows) < 1 ? null : $row = $rows[0]; // Falls keine Begegnung als Vorlage verfügbar + + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte); +} + +function adminBegegnungenRundeErzeugen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + + return; + } + + $anzahlteams = $jinput->get('anzahlteams', 0, 'INT'); + if ($anzahlteams == 0) die("Wrong number of teams!"); + if ($jinput->get('datum_tag', 0, 'INT') >= 0) { + $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); + $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); + $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); + $datum_kw = 0; + } + else { + $datum_jahr = $jinput->get('datum_jahr', 0, 'INT'); + $datum_kw = abs($jinput->get('datum_tag', 0, 'INT')); + } + $rundentyp = $jinput->get('rundentyp', -1, 'INT'); + $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); + $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); + + if ($rundentyp >= 10000) + $runde = $rundentyp; + else if ($rundentyp == -2) + $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); + else if ($rundentyp == 0) + $runde = 0; + + $query = "SELECT t1.*" + . "\n FROM #__sportsmanager_team AS t1" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY t1.teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + for ($i = 1; $i <= $anzahlteams; $i++) + $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); + + $spielort_ids = array(); + for ($i = 1; $i <= $anzahlteams; $i += 2) + $spielort_ids[$i] = $jinput->get('spielort_id_' . $i, 0, 'INT'); + + for ($teamnr = 1; $teamnr < $anzahlteams; $teamnr += 2) { + $heim_team_id = $teamids[$teamnr]; + $gast_team_id = $teamids[$teamnr + 1]; + + if ($heim_team_id == 0 || $gast_team_id == 0) + continue; + + $heim_team = null; + foreach ($teams as $t) { + if ($t->team_id == $heim_team_id) { + $heim_team = $t; + break; + } + } + if ($heim_team == null) die("Team id not found!"); + + $gast_team = null; + foreach ($teams as $t) { + if ($t->team_id == $gast_team_id) { + $gast_team = $t; + break; + } + } + if ($gast_team == null) die("Team id not found!"); + + if ($datum_kw != null) { + if ($heim_team->heimspiel_wochentag == 0) + $zeitpunkt = null; + else { + $ts = getdate(mondaykw($datum_kw, $datum_jahr, $heim_team->heimspiel_wochentag - 1)); + $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); + } + } + + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_ids[$teamnr] != 0 ? "'$spielort_ids[$teamnr]'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); +} + +function adminBegegnungenAlleEntfernen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + $query = "LOCK TABLES #__sportsmanager_begegnung WRITE, #__sportsmanager_begegnung_historie WRITE, #__sportsmanager_unbestaetigtes_ergebnis WRITE, #__sportsmanager_teamspiel WRITE, #__sportsmanager_veranstaltung READ, #__sportsmanager_team READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT MIN(DATE(zeitpunkt))" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" + . "\n WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" + . "\n WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $id = $row->begegnung_id; + + $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); +} + +function adminEditTurnier() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + $vorlage = $jinput->get('vorlage', 0, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (empty($id)) { + $berechtigt_fuer_turnier = array(); + } + else { + $query = "SELECT #__sportsmanager_berechtigt_fuer_turnier.* FROM #__sportsmanager_berechtigt_fuer_turnier, #__users WHERE berechtigt_user_id = id AND berechtigt_turnier_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_turnier = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 3 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + HTML_sportsmanager_admin::adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien); +} + +function adminSaveTurnier() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); + $turnierbezeichnung = $db->escape(trim($jinput->get('turnierbezeichnung', '', 'RAW'))); + $saison_id = $jinput->get('saison_id', 0, 'INT'); + $turnierort = $db->escape(trim($jinput->get('turnierort', '', 'RAW'))); + $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); + $mehrtaegig = $jinput->get('mehrtaegig', 0, 'INT'); + if (!$mehrtaegig) + $letzter_tag = $erster_tag; + else + $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + $vorlage = $jinput->get('vorlage', 0, 'INT'); + $berechtigt_fuer_turnier_user_ids = array(); + for ($i = 1; $i <= 6; $i++) { + $berechtigt_user_id = $jinput->get('berechtigt_fuer_turnier_user_' . $i . '_id', 0, 'INT'); + if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_turnier_user_ids)) + array_push($berechtigt_fuer_turnier_user_ids, $berechtigt_user_id); + } + + $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_berechtigt_fuer_turnier WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($vorlage) { + $vorlage_id = $id; + $id = 0; + $query = "SELECT erster_tag FROM #__sportsmanager_turnier WHERE turnier_id = $vorlage_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $vorlage_erster_tag = $rows[0]->erster_tag; + } + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_turnier (veranstalter_id, turnierbezeichnung, saison_id, turnierort, erster_tag" . ($letzter_tag != null ? ", letzter_tag" : "") . ", kategorie) VALUES ('$veranstalterid', '$turnierbezeichnung', '$saison_id', '$turnierort', '$erster_tag'" . ($letzter_tag != null ? ", '$letzter_tag'" : "") . ", '$kategorie');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_turnier" + . "\n SET veranstalter_id = '$veranstalterid'," + . "\n turnierbezeichnung = '$turnierbezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n turnierort = '$turnierort'," + . "\n erster_tag = '$erster_tag'," + . "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'" : "NULL") . "," + . "\n kategorie = '$kategorie'" + . "\n WHERE turnier_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; + if (!empty($berechtigt_fuer_turnier_user_ids)) + $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_turnier_user_ids, ", ") . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_turnier_user_ids); + if ($index !== false) { + unset($berechtigt_fuer_turnier_user_ids[$index]); + } + } + + foreach ($berechtigt_fuer_turnier_user_ids as $berechtigt_user_id) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_turnier (berechtigt_user_id, berechtigt_turnier_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if ($vorlage) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n WHERE turnier_id = $vorlage_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $disziplinen = $db->loadObjectList(); + + foreach ($disziplinen as $disziplin) { + $ts = getdate(strtotime($erster_tag) - strtotime($vorlage_erster_tag) + strtotime($disziplin->beginn)); + $neuer_beginn = $disziplin->beginn == null ? null : sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], $ts["hours"], $ts["minutes"]); + + $query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)" + . "\n VALUES ('$id', '" . $db->escape($disziplin->disziplin) . "', '" . $db->escape($disziplin->kuerzel) . "', " . ($neuer_beginn == null ? "NULL" : "'$neuer_beginn'") . ", '$disziplin->typ', '$disziplin->elo_wertung', " . ($disziplin->voranmeldung == null ? "NULL" : ("'" . $disziplin->voranmeldung . "'")) . ", " . ($disziplin->voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $disziplin->voranmeldungen_rangliste_id . "'")) . ", '$disziplin->voranmeldungen_reihenfolge', '$disziplin->reihenfolge', '$disziplin->status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $disziplin_id = $db->insertid(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + foreach ($ranglisten as $rangliste) { + $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste->rangliste_id', '$disziplin_id', " . ($rangliste->system_id != null ? "'$rangliste->system_id'" : "NULL") . ", '" . $db->escape($rangliste->wertung) . "', '" . $db->escape($rangliste->doppel_teilwertung) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminRemoveTurnier() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnier WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_berechtigt_fuer_turnier WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id AND elo_wertung > 0), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $elo_aktualisieren = $db->loadResult(); + + $query = "SELECT MIN(DATE(beginn))" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n WHERE turnier_id = $id AND elo_wertung > 0"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); + + $query = "DELETE #__sportsmanager_turnierspiel FROM #__sportsmanager_turnierspiel, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnierspiel.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung FROM #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_rangliste_turnierdisziplin FROM #__sportsmanager_rangliste_turnierdisziplin, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_rangliste_turnierdisziplin.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turnier_rundenstufe FROM #__sportsmanager_turnier_rundenstufe, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnier_rundenstufe.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnier WHERE turnier_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminTurnierdisziplinen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $turnierid = $jinput->get('turnierid', 0, 'INT'); + if ($turnierid == 0) die("Missing id!"); + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierid)) + keinZugriff(true); + + $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; + + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; + $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 t1.*," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 20) AS voranmeldungen," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 0) AS meldungen," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_turnierspiel AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id) AS spiele" + . "\n FROM #__sportsmanager_turnierdisziplin AS t1" + . "\n WHERE turnier_id = $turnierid" + . "\n ORDER BY reihenfolge, disziplin, beginn"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTurnierdisziplinen($turnier, $rows, $beschraenkter_zugriff_turniere); +} + +function adminEditTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $turnierid = $jinput->get('turnierid', 0, 'INT'); + if ($turnierid == 0) die("Missing id!"); + + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnier = $rows[0]; + + // Ranglisten ermitteln + if ($id == 0) { + $query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + } + else { + $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, doppel_teilwertung, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id) AS ranglisten USING (rangliste_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + if ($id == 0) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste_system" + . "\n WHERE status != 0" + . "\n ORDER BY systembezeichnung"; + } + else { + $query = "SELECT DISTINCT rangliste_system_id, #__sportsmanager_rangliste_system.*" + . "\n FROM #__sportsmanager_rangliste_system" + . "\n LEFT JOIN #__sportsmanager_rangliste_turnierdisziplin ON turnierdisziplin_id = $id AND system_id = rangliste_system_id" + . "\n WHERE status != 0 OR NOT ISNULL(turnierdisziplin_id)" + . "\n ORDER BY systembezeichnung"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme); +} + +function adminSaveTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $turnierid = $jinput->get('turnierid', 0, 'INT'); + if ($turnierid == 0) die("Missing id!"); + $disziplin = $db->escape(trim($jinput->get('disziplin', '', 'RAW'))); + $kuerzel = $db->escape(trim($jinput->get('kuerzel', '', 'RAW'))); + $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); + $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); + $beginn = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); + $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); + $aktualisieren_ab_datum = $datum; + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); + + return; + } + + $typ = $jinput->get('typ', 0, 'INT'); + $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); + $voranmeldung_datum = normalisiertesDatum($jinput->get('voranmeldung_datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('voranmeldung_datum_jahr', 0, 'INT'), $jinput->get('voranmeldung_datum_monat', 0, 'INT'), $jinput->get('voranmeldung_datum_tag', 0, 'INT'))); + $voranmeldung_uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('voranmeldung_uhrzeit_stunden', 0, 'INT'), $jinput->get('voranmeldung_uhrzeit_minuten', 0, 'INT'))); + $voranmeldung = $voranmeldung_datum == null || $voranmeldung_uhrzeit == null ? null : ($voranmeldung_datum . " " . $voranmeldung_uhrzeit); + $status = $jinput->get('status', 0, 'INT'); + $voranmeldungen_rangliste_id = $jinput->get('voranmeldungen_rangliste_id', 0, 'INT'); + $voranmeldungen_reihenfolge = $jinput->get('voranmeldungen_reihenfolge', 0, 'INT'); + + $i = 0; + $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); + $rangliste_system_id = $jinput->get('rangliste_system_id_' . $i, 0, 'INT'); + $rangliste_wertung = $jinput->get('rangliste_wertung_' . $i, 0, 'RAW'); + $rangliste_doppel_teilwertung = $jinput->get('doppel_teilwertung_' . $i, 0, 'RAW'); + $ranglisten_beruecksichtigt = array(); + $ranglisten_beruecksichtigt_system_id = array(); + $ranglisten_beruecksichtigt_wertung = array(); + $ranglisten_beruecksichtigt_doppel_teilwertung = array(); + while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) { + array_push($ranglisten_beruecksichtigt, $rangliste_id); + array_push($ranglisten_beruecksichtigt_system_id, $rangliste_system_id); + array_push($ranglisten_beruecksichtigt_wertung, $rangliste_wertung); + array_push($ranglisten_beruecksichtigt_doppel_teilwertung, $rangliste_doppel_teilwertung); + $i++; + $rangliste_id = $jinput->get('rangliste_id_' . $i, 0, 'INT'); + $rangliste_system_id = $jinput->get('rangliste_system_id_' . $i, 0, 'INT'); + $rangliste_wertung = $jinput->get('rangliste_wertung_' . $i, 0, 'RAW'); + $rangliste_doppel_teilwertung = $jinput->get('doppel_teilwertung_' . $i, 0, 'RAW'); + } + + $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_rangliste READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($id == 0) { + $aktualisieren = false; + $query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)" + . "\n VALUES ('$turnierid', '$disziplin', '$kuerzel', '$beginn', '$typ', '$elo_wertung', " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . ", " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . ", '$voranmeldungen_reihenfolge', '$reihenfolge', '$status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $aktualisieren = true; + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + $elo_aktualisieren = $row->elo_wertung || $elo_wertung; + + if ($row->typ != $typ) { + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_turnierdisziplin" + . "\n SET turnier_id = '$turnierid'," + . "\n disziplin = '$disziplin'," + . "\n kuerzel = '$kuerzel'," + . "\n beginn = " . ($beginn == null ? "NULL" : ("'" . $beginn . "'")) . "," + . "\n typ = '$typ'," + . "\n elo_wertung = '$elo_wertung'," + . "\n voranmeldung = " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . "," + . "\n voranmeldungen_rangliste_id = " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . "," + . "\n voranmeldungen_reihenfolge = '$voranmeldungen_reihenfolge'," + . "\n reihenfolge = '$reihenfolge'," + . "\n status = '$status'" + . "\n WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + // Berücksichtige Ranglisten prüfen und ggf. aktualisieren + $query = "SELECT rangliste_id, system_id, wertung, doppel_teilwertung" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); + + foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { + $ist_beruecksichtigt = false; + foreach ($ranglisten_beruecksichtigt as $rangliste_id) { + if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { + $ist_beruecksichtigt = true; + break; + } + } + if (!$ist_beruecksichtigt) { + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { + $ist_beruecksichtigt = false; + foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) { + if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) { + $ist_beruecksichtigt = true; + $bestehende_rangliste_system_id = $bestehende_rangliste_beruecksichtigt->system_id; + $bestehende_rangliste_wertung = $bestehende_rangliste_beruecksichtigt->wertung; + $bestehende_rangliste_doppel_teilwertung = $bestehende_rangliste_beruecksichtigt->doppel_teilwertung; + break; + } + } + $system_id = $ranglisten_beruecksichtigt_system_id[$index]; + $wertung = $ranglisten_beruecksichtigt_wertung[$index]; + $doppel_teilwertung = $ranglisten_beruecksichtigt_doppel_teilwertung[$index]; + if (!$ist_beruecksichtigt) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) { + $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste_id', '$id', " . ($system_id != 0 ? "'$system_id'" : "NULL") . ", '" . $db->escape($wertung) . "', '" . $db->escape($doppel_teilwertung) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else if ($system_id != $bestehende_rangliste_system_id || $wertung != $bestehende_rangliste_wertung || $doppel_teilwertung != $bestehende_rangliste_doppel_teilwertung) { + $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . "," + . "\n wertung = '" . $db->escape($wertung) . "'," + . "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'" + . "\n WHERE rangliste_id = $rangliste_id AND turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($aktualisieren) { + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); + } + + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); +} + +function adminRemoveTurnierdisziplin() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + if ($id == 0) die("Missing id!"); + $turnierid = $jinput->get('turnierid', 0, 'INT'); + if ($turnierid == 0) die("Missing id!"); + + $query = "LOCK TABLES #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_rangliste_turnierdisziplin WRITE, #__sportsmanager_turnier_rundenstufe WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + $elo_aktualisieren = $row->elo_wertung; + $aktualisieren_ab_datum = !empty($row->beginn) ? substr($row->beginn, 0, 10) : null; + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); +} + +function adminExportTurniervoranmeldungenForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + if ($turnierdisziplinid == 0) die ("Wrong id!"); + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + /* + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE status > 0 AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE()" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + $ranglisten_aktuell = $db->loadObjectList(); + */ + + $query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, bezeichnung, saisonbezeichnung" + . "\n FROM #__sportsmanager_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid) AS ranglisten USING (rangliste_id)" + . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten); +} + +function adminExportTurniervoranmeldungen() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $ranglisteid = $jinput->get('ranglisteid', 0, 'INT'); + $sortierung = $jinput->get('sortierung', 0, 'INT'); + $format = $jinput->get('format', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + + return; + } + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, beginn, typ FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); + + if ($turnierdisziplin->typ == 0) { + $query = "SELECT *" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein"; + if ($format != 0) + $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht"; + if ($ranglisteid != 0) + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte"; + $query .= "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '20'" + . "\n ORDER BY " . ($ranglisteid != 0 ? "Punkte DESC, " : "") . "Nachname, Vorname"; + } + else { + $query = "SELECT (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein1"; + if ($format != 0) + $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht1"; + if ($ranglisteid != 0) + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte1"; + $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Nachname2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Vorname2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Spielernr2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Verein2"; + if ($format != 0) + $query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Geschlecht2"; + if ($ranglisteid != 0) { + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Punkte2"; + if ($sortierung == 0) { + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)" + . "+ COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Summe"; + } + else { + $query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)" + . ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0)) AS Maximum"; + } + } + $query .= "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '20'" + . "\n ORDER BY " . ($ranglisteid != 0 ? ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ") : "") . "Nachname1, Vorname1"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $voranmeldungen = $db->loadObjectList(); + + /* + if ($turnierdisziplin->typ == 0) { + $query = "SELECT t1.nachname as Nachname, t1.vorname as Vorname, t1.spielernr as Spielernr" + . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein"; + if ($format != 0) + $query .= ", t1.geschlecht as Geschlecht"; + if ($ranglisteid != 0) + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte"; + } + else { + $query = "SELECT t1.nachname as Nachname1, t1.vorname as Vorname1, t1.spielernr as Spielernr1" + . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein1"; + if ($format != 0) + $query .= ", t1.geschlecht as Geschlecht1"; + if ($ranglisteid != 0) + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte1"; + $query .= ", t2.nachname as Nachname2, t2.vorname as Vorname2, t2.spielernr as Spielernr2" + . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_2_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1), 'Keiner') AS Verein2"; + if ($format != 0) + $query .= ", t2.geschlecht as Geschlecht2"; + if ($ranglisteid != 0) + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Punkte2"; + if ($ranglisteid != 0) { + $query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0), COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0)) AS Maximum"; + $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) + COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Summe"; + } + } + $query .= "\n FROM #__sportsmanager_turniervoranmeldung" + . "\n LEFT JOIN #__sportsmanager_spieler AS t1 ON t1.spieler_id = spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS t2 ON t2.spieler_id = spieler_2_id" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid" + . "\n ORDER BY " . ($ranglisteid != 0 ? ($turnierdisziplin->typ == 0 ? "Punkte DESC, " : ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ")) : "") . "t1.nachname, t1.vorname"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + $voranmeldungen = $db->loadObjectList(); +*/ + $dateiname = 'Voranmeldungen ' . $turnierdisziplin->turnierbezeichnung . ' - ' . $turnierdisziplin->disziplin . '.csv'; + $dateiname = bereinigterDateiname($dateiname); + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + Header("Content-Type: text/x-csv"); + Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); + Header("Pragma: no-cache"); + + if ($format == 0) { + $trennzeichen = "\t"; + + $header = ""; + foreach ($voranmeldungen[0] as $field => $value) + $header .= $field . $trennzeichen; + + $data = ""; + foreach ($voranmeldungen as $row) { + $line = ''; + foreach ($row as $value) { + if ((!isset($value)) OR ($value == "")) { + $value = $trennzeichen; + } + else { + $value = str_replace('"', '""', $value); + $value = str_replace("\t", ' ', $value); + $value = str_replace("\r", '', $value); + $value = str_replace("\n", ' ', $value); + $value = '"' . $value . '"' . $trennzeichen; + } + $line .= $value; + } + $data .= trim($line) . "\n"; + } + $data = str_replace("\r", "", $data); + + echo "sep=" . $trennzeichen . "\n" . $header . "\n" . $data; + } + else { + $gesetzt = ($format - 1) * 4; + if ($turnierdisziplin->typ == 0) { + echo "1\r\n"; + echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#PSEUDONYM#SETZPOSITION\r\n"; + } + else { + echo "2\r\n"; + echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#NAME2#VORNAME2#GESCHLECHT2#VEREIN2#PSEUDONYM#SETZPOSITION\r\n"; + } + + $platz = 1; + $punkte = 0; + $tatsaechlicher_platz = 0; + foreach ($voranmeldungen as $row) { + $row_punkte = $ranglisteid != 0 ? ($turnierdisziplin->typ == 0 ? $row->Punkte : ($sortierung == 0 ? $row->Summe : $row->Maximum)) : 0; + if ($row_punkte != $punkte) { + $tatsaechlicher_platz = $platz; + $punkte = $row_punkte; + } + if ($turnierdisziplin->typ == 0) { + echo utf8_decode(str_replace("#", ' ', $row->Nachname) + . "#" . str_replace("#", ' ', $row->Vorname) + . "#" . ($row->Geschlecht == "M" ? "M" : "F") + . "#" . str_replace("#", ' ', $row->Verein) + . "#" + . "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n"); + } + else { + echo utf8_decode(str_replace("#", ' ', $row->Nachname1) + . "#" . str_replace("#", ' ', $row->Vorname1) + . "#" . ($row->Geschlecht1 == "M" ? "M" : "F") + . "#" . str_replace("#", ' ', $row->Verein1) + . "#" . str_replace("#", ' ', $row->Nachname2) + . "#" . str_replace("#", ' ', $row->Vorname2) + . "#" . ($row->Geschlecht2 == "M" ? "M" : "F") + . "#" . str_replace("#", ' ', $row->Verein2) + . "#" + . "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n"); + } + $platz++; + } + } + + die(); +} + +function adminTurnierdisziplinMeldungenSpiele() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + if ($turnierdisziplinid == 0) die ("Wrong id!"); + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) + keinZugriff(true); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierdisziplinid AND platz > 0), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $platzierung_anzeigen = $db->loadResult() > 0; + + $meldungen = array(); + $meldungenSpielerNamen = array(); + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { + /* Abfrage war erheblich zu langsam bei großem Bestand + $query = "SELECT *" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" + . "\n 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) { + $meldungenSpielerNamen[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? NichtLeererString($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1)) : StringsZusammenfassen($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1), $meldung->verknuepft2 ? $meldung->name2 : hervorheben($meldung->name2)); + } + */ + + $query = "SELECT platz, turniermeldung_id" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" + . "\n ORDER BY platz, turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungen[$rundenstufe] = $db->loadObjectList(); + } + + $query = "SELECT turniermeldung_id, spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid" + . "\n ORDER BY turniermeldung_spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungenSpieler = $db->loadObjectList(); + + foreach ($meldungenSpieler as $s) { + $spielername = $s->spieler_id == null ? hervorheben($s->nachname . ", " . $s->vorname) : ($s->nachname . ", " . $s->vorname); + if (empty($meldungenSpielerNamen[$s->turniermeldung_id])) + $meldungenSpielerNamen[$s->turniermeldung_id] = $spielername; + else + $meldungenSpielerNamen[$s->turniermeldung_id] = StringsZusammenfassen($meldungenSpielerNamen[$s->turniermeldung_id], $spielername); + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $rundenstufen_details = array(); + foreach ($rows as $row) { + $rundenstufen_details[$row->rundenstufe] = $row; + } + + $spiele = array(); + foreach (array(1, 2, 3, 10) as $rundenstufe) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnierspiel" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" + . "\n ORDER BY runde DESC, spiel_nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spiele[$rundenstufe] = $db->loadObjectList(); + } + + HTML_sportsmanager_admin::adminTurnierdisziplinMeldungenSpiele($disziplin, $rundenstufen_details, $meldungen, $meldungenSpielerNamen, $spiele, $platzierung_anzeigen); +} + +function adminTurnierdisziplinMeldungenSpieleAlleEntfernen() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $id = $jinput->get('turnierdisziplinid', 0, 'INT'); + $veranstalter_id = $jinput->get('veranstalterid', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + + return; + } + + // Sicherstellen, dass Turnierdisziplin zum Turnier gehört + $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (benutzerZugriff("turniere_aendern")) + $zugriffsebene = 2; + else if (benutzerTurnierModerator($turnierdisziplin->turnier_id)) + $zugriffsebene = 1; + else + keinZugriff(); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_turnier_rundenstufe WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); +} + +function adminImportTurnierdisziplinMeldungenSpieleForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + if (benutzerZugriff("turniere_aendern")) + $zugriffsebene = 2; + else if (benutzerTurnierModerator($row->turnier_id)) + $zugriffsebene = 1; + else + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter, $zugriffsebene); +} + +function adminImportTurnierdisziplinMeldungenSpiele() { + $db =& getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $id = $jinput->get('turnierdisziplinid', 0, 'INT'); + $veranstalter_id = $jinput->get('veranstalterid', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + + return; + } + + // Sicherstellen, dass Turnierdisziplin zum Turnier gehört + $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (benutzerZugriff("turniere_aendern")) + $zugriffsebene = 2; + else if (benutzerTurnierModerator($turnierdisziplin->turnier_id)) + $zugriffsebene = 1; + else + keinZugriff(); + + if ($zugriffsebene == 2 && $veranstalter_id != 0) + $wertungsbedingung = "(SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND veranstalter_id = $veranstalter_id) > 0 AND "; + else + $wertungsbedingung = "NOT ISNULL(aktueller_verein_id) AND "; + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin WRITE, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_spieler WRITE, #__sportsmanager_mitglied_von_verein READ, #__sportsmanager_verein READ, #__sportsmanager_turnier_rundenstufe WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + + if (!empty($_FILES["daten"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten"]["tmp_name"])) { + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $handle = fopen($_FILES["daten"]["tmp_name"], "r"); + if (!$handle) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei kann nicht geöffnet werden."); + + return; + } + if (feof($handle)) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer."); + + return; + } + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + if (substr($titelzeile, 0, 4) == "sep=") { + $trennzeichen = substr($titelzeile, 4); + if ($trennzeichen == "") // TAB am Ende wird aus irgendwelchen Gründen weggekürzt + $trennzeichen = "\t"; + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + } + if (strpos($titelzeile, "\t") !== false) + $trennzeichen = "\t"; + else if (strpos($titelzeile, ";") !== false) + $trennzeichen = ";"; + else + $trennzeichen = ","; + + $spalte = array(); + $titel = explode($trennzeichen, strtolower($titelzeile)); + + foreach ($titel as $index => $bezeichnung) { + if ($bezeichnung == "platz" || $bezeichnung == "platzierung") + $spalte["platz"] = $index; + else if ($bezeichnung == "itsf") + $spalte["itsf"] = $index; + else if ($bezeichnung == "name" || $bezeichnung == "nachname" || $bezeichnung == "name1" || $bezeichnung == "nachname1" || $bezeichnung == "nachname 1") + $spalte["nachname1"] = $index; + else if ($bezeichnung == "vorname" || $bezeichnung == "vorname1" || $bezeichnung == "vorname 1") + $spalte["vorname1"] = $index; + else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1") + $spalte["spielernr1"] = $index; + else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1") + $spalte["verein1"] = $index; + else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2") + $spalte["nachname2"] = $index; + else if ($bezeichnung == "vorname2" || $bezeichnung == "vorname 2") + $spalte["vorname2"] = $index; + else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2") + $spalte["spielernr2"] = $index; + else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2") + $spalte["verein1"] = $index; + } + + // CSV-Import + if ((isset($spalte["platz"]) && isset($spalte["vorname1"]) && isset($spalte["nachname1"])) || isset($spalte["itsf"])) { + $nichtGefundeneSpieler = ""; + $spielerMeldungen = array(); + + $ist_doppel = false; + if (isset($spalte["vorname2"]) && isset($spalte["nachname2"])) + $ist_doppel = true; + + while (!feof($handle)) { + $buffer = chop(utf8_encode(fgets($handle, 4096))); + $daten = explode($trennzeichen, $buffer); + + foreach ($daten as $index => $wert) { + $wert = trim($wert); + $len = strlen($wert); + if ($len < 2 || $wert[0] != '"' || $wert[$len - 1] != '"') + $daten[$index] = $wert; + else + $daten[$index] = str_replace('""', '"', substr($wert, 1, $len - 2)); + } + + if (isset($spalte["itsf"])) { + if (!isset($daten[$spalte["itsf"]])) + continue; + $itsf_daten = $daten[$spalte["itsf"]]; + if (empty($itsf_daten)) + continue; + + if (!$ist_doppel && strpos($itsf_daten, " - ") !== false) { + if (count($spielerMeldungen) != 0) + continue; + $ist_doppel = true; + } + + $nachname1 = ""; + $vorname1 = ""; + $spielernr1 = ""; + $verein1 = ""; + if ($ist_doppel) { + $nachname2 = ""; + $vorname2 = ""; + $spielernr2 = ""; + $verein2 = ""; + } + + $itsf_felder = explode(" ", $itsf_daten); + $position = 0; // 0: Platz, 1: Vorname1, 2: Nachname1, 3: Land1, 4: Vorname2, 5: Nachname2, 6: Land2 + foreach ($itsf_felder as $feld) { + if ($position == 0) { + if (!is_numeric($feld)) + break; + $platz = $feld; + $position++; + continue; + } + if ($position == 1) { + if (strtoupper($feld) != $feld) { + if (!empty($vorname1)) + $vorname1 .= " "; + $vorname1 .= $feld; + continue; + } + $position = 2; + } + if ($position == 2) { + if ($feld != "-" && substr($feld, 0, 1) != "(") { + if (!empty($nachname1)) + $nachname1 .= " "; + $nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); + continue; + } + $position = 3; + } + if ($position == 3) { + if ($feld == "-") + continue; + if (substr($feld, 0, 1) == "(" && substr($feld, 4) == ")") { + $verein1 = substr($feld, 1, 3); + continue; + } + if (!$ist_doppel) + break; + $position = 4; + } + if ($position == 4) { + if (strtoupper($feld) != $feld) { + if (!empty($vorname2)) + $vorname2 .= " "; + $vorname2 .= $feld; + continue; + } + $position = 5; + } + if ($position == 5) { + if ($feld != "-" && substr($feld, 0, 1) != "(") { + if (ctype_digit($feld)) + continue; + if (!empty($nachname2)) + $nachname2 .= " "; + $nachname2 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); + continue; + } + $position = 6; + } + if ($position == 6) { + if ($feld == "-") + continue; + if (substr($feld, 0, 1) == "(" && substr($feld, 4) == ")") { + $verein2 = substr($feld, 1, 3); + continue; + } + break; + } + } + + if (empty($platz) || empty($vorname1) || empty($nachname1)) + continue; + if ($ist_doppel && (empty($vorname2) || empty($nachname2))) + continue; + } + else { + $platz = str_replace(".", "", $daten[$spalte["platz"]]); + if (empty($platz)) + continue; + + if (!isset($daten[$spalte["vorname1"]]) || !isset($daten[$spalte["nachname1"]])) + continue; + + $nachname1 = $daten[$spalte["nachname1"]]; + $vorname1 = $daten[$spalte["vorname1"]]; + $spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : ""; + $verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : ""; + + if ($vorname1 == "" || $nachname1 == "") + continue; + + if ($ist_doppel) { + if (!isset($daten[$spalte["vorname2"]]) || !isset($daten[$spalte["nachname2"]])) + continue; + + $nachname2 = $daten[$spalte["nachname2"]]; + $vorname2 = $daten[$spalte["vorname2"]]; + $spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : ""; + $verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : ""; + + if ($vorname2 == "" || $nachname2 == "") + continue; + } + } + + if ($ist_doppel) { + // Spielernummern und -namen ermitteln + $spieler2_id = null; + if (!empty($spielernr2)) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr2) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + if (count($s) == 1) + $spieler2_id = $s[0]->spieler_id; + } + if ($spieler2_id == null) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname2) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname2) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + if (count($s) == 1) + $spieler2_id = $s[0]->spieler_id; + } + } + + // Spielernummern und -namen ermitteln + $spieler1_id = null; + if (!empty($spielernr1)) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr1) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + if (count($s) == 1) + $spieler1_id = $s[0]->spieler_id; + } + if ($spieler1_id == null) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname1) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname1) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + if (count($s) == 1) + $spieler1_id = $s[0]->spieler_id; + } + + $spielerMeldung = array(); + $spielerMeldung["p"] = $platz; + if ($spieler1_id == null) { + $spielerMeldung["1n"] = $nachname1; + $spielerMeldung["1v"] = $vorname1; + $spielerMeldung["1vn"] = $verein1; + } + else + $spielerMeldung["1"] = $spieler1_id; + + if ($ist_doppel) { + if ($spieler2_id == null) { + $spielerMeldung["2n"] = $nachname2; + $spielerMeldung["2v"] = $vorname2; + $spielerMeldung["2vn"] = $verein2; + } + else + $spielerMeldung["2"] = $spieler2_id; + } + array_push($spielerMeldungen, $spielerMeldung); + } + fclose($handle); + + foreach ($spielerMeldungen as $spielerMeldung) { + $platz = $spielerMeldung["p"]; + $spieler1_id = isset($spielerMeldung["1"]) ? $spielerMeldung["1"] : null; + if ($ist_doppel) + $spieler2_id = isset($spielerMeldung["2"]) ? $spielerMeldung["2"] : null; + + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$id', '0', '$platz');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungId = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . ($spieler1_id != null ? "'$spieler1_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if ($spieler1_id == null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["1n"]) . "', '" . $db->escape($spielerMeldung["1v"]) . "', '" . $db->escape($spielerMeldung["1vn"]) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if ($ist_doppel) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . ($spieler2_id != null ? "'$spieler2_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if ($spieler2_id == null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + else { // XML-Import + fclose($handle); + + // Daten zu Vorrunde laden + $disziplinVorrunde = null; + if (!empty($_FILES["daten_vorrunde"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_vorrunde"]["tmp_name"])) { + // $disziplinVorrunde = new DOMIT_Document(); + // $success = $disziplinVorrunde->loadXML($_FILES["daten_vorrunde"]["tmp_name"]); + $disziplinVorrunde = new DOMDocument(); + $disziplinVorrunde->recover = true; + $success = $disziplinVorrunde->load($_FILES["daten_vorrunde"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + + return; + } + } + } + + // Daten zu Zusatzrunde laden + $disziplinZusatzrunde = null; + if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) { + // $disziplinZusatzrunde = new DOMIT_Document(); + // $success = $disziplinZusatzrunde->loadXML($_FILES["daten_zusatzrunde"]["tmp_name"]); + $disziplinZusatzrunde = new DOMDocument(); + $disziplinZusatzrunde->recover = true; + $success = $disziplinZusatzrunde->load($_FILES["daten_zusatzrunde"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + + return; + } + } + } + + // Daten zu 2. Zusatzrunde laden + $disziplinZusatzrunde2 = null; + if (!empty($_FILES["daten_zusatzrunde2"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_zusatzrunde2"]["tmp_name"])) { + // $disziplinZusatzrunde2 = new DOMIT_Document(); + // $success = $disziplinZusatzrunde2->loadXML($_FILES["daten_zusatzrunde2"]["tmp_name"]); + $disziplinZusatzrunde2 = new DOMDocument(); + $disziplinZusatzrunde2->recover = true; + $success = $disziplinZusatzrunde2->load($_FILES["daten_zusatzrunde2"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + + return; + } + } + } + + // Daten zu Hauptrunde laden + // $disziplin = new DOMIT_Document(); + // $success = $disziplin->loadXML($_FILES["daten"]["tmp_name"]); + $disziplin = new DOMDocument(); + $disziplin->recover = true; + $success = $disziplin->load($_FILES["daten"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + + return; + } + + if ($disziplinVorrunde != null) { + $matchingNodes =& $disziplinVorrunde->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + + return; + } + // if ($matchingNodes->getLength() != 1) { + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + + return; + } + } + + if ($disziplinZusatzrunde != null) { + $matchingNodes =& $disziplinZusatzrunde->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + + return; + } + // if ($matchingNodes->getLength() != 1) { + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + + return; + } + } + + if ($disziplinZusatzrunde2 != null) { + $matchingNodes =& $disziplinZusatzrunde2->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + + return; + } + // if ($matchingNodes->getLength() != 1) { + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + + return; + } + } + + $matchingNodes =& $disziplin->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin."); + + return; + } + // if ($matchingNodes->getLength() != 1) { + if ($matchingNodes->length != 1) { + /* + $handle = fopen ($_FILES["daten"]["tmp_name"], "r"); + while (!feof($handle)) { + $buffer = chop(utf8_encode(fgets($handle, 4096))); + echo htmlentities_utf8($buffer) . "
"; + } + fclose($handle); + echo "...
"; + */ + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten."); + + return; + } + + // Spieler-Ids über Spielerliste ermitteln + $meldungenSpieler = array(); + $meldungenPlatz = array(); + foreach (array(0, 1, 2, 3, 10) as $rundenstufe) + $meldungenPlatz[$rundenstufe] = array(); + //$meldungenVerein = array(); + $meldungenIds = array(); + $matchingNodes =& $disziplin->getElementsByTagName("meldung"); + if ($matchingNodes != null) { + // $totalHauptrunde = $matchingNodes->getLength(); + $totalHauptrunde = $matchingNodes->length; + for ($i = 0; $i < $totalHauptrunde; $i++) { + $currNode =& $matchingNodes->item($i); + // $meldungName = utf8_encode($currNode->getAttribute("name")); + $meldungName = $currNode->getAttribute("name"); + $meldungPlatz = $currNode->getAttribute("platz"); + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $meldungPlatz; + $meldungenPlatz[1][$meldungName] = $meldungPlatz; + +// $spieler =& $currNode->firstChild; +// while ($spieler != NULL) { + $spielerNodes =& $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '$spielernr') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + else + $gefunden = null; + + if (!$gefunden) { + // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; + // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); + // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + array_push($meldungenSpieler[$meldungName], $gefunden); + else + array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); +// $spieler =& $spieler->nextSibling; + } + } + + $neueMeldungenZusatzrunde = 0; + if ($disziplinZusatzrunde != null) { + $matchingNodesZusatzrunde =& $disziplinZusatzrunde->getElementsByTagName("meldung"); + if ($matchingNodesZusatzrunde != null) { + //$totalZusatzrunde = $matchingNodesZusatzrunde->getLength(); + $totalZusatzrunde = $matchingNodesZusatzrunde->length; + for ($i = 0; $i < $totalZusatzrunde; $i++) { + $currNode =& $matchingNodesZusatzrunde->item($i); + // $meldungName = utf8_encode($currNode->getAttribute("name")); + $meldungName = $currNode->getAttribute("name"); + //if (!isset($meldungenVerein[$meldungName])) + // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); + $meldungPlatz = $currNode->getAttribute("platz"); + $meldungenPlatz[2][$meldungName] = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $neueMeldungenZusatzrunde++; + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz; + + // $spieler =& $currNode->firstChild; + // while ($spieler != NULL) { + $spielerNodes =& $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + else + $gefunden = null; + + if (!$gefunden) { + // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; + // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); + // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + array_push($meldungenSpieler[$meldungName], $gefunden); + else + array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); + // $spieler =& $spieler->nextSibling; + } + } + } + } + } + else + $totalZusatzrunde = 0; + + $neueMeldungenZusatzrunde2 = 0; + if ($disziplinZusatzrunde2 != null) { + $matchingNodesZusatzrunde2 =& $disziplinZusatzrunde2->getElementsByTagName("meldung"); + if ($matchingNodesZusatzrunde2 != null) { + // $totalZusatzrunde2 = $matchingNodesZusatzrunde2->getLength(); + $totalZusatzrunde2 = $matchingNodesZusatzrunde2->length; + for ($i = 0; $i < $totalZusatzrunde2; $i++) { + $currNode =& $matchingNodesZusatzrunde2->item($i); + // $meldungName = utf8_encode($currNode->getAttribute("name")); + $meldungName = $currNode->getAttribute("name"); + //if (!isset($meldungenVerein[$meldungName])) + // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); + $meldungPlatz = $currNode->getAttribute("platz"); + $meldungenPlatz[3][$meldungName] = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $neueMeldungenZusatzrunde2++; + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz; + + // $spieler =& $currNode->firstChild; + // while ($spieler != NULL) { + $spielerNodes =& $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + else + $gefunden = null; + + if (!$gefunden) { + // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; + // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); + // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + array_push($meldungenSpieler[$meldungName], $gefunden); + else + array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); + // $spieler =& $spieler->nextSibling; + } + } + } + } + } + else + $totalZusatzrunde2 = 0; + + $disziplinVorrundeErsterPlatz = 0; + if ($disziplinVorrunde != null) { + $matchingNodesVorrunde =& $disziplinVorrunde->getElementsByTagName("meldung"); + if ($matchingNodesVorrunde != null) { + // $totalVorrunde = $matchingNodesVorrunde->getLength(); + $totalVorrunde = $matchingNodesVorrunde->length; + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode =& $matchingNodesVorrunde->item($i); + // $meldungName = utf8_encode($currNode->getAttribute("name")); + $meldungName = $currNode->getAttribute("name"); + if (isset($meldungenSpieler[$meldungName])) + continue; + $meldungPlatz = $currNode->getAttribute("platz"); + if ($meldungPlatz < $disziplinVorrundeErsterPlatz || $disziplinVorrundeErsterPlatz == 0) + $disziplinVorrundeErsterPlatz = $meldungPlatz; + } + + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode =& $matchingNodesVorrunde->item($i); + // $meldungName = utf8_encode($currNode->getAttribute("name")); + $meldungName = $currNode->getAttribute("name"); + //if (!isset($meldungenVerein[$meldungName])) + // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); + $meldungPlatz = $currNode->getAttribute("platz"); + $meldungenPlatz[10][$meldungName] = $meldungPlatz; + if ($disziplinVorrundeErsterPlatz == 0) + $disziplinVorrundeErsterPlatz = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $neueMeldungenZusatzrunde2 + $meldungPlatz - $disziplinVorrundeErsterPlatz + 1; + + // $spieler =& $currNode->firstChild; + // while ($spieler != NULL) { + $spielerNodes =& $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + else + $gefunden = null; + + if (!$gefunden) { + // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; + // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); + // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + array_push($meldungenSpieler[$meldungName], $gefunden); + else + array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); + // $spieler =& $spieler->nextSibling; + } + } + } + } + } + + // Meldungen speichern + foreach ($meldungenSpieler as $meldungName => $spielerIds) { + $meldungPlatz = $meldungenPlatz[0][$meldungName]; + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$id', '0', '$meldungPlatz');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungId = $db->insertid(); + $meldungenIds[$meldungName] = $meldungId; + + foreach ($spielerIds as $spielerId) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . (!is_array($spielerId) ? "'$spielerId'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if (is_array($spielerId)) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $rundenstufen = array(0); + $platzierungen = array(0 => $meldungenPlatz[0][$meldungName]); + foreach (array(1, 2, 3, 10) as $rundenstufe) { + if (isset($meldungenPlatz[$rundenstufe][$meldungName])) { + array_push($rundenstufen, $rundenstufe); + $platzierungen[$rundenstufe] = $meldungenPlatz[$rundenstufe][$meldungName]; + } + } + meldungsgruppe_verknuepfen($meldungId, $rundenstufen, $platzierungen); + } + } + + // Spiele speichern + $totalVorrunde = 0; + if ($disziplinVorrunde != null) { + $matchingNodes =& $disziplinVorrunde->getElementsByTagName("runde"); + if ($matchingNodes != null) { + // $totalVorrunde = $matchingNodes->getLength(); + $totalVorrunde = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode =& $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + // $spiel =& $currNode->firstChild; + // while ($spiel != NULL) { + $spielNodes =& $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + // $heim = utf8_encode($spiel->getAttribute("heim")); + // $gast = utf8_encode($spiel->getAttribute("gast")); + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + // $satz =& $spiel->firstChild; + // while ($satz != NULL) { + $satzNodes =& $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + // $satz =& $satz->nextSibling; + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '10', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // $spiel =& $spiel->nextSibling; + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '10'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Spiele speichern + $totalZusatzrunde = 0; + if ($disziplinZusatzrunde != null) { + $matchingNodes =& $disziplinZusatzrunde->getElementsByTagName("runde"); + if ($matchingNodes != null) { + // $totalZusatzrunde = $matchingNodes->getLength(); + $totalZusatzrunde = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalZusatzrunde; $i++) { + $currNode =& $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + // $spiel =& $currNode->firstChild; + // while ($spiel != NULL) { + $spielNodes =& $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + // $heim = utf8_encode($spiel->getAttribute("heim")); + // $gast = utf8_encode($spiel->getAttribute("gast")); + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + // $satz =& $spiel->firstChild; + // while ($satz != NULL) { + $satzNodes =& $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + // $satz =& $satz->nextSibling; + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '2', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // $spiel =& $spiel->nextSibling; + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '2'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Spiele speichern + $totalZusatzrunde2 = 0; + if ($disziplinZusatzrunde2 != null) { + $matchingNodes =& $disziplinZusatzrunde2->getElementsByTagName("runde"); + if ($matchingNodes != null) { + // $totalZusatzrunde2 = $matchingNodes->getLength(); + $totalZusatzrunde2 = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalZusatzrunde2; $i++) { + $currNode =& $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + // $spiel =& $currNode->firstChild; + // while ($spiel != NULL) { + $spielNodes =& $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + // $heim = utf8_encode($spiel->getAttribute("heim")); + // $gast = utf8_encode($spiel->getAttribute("gast")); + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + // $satz =& $spiel->firstChild; + // while ($satz != NULL) { + $satzNodes =& $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + // $satz =& $satz->nextSibling; + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '3', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // $spiel =& $spiel->nextSibling; + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '3'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + + $matchingNodes =& $disziplin->getElementsByTagName("runde"); + if ($matchingNodes != null) { + // $total = $matchingNodes->getLength(); + $total = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $total; $i++) { + $currNode =& $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + // $spiel =& $currNode->firstChild; + // while ($spiel != NULL) { + $spielNodes =& $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + // $heim = utf8_encode($spiel->getAttribute("heim")); + // $gast = utf8_encode($spiel->getAttribute("gast")); + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + // $satz =& $spiel->firstChild; + // while ($satz != NULL) { + $satzNodes =& $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + // $satz =& $satz->nextSibling; + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $totalVorrunde + $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '1', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // $spiel =& $spiel->nextSibling; + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . ($ergebnis_saetze_maximum != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '1'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + } + + foreach (array(1, 2, 3, 10) as $rundenstufe) { + $query = "SELECT runde, COUNT(*) AS spiele" + . "\n FROM #__sportsmanager_turnierspiel" + . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe" + . "\n GROUP BY runde" + . "\n ORDER BY runde DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $runden = $db->loadObjectList(); + + if (count($runden) < 2 + || ($runden[0]->spiele != 1 && $runden[0]->spiele != 2) + || $runden[1]->spiele != 2) + continue; + if (count($runden) >= 3 + && ($runden[2]->spiele > 4)) + continue; + if (count($runden) >= 4 + && ($runden[2]->spiele != 4 || $runden[3]->spiele > 8)) + continue; + if (count($runden) >= 5 + && ($runden[3]->spiele != 8 || $runden[4]->spiele > 16)) + continue; + + $query = "SELECT turnierspiel_id" + . "\n FROM #__sportsmanager_turnierspiel" + . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[0]->runde + . "\n ORDER BY turnierspiel_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET runde = '19999'" + . "\n WHERE turnierspiel_id = '" . $rows[0]->turnierspiel_id . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (count($rows) >= 2) { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET runde = '19998'" + . "\n WHERE turnierspiel_id = '" . $rows[1]->turnierspiel_id . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + for ($i = 1; $i < count($runden) && $i <= 6; $i++) { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET runde = '" . (19998 - $i) . "'" + . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[$i]->runde; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); +} + +function adminEditTurnierdisziplinSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) + keinZugriff(true); + + if (empty($id)) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; + + $query = "SELECT *" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND (rundenstufe = '$rundenstufe'" . ($rundenstufe != 0 ? " OR rundenstufe = 0" : "") . ")" + . "\n ORDER BY rundenstufe, name1, name2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungen = $db->loadObjectList(); + + /* + $query = "SELECT turniermeldung_id, spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname, " + . "\n IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) AS vereinsname" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + $meldungenSpieler = $db->loadObjectList(); + + $meldungenSpielerNamen = array(); + foreach ($meldungenSpieler as $s) { + if (!isset($meldungenSpielerNamen[$s->turniermeldung_id])) + $meldungenSpielerNamen[$s->turniermeldung_id] = $s->nachname . ", " . $s->vorname; + else + $meldungenSpielerNamen[$s->turniermeldung_id] .= " / " . $s->nachname . ", " . $s->vorname; + } + + asort($meldungenSpielerNamen); +*/ + HTML_sportsmanager_admin::adminEditTurnierdisziplinSpiel($row, $disziplin, $rundenstufen_details, $meldungen, $rundenstufe); +} + +function adminSaveTurnierdisziplinSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $ergebnis = $jinput->get('ergebnis', 0, 'INT'); + $ergebnis_punkte_heim = $jinput->get('ergebnis_punkte_heim', array(), 'ARRAY'); + $ergebnis_punkte_gast = $jinput->get('ergebnis_punkte_gast', array(), 'ARRAY'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $spiel_nummer = $jinput->get('spiel_nummer', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + $rundentyp = $jinput->get('rundentyp', -1, 'INT'); + $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); + $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); + + return; + } + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); + + $ergebnis_detailliert = ""; + $saetze_heim = 0; + $saetze_gast = 0; + for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) { + if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i]))) + continue; + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i]; + $punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i]; + if ($punkte_heim > $punkte_gast) + $saetze_heim++; + else if ($punkte_gast > $punkte_heim) + $saetze_gast++; + $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; + } + if ($saetze_heim > 0 || $saetze_gast > 0) + $ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0); + + if ($rundentyp >= 10000) + $runde = $rundentyp; + else if ($rundentyp == -2) + $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); + else if ($hauptrunde && $rundentyp == 0) + $runde = 0; + + $gewinner_meldung_id = $jinput->get('gewinner_meldung_id', 0, 'INT'); + $verlierer_meldung_id = $jinput->get('verlierer_meldung_id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert) VALUES ('$turnierdisziplinid', " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . ", '$runde', '$rundenstufe', '$gewinner_meldung_id', '$verlierer_meldung_id', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET spiel_nummer = " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . "," + . "\n runde = '$runde'," + . "\n heim_meldung_id = '$gewinner_meldung_id'," + . "\n gast_meldung_id = '$verlierer_meldung_id'," + . "\n ergebnis = '$ergebnis'," + . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") + . "\n WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); +} + +function adminRemoveTurnierdisziplinSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier READ, #__sportsmanager_turnierspiel WRITE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; + + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierdisziplinid;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($elo_aktualisieren) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); +} + +function adminEditTurnierdisziplinRunde() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $runde = $jinput->get('runde', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + HTML_sportsmanager_admin::adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $turnierdisziplin); +} + +function adminSaveTurnierdisziplinRunde() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $runde_alt = $jinput->get('runde_alt', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + $rundentyp = $jinput->get('rundentyp', -1, 'INT'); + $runde = max(min(abs($jinput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); + $platzierung_ende = max(min(abs($jinput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); + + return; + } + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); + + if ($rundentyp >= 10000) + $runde = $rundentyp; + else if ($rundentyp == -2) + $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); + else if ($runde_alt >= 0 && $rundentyp == 0) + $runde = 0; + if ($runde_alt < 0) + $runde = -$runde; + + if ($runde != $runde_alt) { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET runde = '$runde'" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND runde = $runde_alt AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); +} + +function adminEditTurnierdisziplinMeldung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $weitere = $jinput->get('weitere', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 0 && $rundenstufe != 20 && $rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + + $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $rundenstufen = array(); + $platzierungen = array(0 => "0", 1 => "0", 2 => "0", 3 => "0", 10 => "0", 20 => "0"); + if ($id == null) { + $row = null; + $meldung = null; + $meldung_spieler = null; + + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierdisziplinid ORDER BY rundenstufe, platz DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) { + array_push($rundenstufen, $rows[0]->rundenstufe); + $platzierungen[$rows[0]->rundenstufe] = $rows[0]->platz; + } + } + else { + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $meldung = $rows[0]; + + if ($meldung->meldungsgruppe_id != null) { + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $meldung->turnierdisziplin_id AND meldungsgruppe_id = $meldung->meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + array_push($rundenstufen, $row->rundenstufe); + $platzierungen[$row->rundenstufe] = $row->platz; + } + } + else { + array_push($rundenstufen, $meldung->rundenstufe); + $platzierungen[$meldung->rundenstufe] = $meldung->platz; + } + + $rundenstufe = $meldung->rundenstufe; + + $query = "SELECT spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname, " + . "\n IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) AS vereinsname" + . "\n FROM #__sportsmanager_turniermeldung_spieler" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)" + . "\n WHERE turniermeldung_id = $meldung->turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldung_spieler = $db->loadObjectList(); + } + + $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditTurnierdisziplinMeldung($meldung, $rundenstufe, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere); +} + +function adminSaveTurnierdisziplinMeldung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $spieler_1_id = $jinput->get('spieler_1_id', 0, 'INT'); + $spieler_1_nachname = $db->escape($jinput->get('spieler_1_nachname', '', 'RAW')); + $spieler_1_vorname = $db->escape($jinput->get('spieler_1_vorname', '', 'RAW')); + $spieler_1_verein = $db->escape($jinput->get('spieler_1_verein', '', 'RAW')); + $spieler_2_id = $jinput->get('spieler_2_id', 0, 'INT'); + $spieler_2_nachname = $db->escape($jinput->get('spieler_2_nachname', '', 'RAW')); + $spieler_2_vorname = $db->escape($jinput->get('spieler_2_vorname', '', 'RAW')); + $spieler_2_verein = $db->escape($jinput->get('spieler_2_verein', '', 'RAW')); + $weitere = $jinput->get('weitere', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#mid' . $id); + + return; + } + + $rundenstufen = $jinput->get('rundenstufen', array(), 'ARRAY'); + $platzierungen = $jinput->get('platzierungen', array(), 'ARRAY'); + $platzierungen = array(0 => $platzierungen[0], 1 => $platzierungen[1], 2 => $platzierungen[2], 3 => $platzierungen[3], 10 => $platzierungen[4], 20 => 0); + + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turnierspiel WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + /* + if ($platz > 0 && ($spieler_1_id != 0 || $spieler_2_id != 0)) { + $query = "SELECT COUNT(*) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id) WHERE platz > 0 AND rundenstufe = $rundenstufe AND #__sportsmanager_turniermeldung.turniermeldung_id != $id AND turnierdisziplin_id = $turnierdisziplinid"; + if ($spieler_1_id != 0 && $spieler_2_id != 0) + $query .= " AND (#__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id OR #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id)"; + else if ($spieler_1_id != 0) + $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id"; + else + $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + if ($db->loadResult() > 0) { + $query = "UNLOCK TABLES;"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid, "Die Meldung wurde nicht gespeichert, da zu mindestens einem der Spieler bereits eine Platzierung bei einer anderen Meldung eingetragen ist."); + } + } + */ + + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + + if ($id == 0) { + $rundenstufe = count($rundenstufen) > 0 ? $rundenstufen[0] : 0; + $platz = $platzierungen[$rundenstufe]; + + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$turnierdisziplinid', '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$id', " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turniermeldung_spieler_id = $db->insertid(); + + if ($spieler_1_id == 0) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ($turniermeldung_spieler_id, '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if ($turnierdisziplin->typ == 1) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$id', " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turniermeldung_spieler_id = $db->insertid(); + + if ($spieler_2_id == 0) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ($turniermeldung_spieler_id, '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + else { + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $meldung = $rows[0]; + + $rundenstufe = $meldung->rundenstufe; + $platz = $platzierungen[$rundenstufe]; + + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL") + . "\n WHERE turniermeldung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if ($rows[0]->spieler_id == 0 && $spieler_1_id == 0) { + $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" + . "\n SET nachname = '$spieler_1_nachname'," + . "\n vorname = '$spieler_1_vorname'," + . "\n vereinsname = '$spieler_1_verein'" + . "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($rows[0]->spieler_id == 0 && $spieler_1_id != 0) { + $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" + . "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($rows[0]->spieler_id != 0 && $spieler_1_id == 0) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES (" . $rows[0]->turniermeldung_spieler_id . ", '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_turniermeldung_spieler" + . "\n SET spieler_id = " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL") + . "\n WHERE turniermeldung_spieler_id = " . $rows[0]->turniermeldung_spieler_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($turnierdisziplin->typ == 1) { + if ($rows[1]->spieler_id == 0 && $spieler_2_id == 0) { + $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" + . "\n SET nachname = '$spieler_2_nachname'," + . "\n vorname = '$spieler_2_vorname'," + . "\n vereinsname = '$spieler_2_verein'" + . "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($rows[1]->spieler_id == 0 && $spieler_2_id != 0) { + $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" + . "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($rows[1]->spieler_id != 0 && $spieler_2_id == 0) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES (" . $rows[1]->turniermeldung_spieler_id . ", '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_turniermeldung_spieler" + . "\n SET spieler_id = " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL") + . "\n WHERE turniermeldung_spieler_id = " . $rows[1]->turniermeldung_spieler_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + meldungsgruppe_verknuepfen($id, $rundenstufen, $platzierungen); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) + eloAktualisieren($aktualisieren_ab_datum); + ranglisteAktualisieren(0, $turnierdisziplinid); + einstufungAktualisieren(); + + if (!$weitere) + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#mid' . $id); + else + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldung_edit&turnierdisziplinid=' . $turnierdisziplinid . '&id=' . $id . '&weitere=1'); +} + +function adminRemoveTurnierdisziplinMeldung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turnierspiel WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + // Sicherstellen, dass Meldung zur Turnierdisziplin und damit zum Turnier gehört + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $meldung = $rows[0]; + + meldungssgruppe_entfernen($id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren(0, $turnierdisziplinid); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); +} + +function adminVerknuepfenTurnierdisziplinMeldungForm() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) + keinZugriff(true); + + $meldungen = array(); + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { + $query = "SELECT *" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1" + . ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS vereinsname1" + . ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS vereinsname2" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" + . "\n ORDER BY platz, name1, name2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $meldungen[$rundenstufe] = $db->loadObjectList(); + } + HTML_sportsmanager_admin::adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen); +} + +function adminVerknuepfenTurnierdisziplinMeldung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $ids = array(); + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) + $ids[$rundenstufe] = $jinput->get('ids' . $rundenstufe, array(), 'ARRAY'); + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + if ($turnierdisziplinid == 0) die("Missing id!"); + $rundenstufen = $jinput->get('rundenstufen', array(), 'ARRAY'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + + return; + } + + // Sicherstellen, dass Turnierdisziplin zu Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($rows[0]->turnier_id)) + keinZugriff(); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_spieler READ, #__sportsmanager_turniermeldung WRITE, #__sportsmanager_turniermeldung_spieler WRITE, #__sportsmanager_turniermeldung_spieler_name WRITE, #__sportsmanager_turnierspiel WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { + foreach ($ids[$rundenstufe] as $meldung_id) { + // Sicherstellen, dass Meldung zu Turnierdisziplin und damit zu Turnier gehört + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $meldung_id AND turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + + meldungsgruppe_erweitern($meldung_id, $rundenstufen); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + ranglisteAktualisieren(0, $turnierdisziplinid); + einstufungAktualisieren(); + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); +} + +function meldungsgruppe_erweitern($quelle_turniermeldung_id, $rundenstufen) { + $db =& getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $quelle_meldung = $rows[0]; + $meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id; + + if ($quelle_meldung->meldungsgruppe_id != null) { + $query = "SELECT DISTINCT rundenstufe FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + if (!in_array($row->rundenstufe, $rundenstufen)) + array_push($rundenstufen, $row->rundenstufe); + } + } + else { + if (!in_array($quelle_meldung->rundenstufe, $rundenstufen)) + array_push($rundenstufen, $quelle_meldung->rundenstufe); + } + + meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, null); +} + +function meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, $platzierungen) { + $db =& getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $quelle_meldung = $rows[0]; + $meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id; + + $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $quelle_turniermeldung_id ORDER BY turniermeldung_spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $quelle_meldung_spieler = $db->loadObjectList(); + + if ($quelle_meldung->meldungsgruppe_id == null && count($rundenstufen) > 1) { + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET meldungsgruppe_id = '$meldungsgruppe_id'" + . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = '$meldungsgruppe_id' AND turnierdisziplin_id = '$quelle_meldung->turnierdisziplin_id' AND rundenstufe = '$rundenstufe'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (empty($rundenstufen) || !in_array($rundenstufe, $rundenstufen)) { + if (count($rows) == 0) + continue; + $ziel_meldung = $rows[0]; + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $ziel_meldung->turniermeldung_id OR gast_meldung_id = $ziel_meldung->turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $ziel_meldung->turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($quelle_meldung->rundenstufe == $rundenstufe) { + continue; + } + else if (count($rows) == 0) { + $platz = (empty($platzierungen) || !isset($platzierungen[$rundenstufe])) ? 0 : $platzierungen[$rundenstufe]; + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, meldungsgruppe_id, rundenstufe, platz)" + . "\n VALUES ('$quelle_meldung->turnierdisziplin_id', " . (count($rundenstufen) > 1 ? "'$meldungsgruppe_id'" : "NULL") . ", '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_turniermeldung_id = $db->insertid(); + + for ($i = 0; $i < count($quelle_meldung_spieler); $i++) { + $row = $quelle_meldung_spieler[$i]; + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$ziel_turniermeldung_id', " . ($row->spieler_id != null ? "'$row->spieler_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $turniermeldung_spieler_id = $db->insertid(); + + if ($row->spieler_id == null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ($turniermeldung_spieler_id, '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->vereinsname) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + else { + $ziel_meldung = $rows[0]; + if (!empty($platzierungen)) { + $platz = !isset($platzierungen[$rundenstufe]) ? 0 : $platzierungen[$rundenstufe]; + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL") + . "\n WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id ORDER BY turniermeldung_spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ziel_meldung_spieler = $db->loadObjectList(); + if (count($ziel_meldung_spieler) != count($quelle_meldung_spieler)) die("Wrong id!"); + + for ($i = 0; $i < count($quelle_meldung_spieler); $i++) { + $quelle_row = $quelle_meldung_spieler[$i]; + $ziel_row = $ziel_meldung_spieler[$i]; + + $query = "UPDATE #__sportsmanager_turniermeldung_spieler" + . "\n SET spieler_id = " . ($quelle_row->spieler_id != null ? "'$quelle_row->spieler_id'" : "NULL") + . "\n WHERE turniermeldung_spieler_id = $ziel_row->turniermeldung_spieler_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($quelle_row->spieler_id == null && $ziel_row->spieler_id == null) { + $query = "UPDATE #__sportsmanager_turniermeldung_spieler_name" + . "\n SET nachname = '" . $db->escape($quelle_row->nachname) . "'," + . "\n vorname = '" . $db->escape($quelle_row->vorname) . "'," + . "\n vereinsname = '" . $db->escape($quelle_row->vereinsname) . "'" + . "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($quelle_row->spieler_id == null && $ziel_row->spieler_id != null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ($ziel_row->turniermeldung_spieler_id, '" . $db->escape($quelle_row->nachname) . "', '" . $db->escape($quelle_row->vorname) . "', '" . $db->escape($quelle_row->vereinsname) . "');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($quelle_row->spieler_id != null && $ziel_row->spieler_id == null) { + $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name" + . "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n == 1) { + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET meldungsgruppe_id = NULL" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } +} + +function meldungssgruppe_entfernen($turniermeldung_id) { + $db =& getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $turniermeldung_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 0) die("Wrong id!"); + $meldung = $rows[0]; + $meldungsgruppe_id = $meldung->meldungsgruppe_id != null ? $meldung->meldungsgruppe_id : $turniermeldung_id; + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $turniermeldung_id OR gast_meldung_id = $turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $turniermeldung_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n == 1) { + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET meldungsgruppe_id = NULL" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } +} + +function adminEditTurnierdisziplinRundenstufe() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + + $query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; + + HTML_sportsmanager_admin::adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details); +} + +function adminSaveTurnierdisziplinRundenstufe() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + + return; + } + + $bezeichnung = $db->escape($jinput->get('bezeichnung', '', 'RAW')); + $typ = $jinput->get('typ', 0, 'INT'); + $runden = $jinput->get('runden', 0, 'INT'); + $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); + $saetze = $jinput->get('saetze', 0, 'INT'); + $tore = $jinput->get('tore', 0, 'INT'); + $spielfelder_erstes = $jinput->get('spielfelder_erstes', 0, 'INT'); + $spielfelder_letztes = $jinput->get('spielfelder_letztes', 0, 'INT'); + + // Sicherstellen, dass Turnierdisziplin zum Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); + + $query = "LOCK TABLES #__sportsmanager_turnierdisziplin READ, #__sportsmanager_turnier_rundenstufe WRITE, #__sportsmanager_turnierspiel WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; + + if ($rundenstufen_details == null) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . "," + . "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . "," + . "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . "," + . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," + . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$turnierdisziplinid'," + . "\n rundenstufe = '$rundenstufe'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + $query = "UPDATE #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = '$bezeichnung'," + . "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . "," + . "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . "," + . "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . "," + . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," + . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," + . "\n spielfelder = null" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (($rundenstufen_details->typ == null && $typ != 0) || ($rundenstufen_details->typ != null && $typ != 0 && $rundenstufen_details->typ != $typ)) { + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else if ($rundenstufen_details->saetze != null && $rundenstufen_details->saetze > $saetze) { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET ergebnis_detailliert = null" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); +} + +function adminRemoveTurnierdisziplinRundenstufe() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $rundenstufe = $jinput->get('rundenstufe', 0, 'INT'); + if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!"); + + // Sicherstellen, dass Turnierdisziplin zum Turnier gehört + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); + + $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); +} + +function adminSpielerExportBilderForm() { + $db =& getDatabase(); + + $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(true); + + if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { + redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + $query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*" + . "\n FROM #__sportsmanager_veranstalter"; + if ($beschraenkter_zugriff == 1) + $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); + $query .= "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielerExportBilder($veranstalter, $beschraenkter_zugriff); +} + +function adminSpielerExportBilder() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(); + + setMinMemoryLimit('256M'); + if (!ini_get('safe_mode')) + set_time_limit(300); + + $filter = $jinput->get('filter', 0, 'INT'); + $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); + if ($veranstalter_id != 0) { + $query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $veranstalter = $rows[0]; + } + else + $veranstalter = null; + + if ($beschraenkter_zugriff == 1) { + $query = "SELECT DISTINCT veranstalter_id" + . "\n FROM #__sportsmanager_veranstalter" + . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + if (count($veranstalter) == 0) + keinZugriff(); + } + + $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; + if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::create($ziel_bilder_pfad, 0777)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); + + return; + } + + $alte_bilder = JFolder::files($ziel_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden.rstellt werden."); + + return; + } + } + + $query = "SELECT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler"; + if ($veranstalter_id != 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; + if ($filter != 0) + $query .= " AND NOT bild_ausblenden"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + $anzahlSpieler = 0; + foreach ($spieler as $s) { + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . $s->spieler_id . '.'; + if (JFile::exists($pfad . 'png')) + $ext = "png"; + else if (JFile::exists($pfad . 'jpg')) + $ext = "jpg"; + else + continue; + + if (!JFile::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Spieler ' . utf8_decode(bereinigterDateiname($s->nachname . ", " . $s->vorname . (!empty($s->spielernr) ? (" (" . $s->spielernr . ")") : "") . '.' . $ext)))) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Ein Bild (" . $s->spieler_id . ") konnte nicht an die Zielposition kopiert werden."); + + return; + } + $anzahlSpieler++; + } + + /* + $neue_bilder = JFolder::files($ziel_bilder_pfad); + $zip_dateien = array(); + foreach($neue_bilder as $fn) + array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); + $file = tempnam("tmp", "tar"); + $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; +*/ + + if (class_exists("ZipArchive")) { + $file = tempnam("tmp", "zip"); + $zip = new ZipArchive(); + $zip->open($file, ZipArchive::OVERWRITE); + $neue_bilder = JFolder::files($ziel_bilder_pfad); + foreach ($neue_bilder as $fn) + $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); + $zip->close(); + } + else if (JArchive::getAdapter('zip')) { + $zip_adapter = &JArchive::getAdapter('zip'); + $neue_bilder = JFolder::files($ziel_bilder_pfad); + $zip_dateien = array(); + foreach ($neue_bilder as $fn) { + $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); + } + $file = tempnam("tmp", "zip"); + $zip_adapter->create($file, $zip_dateien, array()); + } + else { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + foreach ($neue_bilder as $fn) + JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $dateiname = "Spielerbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip"; + $dateiname = bereinigterDateiname($dateiname); + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header("Content-Type: application/zip"); + header("Content-Length: " . filesize($file)); + header("Content-Disposition: attachment; filename=\"" . $dateiname . "\""); + readfile($file); + unlink($file); + die(); +} + +function adminVereineExportBilderForm() { + $db =& getDatabase(); + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { + redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVereineExportBilder($veranstalter); +} + +function adminVereineExportBilder() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine'); + + return; + } + + setMinMemoryLimit('256M'); + if (!ini_get('safe_mode')) + set_time_limit(300); + + $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); + if ($veranstalter_id != 0) { + $query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $veranstalter = $rows[0]; + } + else + $veranstalter = null; + + $query = "LOCK TABLES #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; + if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::create($ziel_bilder_pfad, 0777)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); + + return; + } + + $alte_bilder = JFolder::files($ziel_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden."); + + return; + } + } + + $query = "SELECT verein_id, vereinsname" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE NOT ausgetreten"; + if ($veranstalter_id != 0) + $query .= " AND veranstalter_id = $veranstalter_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + $anzahlVereine = 0; + foreach ($vereine as $v) { + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine' . DIRECTORY_SEPARATOR . $v->verein_id . '.'; + if (JFile::exists($pfad . 'png')) + $ext = "png"; + else if (JFile::exists($pfad . 'jpg')) + $ext = "jpg"; + else + continue; + + if (!JFile::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Verein ' . utf8_decode(bereinigterDateiname($v->vereinsname)) . '.' . $ext)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Ein Bild (" . $v->verein_id . ") konnte nicht an die Zielposition kopiert werden."); + + return; + } + $anzahlVereine++; + } + /* + $neue_bilder = JFolder::files($ziel_bilder_pfad); + $zip_dateien = array(); + foreach($neue_bilder as $fn) + array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); + $file = tempnam("tmp", "tar"); + $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; +*/ + + if (class_exists("ZipArchive")) { + $file = tempnam("tmp", "zip"); + $zip = new ZipArchive(); + $zip->open($file, ZipArchive::OVERWRITE); + $neue_bilder = JFolder::files($ziel_bilder_pfad); + foreach ($neue_bilder as $fn) + $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); + $zip->close(); + } + else if (JArchive::getAdapter('zip')) { + $zip_adapter = &JArchive::getAdapter('zip'); + $neue_bilder = JFolder::files($ziel_bilder_pfad); + $zip_dateien = array(); + foreach ($neue_bilder as $fn) { + $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); + } + $file = tempnam("tmp", "zip"); + $zip_adapter->create($file, $zip_dateien, array()); + } + else { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + foreach ($neue_bilder as $fn) + JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $dateiname = "Vereinsbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip"; + $dateiname = bereinigterDateiname($dateiname); + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header("Content-Type: application/zip"); + header("Content-Length: " . filesize($file)); + header("Content-Disposition: attachment; filename=\"" . $dateiname . "\""); + readfile($file); + unlink($file); + die(); +} + +function adminSpielerImportBilderForm() { + $db =& getDatabase(); + + $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(true); + + if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { + redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + $query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*" + . "\n FROM #__sportsmanager_veranstalter"; + if ($beschraenkter_zugriff == 1) + $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); + $query .= "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminSpielerImportBilder($veranstalter, $beschraenkter_zugriff); +} + +function adminSpielerImportBilder() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + + return; + } + + $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); + $bilder_beibehalten = $jinput->get('bilder_beibehalten', 0, 'INT'); + + if ($beschraenkter_zugriff == 1) { + $query = "SELECT DISTINCT veranstalter_id" + . "\n FROM #__sportsmanager_veranstalter" + . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + if (count($veranstalter) == 0) + keinZugriff(); + } + + $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; + if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::create($quelle_bilder_pfad, 0777)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/import' existiert nicht."); + + return; + } + + $alte_bilder = JFolder::files($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + + return; + } + } + $alte_bilder = JFolder::folders($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + + return; + } + } + + if (class_exists("ZipArchive")) { + $zip = new ZipArchive; + if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); + + return; + } + + for ($i = 0; $i < $zip->numFiles; $i++) { + $filename = $zip->getNameIndex($i); + $fileinfo = pathinfo($filename); + copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); + } + $zip->close(); + } + else if (JArchive::getAdapter('zip')) { + $zip_adapter = &JArchive::getAdapter('zip'); + if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); + + return; + } + } + else { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + if (!ini_get('safe_mode')) + set_time_limit(300); + + $anzahlSpieler = 0; + $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler'; + $neue_bilder_alle = JFolder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$'); + foreach ($neue_bilder_alle as $index => $bild) { + $ppos = strrpos($bild, "."); + if ($ppos === false) + continue; + $len = strlen($bild); + $ext = strtolower(substr($bild, $ppos + 1)); + if ($ext != "jpg" && $ext != "png") + continue; + $lpos = strrpos($bild, "("); + $rpos = $lpos !== false ? strpos($bild, ")", $lpos + 1) : false; + $spielernr = ""; + $name = ""; + if ($lpos !== false && $rpos !== false && $rpos - $lpos > 2) { + $spielernr = substr($bild, $lpos + 1, $rpos - $lpos - 1); + } + else if (strpos($bild, ",") !== false) { + $name = substr($bild, 0, $len - 4); + } + else + $spielernr = substr($bild, 0, $len - 4); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler"; + if ($veranstalter_id != 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) + continue; + $spieler_id = $rows[0]->spieler_id; + } + else if (!empty($name)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler"; + if ($veranstalter_id != 0) + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(CONCAT_WS(', ', nachname, vorname), '" . $db->escape($name) . "') = 0" + . "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) + continue; + $spieler_id = $rows[0]->spieler_id; + } + else + continue; + + if ($bilder_beibehalten) { + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.'; + if (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($ziel_pfad . 'png')) + continue; + } + + $quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild; + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.' . $ext; + if (!files_identical($quelle_pfad, $ziel_pfad)) { + bildLoeschen("spieler", $spieler_id); + if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 180, 240, 1)) + continue; + } + $anzahlSpieler++; + unset($neue_bilder_alle[$index]); + } + + $alte_bilder = JFolder::files($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) + JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + $alte_bilder = JFolder::folders($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) + JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + sort($neue_bilder_alle); + + HTML_sportsmanager_admin::adminSpielerImportBilderBericht($anzahlSpieler, $neue_bilder_alle); +} + +function adminVereineImportBilderForm() { + $db =& getDatabase(); + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); + + if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { + redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminVereineImportBilder($veranstalter); +} + +function adminVereineImportBilder() { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine'); + + return; + } + + $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); + $bilder_beibehalten = $jinput->get('bilder_beibehalten', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_spieler READ, #__sportsmanager_verein READ, #__sportsmanager_mitglied_von_verein READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; + if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::create($quelle_bilder_pfad, 0777)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_uebersicht', "Der Ordner 'images/sportsmanager/import' existiert nicht."); + + return; + } + + $alte_bilder = JFolder::files($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + + return; + } + } + $alte_bilder = JFolder::folders($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) { + if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_uebersicht', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + + return; + } + } + + if (class_exists("ZipArchive")) { + $zip = new ZipArchive; + if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); + + return; + } + + for ($i = 0; $i < $zip->numFiles; $i++) { + $filename = $zip->getNameIndex($i); + $fileinfo = pathinfo($filename); + copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); + } + $zip->close(); + } + else if (JArchive::getAdapter('zip')) { + $zip_adapter = &JArchive::getAdapter('zip'); + if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_uebersicht', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); + + return; + } + } + else { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + + return; + } + + if (!ini_get('safe_mode')) + set_time_limit(300); + + $anzahlVereine = 0; + $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine'; + $neue_bilder_alle = JFolder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$'); + foreach ($neue_bilder_alle as $index => $bild) { + $ppos = strrpos($bild, "."); + if ($ppos === false) + continue; + $len = strlen($bild); + $ext = strtolower(substr($bild, $ppos + 1)); + if ($ext != "jpg" && $ext != "png") + continue; + if (substr($bild, 0, 7) != "Verein ") + continue; + $name = substr($bild, 7, $len - 11); + if (empty($name)) + continue; + + $query = "SELECT verein_id" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE NOT ausgetreten AND STRCMP(vereinsname, '" . $db->escape($name) . "') = 0"; + if ($veranstalter_id != 0) + $query .= " AND veranstalter_id = $veranstalter_id"; + $query .= "\n LIMIT 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) + continue; + $verein_id = $rows[0]->verein_id; + + if ($bilder_beibehalten) { + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.'; + if (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($ziel_pfad . 'png')) + continue; + } + + $quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild; + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.' . $ext; + if (!files_identical($quelle_pfad, $ziel_pfad)) { + bildLoeschen("vereine", $verein_id); + if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 240, 240, 0)) + continue; + } + $anzahlVereine++; + unset($neue_bilder_alle[$index]); + } + + $alte_bilder = JFolder::files($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) + JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + $alte_bilder = JFolder::folders($quelle_bilder_pfad); + foreach ($alte_bilder as $fn) + JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + sort($neue_bilder_alle); + + HTML_sportsmanager_admin::adminVereineImportBilderBericht($anzahlVereine, $neue_bilder_alle); +} + +function adminTermine($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (benutzerZugriff("termine_aendern")) + $zugriffsebene = 2; + else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + $filter_jahr = $jinput->get('filter_jahr', 0, 'INT'); + if (empty($filter_jahr)) + $filter_jahr = date('Y'); + $filter_veranstaltung = $jinput->get('filter_veranstaltung', '', 'RAW'); + $filter_zusatz = $jinput->get('filter_zusatz', '', 'RAW'); + $filter_land = $jinput->get('filter_land', '', 'RAW'); + + $query = "SELECT DISTINCT YEAR(erster_tag) AS jahr" + . "\n FROM #__sportsmanager_termin" + . "\n ORDER BY erster_tag DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $jahre = $db->loadObjectList(); + + $jahr_gefunden = false; + foreach ($jahre as $jahr) { + if ($jahr->jahr == $filter_jahr) { + $jahr_gefunden = true; + break; + } + } + if (!$jahr_gefunden && !empty($jahre)) + $filter_jahr = $jahre[0]->jahr; + + $query = "SELECT *, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"; + if (!empty($filter_veranstaltung)) + $query .= " AND bezeichnung = '" . $db->escape($filter_veranstaltung) . "'"; + if (!empty($filter_zusatz)) + $query .= " AND EXISTS(SELECT * FROM #__sportsmanager_termin_zusatz WHERE termin_id = #__sportsmanager_termin.termin_id AND zusatz = '" . $db->escape($filter_zusatz) . "')"; + if (!empty($filter_land)) + $query .= " AND land = '" . $db->escape($filter_land) . "'"; + $query .= "\n GROUP BY termin_id" + . "\n ORDER BY erster_tag, bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $termine = $db->loadObjectList(); + + $query = "SELECT termin_id, termin_symbol_id" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n ORDER BY termin_symbolanzeige_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $terminsymbole = $db->loadObjectList(); + + $termineSymbole = array(); + foreach ($terminsymbole as $termin) { + $termin_id = $termin->termin_id; + $termin_symbol_id = $termin->termin_symbol_id; + if (!isset($termineSymbole[$termin_id])) + $termineSymbole[$termin_id] = array(); + array_push($termineSymbole[$termin_id], $termin_symbol_id); + } + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n WHERE status = 2"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $anzahl_beantragte_termine = $db->loadResult(); + + $query = "SELECT bezeichnung" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN #__sportsmanager_termin_bezeichnung USING (bezeichnung)" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY bezeichnung" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $query = "SELECT bezeichnungszusatz, titel" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n INNER JOIN #__sportsmanager_termin_bezeichnungszusatz ON bezeichnungszusatz = zusatz" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY bezeichnungszusatz" + . "\n ORDER BY IF(titel = '', bezeichnungszusatz, titel)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $zusaetze = $db->loadObjectList(); + + $query = "SELECT land" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN (SELECT land FROM #__sportsmanager_termin_land UNION SELECT bundesland AS land FROM #__sportsmanager_termin_bundesland) AS land_bundesland USING (land)" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY land" + . "\n ORDER BY land"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); + + if (isJson()) { + $jsonexport = array_map( + function ($termin) { + return [ + "bestaetigt" => $termin->bestaetigt, + "erster_tag" => $termin->erster_tag, + "letzter_tag" => $termin->letzter_tag, + "bezeichnung" => $termin->bezeichnung, + "ort" => $termin->ort, + "land" => $termin->land, + "zusaetze" => $termin->zusaetze, + "url" => $termin->url, + "ergebnisse_url" => $termin->ergebnisse_url, + "email" => $termin->email, + ]; + }, $termine); + JSON_sportsmanager::JSON($jsonexport); + } else { + HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $veranstaltungen, $zusaetze, $laender, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase()); + + if (!$admin_uebersicht) { + administrationFooter(); + } + } +} + +function adminEditTermin($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (benutzerZugriff("termine_aendern")) + $zugriffsebene = 2; + else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + if ($zugriffsebene == 0) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $uebersicht = $jinput->get('uebersicht', 0, 'INT'); + $ueberarbeiten = $jinput->get('ueberarbeiten', 0, 'INT'); + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + + if (empty($id)) { + $termin = null; + $terminsymbolanzeige = null; + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Der bisherige Termin existiert nicht mehr."); + + return; + } + $termin = $rows[0]; + + $query = "SELECT termin_symbol_id" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)" + . "\n WHERE termin_id = $termin->termin_id" + . "\n ORDER BY termin_symbolanzeige_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $terminsymbolanzeige = $db->loadObjectList(); + } + + $query = "SELECT termin_symbol_id, symboltitel, status" + . "\n FROM #__sportsmanager_termin_symbol" + . "\n ORDER BY status DESC, symboltitel"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $terminsymbole = $db->loadObjectList(); + + $benachrichtigung_email = ""; + if (empty($id)) { + $aktion_user =& JFactory::getUser(); + if (!empty($aktion_user->id) && !empty($aktion_user->email)) { + $benachrichtigung_email = $aktion_user->email; + } + } + else { + $benachrichtigung_email = $termin->benachrichtigung_email; + } + + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bezeichnungen = $db->loadObjectList(); + + if (!empty($id)) { + $bezeichnung_vorauswahl = null; + } + else { + // Häufigste Bezeichnung suchen + $query = "SELECT bezeichnung" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE DATEDIFF(erster_tag, CURDATE()) >= -365 AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY bezeichnung" + . "\n ORDER BY COUNT(*) DESC" + . "\n LIMIT 1"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $bezeichnung_vorauswahl = count($rows) > 0 ? $rows[0]->bezeichnung : null; + } + + if (empty($id)) { + $zusaetze = null; + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_zusatz" + . "\n LEFT JOIN #__sportsmanager_termin_bezeichnungszusatz ON zusatz = bezeichnungszusatz" + . "\n WHERE termin_id = $id AND ISNULL(termin_bezeichnungszusatz_id)" + . "\n ORDER BY zusatz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $zusaetze = $db->loadObjectList(); + } + + if (empty($id)) { + $query = "SELECT *, NULL AS termin_zusatz_id" + . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" + . "\n ORDER BY bezeichnungszusatz"; + } + else { + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz ON termin_id = $id AND bezeichnungszusatz = zusatz" + . "\n ORDER BY bezeichnungszusatz"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bezeichnungszusaetze = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_termin_bundesland ORDER BY bundesland"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bundeslaender = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte); +} + +function adminSaveTermin($admin_uebersicht) { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (benutzerZugriff("termine_aendern")) + $zugriffsebene = 2; + else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + if ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(); + + $uebersicht = $jinput->get('uebersicht', 0, 'INT'); + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $vorhandener_termin = !empty($id); + $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('erster_tag_jahr', 2000, 'INT'), $jinput->get('erster_tag_monat', 1, 'INT'), $jinput->get('erster_tag_tag', 1, 'INT'))); + $mehrtaegig = $jinput->get('mehrtaegig', 0, 'INT'); + if (!$mehrtaegig) + $letzter_tag = $erster_tag; + else + $letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jinput->get('letzter_tag_jahr', 2000, 'INT'), $jinput->get('letzter_tag_monat', 1, 'INT'), $jinput->get('letzter_tag_tag', 1, 'INT'))); + if (empty($erster_tag) || empty($letzter_tag)) die("Wrong date!"); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $bezeichnungszusaetze = $jinput->get('bezeichnungszusaetze', array(), 'ARRAY'); + $bezeichnungszusatz_benutzerdefiniert = trim($jinput->get('bezeichnungszusatz_benutzerdefiniert', '', 'RAW')); + if (!empty($bezeichnungszusatz_benutzerdefiniert)) + array_push($bezeichnungszusaetze, $bezeichnungszusatz_benutzerdefiniert); + $ort = $db->escape(trim($jinput->get('ort', '', 'RAW'))); + $land = $db->escape(trim($jinput->get('land', '', 'RAW'))); + $beschreibung = $db->escape(trim($jinput->get('beschreibung', '', 'RAW'))); + $info = $jinput->get('info', 0, 'INT'); + $url = $info == 0 ? $db->escape(trim($jinput->get('url', '', 'RAW'))) : ''; + $email = $db->escape(trim($jinput->get('email', '', 'RAW'))); + $ergebnisse_url = $db->escape(trim($jinput->get('ergebnisse_url', '', 'RAW'))); + $bestaetigt = $jinput->get('bestaetigt', 0, 'INT'); + $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); + $ueberarbeiten = $jinput->get('ueberarbeiten', 0, 'INT'); + $ergebnisse_live = $jinput->get('ergebnisse_live', 0, 'INT'); + $benachrichtigung_email = $db->escape(trim(str_replace(';', ',', $jinput->get('benachrichtigung_email', '', 'RAW')))); + + // Sicherstellen, dass Überarbeitenaktionen nur durchgeführt werden wenn tatsächlich ein bestehender Termin dahinter steht und der Benutzer Moderator ist + if ($ueberarbeiten && (empty($id) || $zugriffsebene != 2)) + die ("Wrong id"); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE, #__sportsmanager_termin_zusatz WRITE, #__sportsmanager_termin_symbolanzeige WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $termin_bezug_id = 0; + if (!empty($id)) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf'), "Der bisherige Termin existiert nicht mehr."); + } + $termin = $rows[0]; + $termin_bezug_id = $termin->termin_bezug_id; + } + + $query = "INSERT #__sportsmanager_termin" + . "\n SET termin_bezug_id = '$termin_bezug_id'," + . "\n erster_tag = '$erster_tag'," + . "\n letzter_tag = '$letzter_tag'," + . "\n bezeichnung = '$bezeichnung'," + . "\n beschreibung = '$beschreibung'," + . "\n ort = '$ort'," + . "\n land = '$land'," + . "\n url = '$url'," + . "\n email = '$email'," + . "\n ergebnisse_url = '$ergebnisse_url'," + . "\n ergebnisse_live = '$ergebnisse_live'," + . "\n bestaetigt = '$bestaetigt'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $neuer_termin_id = $db->insertid(); + + foreach ($bezeichnungszusaetze as $bezeichnungszusatz) { + $query = "INSERT #__sportsmanager_termin_zusatz" + . "\n SET termin_id = $neuer_termin_id," + . "\n zusatz = '" . $db->escape($bezeichnungszusatz) . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + for ($i = 0; $i <= 5; $i++) { + $symbol_id = JRequest::getInt('symbol_id_' . $i, 0); + if ($symbol_id != 0) { + $query = "INSERT #__sportsmanager_termin_symbolanzeige" + . "\n SET termin_id = $neuer_termin_id," + . "\n termin_symbol_id = $symbol_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + if (!$vorhandener_termin) { + $query = "UPDATE #__sportsmanager_termin" + . "\n SET termin_bezug_id = $neuer_termin_id" + . "\n WHERE termin_id = $neuer_termin_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + $dokument_kopieren_gescheitert = 0; + $info_dokument = $_FILES['info_dokument']; + if ($info == 1 && !empty($id)) { + $dokumente = JFolder::files($bilder_pfad, '^' . $id . ' '); + if (empty($dokumente)) { + $dokument_kopieren_gescheitert = 2; + } + else { + $info_dokument_dateiname = substr($dokumente[0], strlen((string) $id) + 1); + $quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $dokumente[0]; + $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname; + if (!JFile::copy($quelle_pfad, $ziel_pfad)) + $dokument_kopieren_gescheitert = 2; + } + } + else if ($info == 2 && isset($info_dokument) && !$info_dokument['error']) { + $info_dokument_dateiname = JFile::makeSafe($info_dokument["name"]); + if ($info_dokument["size"] > 8388608) { + $dokument_kopieren_gescheitert = 1; + } + else { + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname; + if (!JFile::upload($info_dokument["tmp_name"], $ziel_pfad)) + $dokument_kopieren_gescheitert = 2; + } + } + + if (!empty($dokument_kopieren_gescheitert)) { + $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_id = $neuer_termin_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_termin_zusatz WHERE termin_id = $neuer_termin_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_termin WHERE termin_id = $neuer_termin_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der Termin wurde nicht erstellt weil der Anhang " . ($dokument_kopieren_gescheitert == 1 ? "zu groß ist." : "nicht kopiert werden konnte.")); + + return; + } + + if ($vorhandener_termin && $zugriffsebene != 1) { + $query = "SELECT DISTINCT termin_id" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + foreach ($rows as $row) { + $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); + foreach ($dokumente as $dokument) + JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } + + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n SET status = 1" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $user_id = JFactory::getUser()->id; + $query = "INSERT #__sportsmanager_termin_aktion" + . "\n SET termin_id = $neuer_termin_id," + . "\n typ = '" . ($vorhandener_termin ? 1 : 0) . "'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen + . "\n benachrichtigung_email = '$benachrichtigung_email'," + . "\n aktion_user_id = '" . ($ueberarbeiten ? $termin->aktion_user_id : $user_id) . "'," + . "\n aktion_zeitpunkt = " . ($ueberarbeiten ? ("'$termin->aktion_zeitpunkt'") : "NOW()") . "," + . "\n aktion_kommentar = '" . ($ueberarbeiten ? $db->escape($termin->aktion_kommentar) : $kommentar) . "'," + . "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . "," + . "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . "," + . "\n moderation_kommentar = '" . ($ueberarbeiten ? $kommentar : "") . "'," + . "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $termin_aktion_id = $db->insertid(); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten); + + if ($zugriffsebene == 1) { + HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht); + } + else { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + } +} + +function adminRemoveTerminForm($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (benutzerZugriff("termine_aendern")) + $zugriffsebene = 2; + else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + if ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr."); + } + $terminaktion = $rows[0]; + + HTML_sportsmanager_admin::adminRemoveTermin($terminaktion, $nur_beantragte, $zugriffsebene, $admin_uebersicht); +} + +function adminRemoveTermin($admin_uebersicht) { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (benutzerZugriff("termine_aendern")) + $zugriffsebene = 2; + else if (einstellungswert("termine_beantragen") == "1" && !JFactory::getUser()->guest && !isExternalDatabase()) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + if ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1);"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr."); + } + $termin = $rows[0]; + $termin_bezug_id = $termin->termin_bezug_id; + + if ($zugriffsebene != 1) { + $query = "SELECT DISTINCT termin_id" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + foreach ($rows as $row) { + $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); + foreach ($dokumente as $dokument) + JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } + + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n SET status = 1" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $user_id = JFactory::getUser()->id; + $query = "INSERT #__sportsmanager_termin_aktion" + . "\n SET termin_id = $id," + . "\n typ = '2'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen + . "\n aktion_user_id = '$user_id'," + . "\n aktion_zeitpunkt = NOW()," + . "\n aktion_kommentar = '$kommentar'," + . "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . "," + . "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . "," + . "\n moderation_kommentar = ''," + . "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $termin_aktion_id = $db->insertid(); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + termineEmailBenachrichtigung($termin_aktion_id); + + if ($zugriffsebene == 1) { + HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht); + } + else { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); + } +} + +// $aktion = 0: Beantragt, 1: ... +function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false) { + $db =& getDatabase(); + $app = &JFactory::getApplication(); + + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" + . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" + . "\n WHERE termin_aktion_id = $termin_aktion_id" + . "\n GROUP BY #__sportsmanager_termin.termin_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) return false; + $terminaktion = $rows[0]; + + $benachrichtigung_moderatoren_informieren = array(); + $benachrichtigung_moderatoren_aendern = array(); + $query = "SELECT DISTINCT email, IF(EXISTS(SELECT * FROM #__sportsmanager_moderator_zugriff AS m2 WHERE zugriff = 'termine_aendern' AND m2.moderator_id = #__sportsmanager_moderator_zugriff.moderator_id), 1, 0) AS termine_aendern" + . "\n FROM #__sportsmanager_moderator" + . "\n INNER JOIN #__sportsmanager_moderator_zugriff USING (moderator_id)" + . "\n INNER JOIN #__users ON moderator_user_id = id" + . "\n WHERE zugriff = 'termine_benachrichtigung'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + foreach ($rows as $row) { + if ($row->termine_aendern) + array_push($benachrichtigung_moderatoren_aendern, $row->email); + else + array_push($benachrichtigung_moderatoren_informieren, $row->email); + } + + $benachrichtigung_benutzer = array(); + $aktion_user =& JFactory::getUser($terminaktion->aktion_user_id); + if (($terminaktion->status == 2 && !empty($aktion_user->id) && !empty($aktion_user->email)) || ($terminaktion->status != 2 && !empty($aktion_user->id) && !empty($aktion_user->email) && ($terminaktion->aktion_user_id != $terminaktion->moderation_user_id || $terminaktion->aktion_zeitpunkt != $terminaktion->moderation_zeitpunkt))) + array_push($benachrichtigung_benutzer, $aktion_user->email); + $benachrichtigung_emails = explode(",", $terminaktion->benachrichtigung_email); + $benachrichtigung_alle_low = array_map('strtolower', array_merge($benachrichtigung_benutzer, $benachrichtigung_moderatoren_aendern, $benachrichtigung_moderatoren_informieren)); + foreach ($benachrichtigung_emails as $email) { + $email_trimmed = trim($email); + if (!in_array(strtolower($email_trimmed), $benachrichtigung_alle_low)) + array_push($benachrichtigung_benutzer, $email_trimmed); + } + + $termin_beschreibung = "\r\n" + . "Datum:\r\n" + . "" . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true) . ($terminaktion->bestaetigt ? "" : " (in Planung)") . "\r\n" + . "\r\n" + . "\r\n" + . "Veranstaltung:\r\n" + . "" . htmlentities_utf8($terminaktion->bezeichnung) . "\r\n" + . "\r\n"; + if (!empty($terminaktion->zusaetze)) { + $termin_beschreibung .= "\r\n" + . "Zusätze:\r\n" + . "" . htmlentities_utf8($terminaktion->zusaetze) . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->ort)) { + $termin_beschreibung .= "\r\n" + . "Ort:\r\n" + . "" . htmlentities_utf8($terminaktion->ort) . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->land)) { + $termin_beschreibung .= "\r\n" + . "Land:\r\n" + . "" . htmlentities_utf8($terminaktion->land) . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->beschreibung)) { + $termin_beschreibung .= "\r\n" + . "Beschreibung:\r\n" + . "" . htmlentities_utf8($terminaktion->beschreibung) . "\r\n" + . "\r\n"; + } + $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); + if ($info_dokument_dateiname !== false) { + $termin_beschreibung .= "\r\n" + . "Weitere Informationen:\r\n" + . "termin_id, -1) . "\" target=\"_blank\">" . htmlentities_utf8(NichtLeererString($info_dokument_dateiname)) . "\r\n" + . "\r\n"; + } + else if (!empty($terminaktion->url)) { + if (strpos($terminaktion->url, "://") === false) { + $termin_url_anzeige = $terminaktion->url; + $termin_url = "http://" . $terminaktion->url; + } + else { + $termin_url_anzeige = substr($terminaktion->url, 0, 7) == "http://" ? substr($terminaktion->url, 7) : $terminaktion->url; + $termin_url = $terminaktion->url; + } + $termin_beschreibung .= "\r\n" + . "Weitere Informationen:\r\n" + . "" . htmlentities_utf8($termin_url_anzeige) . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->email)) { + $termin_beschreibung .= "\r\n" + . "E-Mail öffentlich:\r\n" + . "email) . "\">" . htmlentities_utf8($terminaktion->email) . "\r\n" + . "\r\n"; + } + if (!empty($benachrichtigung_emails)) { + $termin_beschreibung .= "\r\n" + . "E-Mail bei Änderungen:\r\n" + . ""; + foreach ($benachrichtigung_emails as $index => $email) { + $email_trimmed = trim($email); + $termin_beschreibung .= ($index > 0 ? ", " : "") . "" . htmlentities_utf8($email_trimmed) . ""; + } + $termin_beschreibung .= "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->ergebnisse_url)) { + if (strpos($terminaktion->ergebnisse_url, "://") === false) { + $termin_url_anzeige = $terminaktion->ergebnisse_url; + $termin_url = "http://" . $terminaktion->ergebnisse_url; + } + else { + $termin_url_anzeige = substr($terminaktion->ergebnisse_url, 0, 7) == "http://" ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; + $termin_url = $terminaktion->ergebnisse_url; + } + $termin_beschreibung .= "\r\n" + . "" . ($terminaktion->ergebnisse_live ? "Live-" : "") . "Ergebnisse:\r\n" + . "" . htmlentities_utf8($termin_url_anzeige) . "\r\n" + . "\r\n"; + } + + $status = array(0 => "Akzeptiert", 1 => "Archiviert", 2 => "Beantragt", 3 => "Abgelehnt"); + $aktion = array(0 => "Hinzufügen", 1 => "Ändern", 2 => "Entfernen"); + if (empty($terminaktion->aktion_user_email)) + $aktion_user = htmlentities_utf8($terminaktion->aktion_user_name); + else + $aktion_user = "aktion_user_email) . "\">" . htmlentities_utf8($terminaktion->aktion_user_name) . ""; + if (empty($terminaktion->moderation_zeitpunkt)) + $moderation_user = ""; + else if (empty($terminaktion->aktion_user_email)) + $moderation_user = htmlentities_utf8($terminaktion->moderation_user_name); + else + $moderation_user = "moderation_user_email) . "\">" . htmlentities_utf8($terminaktion->moderation_user_name) . ""; + $termin_moderationsstatus = "\r\n" + . " \r\n" + . "\r\n" + . "\r\n" + . "Status:\r\n" + . "" . htmlentities_utf8($status[$terminaktion->status]) . "\r\n" + . "\r\n" + . "\r\n" + . "Aktionstyp:\r\n" + . "" . htmlentities_utf8($aktion[$terminaktion->typ]) . "\r\n" + . "\r\n" + . "\r\n" + . "Erstellung:\r\n" + . "" . FormatiertesDatum($terminaktion->aktion_zeitpunkt, true, false) . " von " . $aktion_user . "\r\n" + . "\r\n"; + if (!empty($terminaktion->aktion_kommentar)) { + $termin_moderationsstatus .= "\r\n" + . "Erstellerkommentar:\r\n" + . "" . nl2br(htmlentities_utf8($terminaktion->aktion_kommentar)) . "\r\n" + . "\r\n"; + } + $termin_moderationsstatus .= "\r\n" + . "Moderation:\r\n" + . "" . (empty($terminaktion->moderation_zeitpunkt) ? "Nicht erfolgt" : (FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . $moderation_user)) . "\r\n" + . "\r\n"; + if (!empty($terminaktion->moderation_kommentar)) { + $termin_moderationsstatus .= "\r\n" + . "Moderatorkommentar:\r\n" + . "" . nl2br(htmlentities_utf8($terminaktion->moderation_kommentar)) . "\r\n" + . "\r\n"; + } + + $from = $app->getCfg('mailfrom'); + $fromname = $app->getCfg('fromname'); + $mode = 1; + $cc = null; + $bcc = null; + $attachment = null; + $replyto = null; + $replytoname = null; + if ($terminaktion->status == 2) { + $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); + $body = "

Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde beantragt und wird nun von den Moderatoren geprüft. Sobald der Termin bearbeitet wurde, wird eine E-Mail-Benachrichtigung verschickt.

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

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

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

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

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

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

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

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

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

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

\r\n"; + foreach ($benachrichtigung_moderatoren_aendern as $email) + JFactory::getMailer()->sendMail($from, $fromname, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname); +} + +function adminTerminModerieren($admin_uebersicht) { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern") || isExternalDatabase()) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + $uebersicht = $jinput->get('uebersicht', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + + return; + } + + if ($jinput->get('ueberarbeiten', false, 'BOOL')) { + $termin_id = $jinput->get('termin_id', 0, 'INT'); + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termin_edit&ueberarbeiten=1&id=' . $termin_id . ($nur_beantragte ? '&nur_beantragte=1' : '')); + + return; + } + + $akzeptieren = $jinput->get('akzeptieren', false, 'BOOL'); + $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_aktion WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_aktion_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $terminaktion = $rows[0]; + $termin_bezug_id = $terminaktion->termin_bezug_id; + + if ($terminaktion->status != 2) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Die Moderation wurde nicht umgesetzt weil der Termin nicht mehr im Beantragt-Status war."); + } + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + if ($akzeptieren) { + $query = "SELECT DISTINCT termin_id" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + foreach ($rows as $row) { + $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); + foreach ($dokumente as $dokument) + JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } + + if ($terminaktion->typ == 2) { + $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); + foreach ($dokumente as $dokument) + JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } + + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n SET status = 1" + . "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + else { + if ($terminaktion->typ != 2) { + $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); + foreach ($dokumente as $dokument) + JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } + } + + $user_id = JFactory::getUser()->id; + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n INNER JOIN #__sportsmanager_termin USING (termin_id)" + . "\n SET status = " . ($akzeptieren ? 0 : 3) . "," + . "\n moderation_user_id = $user_id," + . "\n moderation_zeitpunkt = NOW()," + . "\n moderation_kommentar = '$kommentar'" + . "\n WHERE termin_aktion_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + termineEmailBenachrichtigung($id); + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); +} + +function adminTermineVerlauf($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + + if ($nur_beantragte) { + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n LEFT JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" + . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" + . "\n WHERE status = 2" + . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" + . "\n ORDER BY aktion_zeitpunkt, bezeichnung" + . "\n LIMIT 1000"; + } + else { + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" + . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" + . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" + . "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung" + . "\n LIMIT 1000"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $terminaktionen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineVerlauf($terminaktionen, $nur_beantragte, $admin_uebersicht); +} + +function terminDokument() { + $db =& getDatabase(); + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $bezug_id = $jinput->get('bezug_id', 0, 'INT'); + + if (benutzerZugriff("termine_aendern") || benutzerZugriff("termine_benachrichtigung")) + $zugriffsebene = 1; + else + $zugriffsebene = 0; + + if (!empty($bezug_id)) { + $query = "SELECT termin_id" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_bezug_id = $bezug_id AND status = 0 AND (typ = 0 OR typ = 1)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $termin_vorhanden = count($rows) > 0; + if ($termin_vorhanden) + $id = $rows[0]->termin_id; + } + else { + $query = "SELECT IF (EXISTS (SELECT *" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_id = $id" . ($zugriffsebene == 0 ? " AND status = 0 AND (typ = 0 OR typ = 1)" : "") . "), 1, 0)"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $termin_vorhanden = $db->loadResult(); + } + + if (!$termin_vorhanden) + keinZugriff(true); + + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; + $dokumente = JFolder::files($pfad, '^' . $id . ' '); + + if (empty($dokumente)) { + redirectSportsManagerURL(null, "Der Anhang existiert nicht mehr."); + + return; + } + + $extension = strtolower(JFile::getExt($dokumente[0])); + if ($extension == "pdf") + $mm_type = "application/pdf"; + else + $mm_type = "application/octet-stream"; + + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header("Pragma: public"); + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Cache-Control: public"); + header("Content-Description: File Transfer"); + header("Content-Type: " . $mm_type); + header("Content-Length: " . (string) (filesize($pfad . DIRECTORY_SEPARATOR . $dokumente[0]))); + header('Content-Disposition: inline; filename="' . substr($dokumente[0], strlen((string) $id) + 1) . '"'); + header("Content-Transfer-Encoding: binary\n"); + + readfile($pfad . DIRECTORY_SEPARATOR . $dokumente[0]); + + exit(); +} + +function adminTerminDetails($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + $uebersicht = $jinput->get('uebersicht', 0, 'INT'); + + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" + . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" + . "\n WHERE termin_aktion_id = $id" + . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $terminaktion = $rows[0]; + + $query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)" + . "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id" + . "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id" + . "\n WHERE termin_bezug_id = $terminaktion->termin_bezug_id" + . "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id" + . "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $terminaktionen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, isExternalDatabase()); +} + +function adminTermineBezeichnungen($admin_uebersicht) { + $db =& getDatabase(); + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bezeichnung" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bezeichnungen = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineBezeichnungen($bezeichnungen, $admin_uebersicht); +} + +function adminEditTermineBezeichnung($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if (empty($id)) { + $bezeichnung = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bezeichnung = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht); +} + +function adminSaveTermineBezeichnung($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bezeichnung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (!empty($id) && $termine_umbenennen) { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $alte_bezeichnung = $db->escape($rows[0]->bezeichnung); + + $query = "UPDATE #__sportsmanager_termin" + . "\n SET bezeichnung = '$bezeichnung'" + . "\n WHERE bezeichnung = '$alte_bezeichnung'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE bezeichnung = '$bezeichnung' AND termin_bezeichnung_id != $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // Datenbankeintrag verwerfen, falls Bezeichnung schon existiert + if (count($rows) > 0) { + if (!empty($id)) { + $query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (empty($id)) { + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '$bezeichnung'"; + } + else { + $query = "UPDATE #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '$bezeichnung'" + . "\n WHERE termin_bezeichnung_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); +} + +function adminRemoveTermineBezeichnung($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); +} + +function adminTermineBezeichnungszusaetze($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" + . "\n ORDER BY bezeichnungszusatz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bezeichnungszusaetze = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineBezeichnungszusaetze($bezeichnungszusaetze, $admin_uebersicht); +} + +function adminEditTermineBezeichnungszusatz($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if (empty($id)) { + $bezeichnungszusatz = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bezeichnungszusatz = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht); +} + +function adminSaveTermineBezeichnungszusatz($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bezeichnungszusatz = $db->escape(trim($jinput->get('bezeichnungszusatz', '', 'RAW'))); + $titel = $db->escape(trim($jinput->get('titel', '', 'RAW'))); + $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bezeichnungszusatz WRITE, #__sportsmanager_termin_zusatz WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (!empty($id) && $termine_umbenennen) { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $alter_bezeichnungszusatz = $db->escape($rows[0]->bezeichnungszusatz); + + $query = "UPDATE #__sportsmanager_termin_zusatz" + . "\n SET zusatz = '$bezeichnungszusatz'" + . "\n WHERE zusatz = '$alter_bezeichnungszusatz'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE bezeichnungszusatz = '$bezeichnungszusatz' AND termin_bezeichnungszusatz_id != $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // Datenbankeintrag verwerfen, falls Bezeichnungszusatz schon existiert + if (count($rows) > 0) { + if (!empty($id)) { + $query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (empty($id)) { + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = '$bezeichnungszusatz'," + . "\n titel = '$titel'"; + } + else { + $query = "UPDATE #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = '$bezeichnungszusatz'," + . "\n titel = '$titel'" + . "\n WHERE termin_bezeichnungszusatz_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); +} + +function adminRemoveTermineBezeichnungszusatz($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); +} + +function adminTermineBundeslaender($admin_uebersicht) { + $db =& getDatabase(); + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bundesland" + . "\n ORDER BY bundesland"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $bundeslaender = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineBundeslaender($bundeslaender, $admin_uebersicht); +} + +function adminEditTermineBundesland($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if (empty($id)) { + $bundesland = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bundesland = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTermineBundesland($bundesland, $admin_uebersicht); +} + +function adminSaveTermineBundesland($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $bundesland = $db->escape(trim($jinput->get('bundesland', '', 'RAW'))); + $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_bundesland WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($termine_umbenennen) { + $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $altes_bundesland = $db->escape($rows[0]->bundesland); + + $query = "UPDATE #__sportsmanager_termin" + . "\n SET land = '$bundesland'" + . "\n WHERE land = '$altes_bundesland'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE bundesland = '$bundesland' AND termin_bundesland_id != $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // Datenbankeintrag verwerfen, falls Bundesland schon existiert + if (count($rows) > 0) { + if (!empty($id)) { + $query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (empty($id)) { + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = '$bundesland'"; + } + else { + $query = "UPDATE #__sportsmanager_termin_bundesland" + . "\n SET bundesland = '$bundesland'" + . "\n WHERE termin_bundesland_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); +} + +function adminRemoveTermineBundesland($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); +} + +function adminTermineLaender($admin_uebersicht) { + $db =& getDatabase(); + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_land" + . "\n ORDER BY land"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineLaender($laender, $admin_uebersicht); +} + +function adminEditTermineLand($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if (empty($id)) { + $land = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $land = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTermineLand($land, $admin_uebersicht); +} + +function adminSaveTermineLand($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $land = $db->escape(trim($jinput->get('land', '', 'RAW'))); + $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_termin WRITE, #__sportsmanager_termin_land WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($termine_umbenennen) { + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $altes_bundesland = $db->escape($rows[0]->bundesland); + + $query = "UPDATE #__sportsmanager_termin" + . "\n SET land = '$land'" + . "\n WHERE land = '$altes_land'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE land = '$land' AND termin_land_id != $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // Datenbankeintrag verwerfen, falls Bundesland schon existiert + if (count($rows) > 0) { + if (!empty($id)) { + $query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + if (empty($id)) { + $query = "INSERT #__sportsmanager_termin_land" + . "\n SET land = '$land'"; + } + else { + $query = "UPDATE #__sportsmanager_termin_land" + . "\n SET land = '$land'" + . "\n WHERE termin_land_id = $id"; + } + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); +} + +function adminRemoveTermineLand($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); +} + +function adminTermineSymbole($admin_uebersicht) { + $db =& getDatabase(); + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_symbol" + . "\n ORDER BY status DESC, symboltitel"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $symbole = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminTermineSymbole($symbole, $admin_uebersicht); +} + +function adminEditTermineSymbol($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + if (empty($id)) { + $symbol = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $symbol = $rows[0]; + } + + HTML_sportsmanager_admin::adminEditTermineSymbol($symbol, $admin_uebersicht); +} + +function adminSaveTermineSymbol($admin_uebersicht) { + $db =& getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + if (JRequest::getBool('cancel')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); + + return; + } + + $id = $jinput->get('id', 0, 'INT'); + $symboltitel = $db->escape(trim($jinput->get('symboltitel', '', 'RAW'))); + $bildbeibehalten = $jinput->get('bildbeibehalten', 0, 'INT'); + $status = $jinput->get('status', 0, 'INT'); + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_termin_symbol (symboltitel,status)" + . "\n VALUES ('$symboltitel', '$status');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_termin_symbol" + . "\n SET symboltitel = '$symboltitel', " + . "\n status = '$status'" + . "\n WHERE termin_symbol_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + if ($bildbeibehalten == 0) { + bildLoeschen('terminsymbole', $id); + + if (!empty($_FILES["bild"]["tmp_name"])) { + if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { + $size = getimagesize($_FILES["bild"]["tmp_name"]); + if ($size == false + || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) + || ($size[0] > 8192 || $size[1] > 8192)) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); + + return; + } + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole'; + if (!JFile::copy($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); + + return; + } + } + } + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); +} + +function adminRemoveTermineSymbol($admin_uebersicht) { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_termin_symbolanzeige WRITE, #__sportsmanager_termin_symbol WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_symbol_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + bildLoeschen("terminsymbole", $id); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); +} + +function adminEditIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $vorlage = $jinput->get('vorlage', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern")) + keinZugriff(true); + + if ($id == 0) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 6 ORDER BY nummer"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + if (empty($id)) { + $berechtigt_fuer_individualwettbewerb = array(); + } + else { + $query = "SELECT #__sportsmanager_berechtigt_fuer_individualwettbewerb.* FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb, #__users WHERE berechtigt_user_id = id AND berechtigt_individualwettbewerb_id = $id ORDER BY username, name"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_individualwettbewerb = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage); +} + +function adminSaveIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("individualwettbewerbe_aendern")) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $vorlage = $jinput->get('vorlage', 0, 'INT'); + $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); + $bezeichnung = $db->escape(trim($jinput->get('bezeichnung', '', 'RAW'))); + $saison_id = $jinput->get('saison_id', 0, 'INT'); + $saetze = $jinput->get('saetze', 0, 'INT'); + $tore = $jinput->get('tore', 0, 'INT'); + $tabellenwertung = $jinput->get('tabellenwertung', 0, 'INT'); + $elo_wertung = $jinput->get('elo_wertung', 0, 'INT'); + $status = $jinput->get('status', 0, 'INT'); + $reihenfolge = $jinput->get('reihenfolge', 0, 'INT'); + $kategorie = $jinput->get('kategorie', 0, 'INT'); + $berechtigt_fuer_individualwettbewerb_user_ids = array(); + for ($i = 1; $i <= 6; $i++) { + $berechtigt_user_id = $jinput->get('berechtigt_fuer_individualwettbewerb_user_' . $i . '_id', 0, 'INT'); + if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids)) + array_push($berechtigt_fuer_individualwettbewerb_user_ids, $berechtigt_user_id); + } + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_berechtigt_fuer_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_platzierung READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $elo_aktualisieren = false; + if ($vorlage) { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $query = "INSERT #__sportsmanager_individualwettbewerb" + . "\n SET veranstalter_id = '$veranstalterid'," + . "\n bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," + . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," + . "\n tabellenwertung = '$tabellenwertung'," + . "\n elo_wertung = '$elo_wertung'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + + foreach ($rows as $row) { + $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET individualwettbewerb_id = '$id'," + . "\n spieler_id = '" . $row->spieler_id . "'," + . "\n platz = '" . $row->platz . "'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else if ($id == 0) { + $query = "INSERT #__sportsmanager_individualwettbewerb" + . "\n SET veranstalter_id = '$veranstalterid'," + . "\n bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," + . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," + . "\n tabellenwertung = '$tabellenwertung'," + . "\n elo_wertung = '$elo_wertung'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + + return; + } + $row = $rows[0]; + + $query = "UPDATE #__sportsmanager_individualwettbewerb" + . "\n SET veranstalter_id = '$veranstalterid'," + . "\n bezeichnung = '$bezeichnung'," + . "\n saison_id = '$saison_id'," + . "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . "," + . "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . "," + . "\n tabellenwertung = '$tabellenwertung'," + . "\n elo_wertung = '$elo_wertung'," + . "\n status = '$status'," + . "\n reihenfolge = '$reihenfolge'," + . "\n kategorie = '$kategorie'" + . "\n WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0)) + $elo_aktualisieren = true; + } + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; + if (!empty($berechtigt_fuer_individualwettbewerb_user_ids)) + $query .= " AND berechtigt_user_id NOT IN (" . implode($berechtigt_fuer_individualwettbewerb_user_ids, ", ") . ")"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $index = array_search($row->berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids); + if ($index !== false) { + unset($berechtigt_fuer_individualwettbewerb_user_ids[$index]); + } + } + + foreach ($berechtigt_fuer_individualwettbewerb_user_ids as $berechtigt_user_id) { + $query = "INSERT INTO #__sportsmanager_berechtigt_fuer_individualwettbewerb (berechtigt_user_id, berechtigt_individualwettbewerb_id) VALUES ('$berechtigt_user_id', '$id');"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + + individualwettbewerbTabelleAktualisieren($id); + spielerstatistikAktualisieren(0, 0, $id); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function individualwettbewerbTabelleAktualisieren($id = null) { + $db =& getDatabase(); + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel READ, #__sportsmanager_individualwettbewerb_platzierung WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung READ;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb"; + if (!empty($id)) + $query .= "\n WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + foreach ($individualwettbewerbe as $individualwettbewerb) { + $individualwettbewerb_id = $individualwettbewerb->individualwettbewerb_id; + if ($individualwettbewerb->tabellenwertung == 0) { + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $individualwettbewerb_id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + continue; + } + + $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" + . "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + array_push($platzierungen, $ausgangsplatzierung->spieler_id); + + foreach ($spiele as $spiel) { + if ($spiel->ergebnis == 0) + continue; + if ($spiel->heim_spieler_2_id != null) // Bis auf Weiteres keine Doppelspiele für Tabelle berücksichtigen + continue; + $sieger_spieler_id = $spiel->ergebnis == 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id; + $verlierer_spieler_id = $spiel->ergebnis != 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id; + + if (!in_array($verlierer_spieler_id, $platzierungen)) + array_push($platzierungen, $verlierer_spieler_id); + + $sieger_platzierung = array_search($sieger_spieler_id, $platzierungen); + $verlierer_platzierung = array_search($verlierer_spieler_id, $platzierungen); + if ($sieger_platzierung !== false) { + if ($sieger_platzierung < $verlierer_platzierung) + continue; + array_splice($platzierungen, $sieger_platzierung, 1); + } + array_splice($platzierungen, $verlierer_platzierung, 0, $sieger_spieler_id); + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $platzierungen_vorhanden = $db->loadObjectList(); + + $platzierungen_uebrig = $platzierungen; + foreach ($platzierungen_vorhanden as $platzierung_vorhanden) { + $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); + if ($index !== false) { + $platz = $index + 1; + if ($platzierung_vorhanden->platz != $platz) { + $query = "UPDATE #__sportsmanager_individualwettbewerb_platzierung" + . "\n SET platz = '$platz'" + . "\n WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); + unset($platzierungen_uebrig[$index_uebrig]); + } + else { + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + foreach ($platzierungen_uebrig as $platzierung_uebrig) { + $index = array_search($platzierung_uebrig, $platzierungen); + $platz = $index + 1; + $query = "INSERT #__sportsmanager_individualwettbewerb_platzierung" + . "\n SET individualwettbewerb_id = '$individualwettbewerb_id'," + . "\n spieler_id = '$platzierung_uebrig'," + . "\n platz = '$platz'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } +} + +function adminRemoveIndividualwettbewerb() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("individualwettbewerbe_aendern")) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb WRITE, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_individualwettbewerb_platzierung WRITE, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_berechtigt_fuer_individualwettbewerb WRITE;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + + return; + } + $row = $rows[0]; + + $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); + + $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + wannGespieltAktualisieren(); + if ($row->elo_wertung && $aktualisieren_ab_datum != null) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, 0, $id); + + redirectSportsManagerURL('&task=admin_uebersicht'); +} + +function adminIndividualwettbewerbSpiele() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(true); + + $query = "SELECT *," + . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname," + . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname," + . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname," + . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n LEFT JOIN #__sportsmanager_spieler AS theim1 ON theim1.spieler_id = heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS theim2 ON theim2.spieler_id = heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS tgast1 ON tgast1.spieler_id = gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS tgast2 ON tgast2.spieler_id = gast_spieler_2_id" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + if ($row->tabellenwertung) { + $query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY platz, nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + } + else { + $ausgangsplatzierungen = null; + } + + HTML_sportsmanager_admin::adminIndividualwettbewerbSpiele($row, $spiele, $ausgangsplatzierungen); +} + +function adminEditIndividualwettbewerbSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); + + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; + + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(true); + + $id = $jinput->get('id', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'RAW'); + + if (empty($id)) { + $row = null; + $spiel_spieler_ids = null; + } + else { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + + $spiel_spieler_ids = array($row->heim_spieler_1_id, $row->gast_spieler_1_id); + if ($row->heim_spieler_2_id != null) + array_push($spiel_spieler_ids, $row->heim_spieler_2_id, $row->gast_spieler_2_id); + $typ = $row->heim_spieler_2_id != null ? "doppel" : "einzel"; + } + + $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode($spiel_spieler_ids, ", ") . ")") : "") + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditIndividualwettbewerbSpiel($row, $typ, $individualwettbewerb, $spieler); +} + +function adminSaveIndividualwettbewerbSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'RAW'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . $id); + + return; + } + + $datum = normalisiertesDatum($jinput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jinput->get('datum_jahr', 0, 'INT'), $jinput->get('datum_monat', 0, 'INT'), $jinput->get('datum_tag', 0, 'INT'))); + $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jinput->get('uhrzeit_stunden', 0, 'INT'), $jinput->get('uhrzeit_minuten', 0, 'INT'))); + $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); + + if ($zeitpunkt == null) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . id, "Es muss ein gültiges Datum angegeben werden."); + + return; + } + + $ergebnis_punkte_heim = $jinput->get('ergebnis_punkte_heim', array(), 'ARRAY'); + $ergebnis_punkte_gast = $jinput->get('ergebnis_punkte_gast', array(), 'ARRAY'); + + $ergebnis_detailliert = ""; + $saetze_heim = 0; + $saetze_gast = 0; + for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) { + if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i]))) + continue; + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i]; + $punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i]; + if ($punkte_heim > $punkte_gast) + $saetze_heim++; + else if ($punkte_gast > $punkte_heim) + $saetze_gast++; + $ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast; + } + $ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0); + + $heim_spieler_1_id = $jinput->get('heim_spieler_1_id', 0, 'INT'); + $heim_spieler_2_id = $jinput->get('heim_spieler_2_id', 0, 'INT'); + $gast_spieler_1_id = $jinput->get('gast_spieler_1_id', 0, 'INT'); + $gast_spieler_2_id = $jinput->get('gast_spieler_2_id', 0, 'INT'); + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel WRITE, #__sportsmanager_spieler READ"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + if (empty($id)) + $spiel = null; + else { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $spiel = $rows[0]; + + $typ = $spiel->heim_spieler_2_id != null ? "doppel" : "einzel"; + } + + if (empty($heim_spieler_1_id) || empty($gast_spieler_1_id) || ($typ != "einzel" && (empty($heim_spieler_2_id) || empty($gast_spieler_2_id)))) { + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . id, "Es müssen Spieler ausgewählt werden."); + + return; + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; + + $elo_aktualisieren = $individualwettbewerb->elo_wertung; + $aktualisieren_ab_datum = $zeitpunkt; + + if ($id == 0) { + $query = "INSERT #__sportsmanager_individualwettbewerb_spiel" + . "\n SET individualwettbewerb_id = $individualwettbewerbid," + . "\n zeitpunkt = '$zeitpunkt'," + . "\n heim_spieler_1_id = '$heim_spieler_1_id'," + . "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . "," + . "\n gast_spieler_1_id = '$gast_spieler_1_id'," + . "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . "," + . "\n ergebnis = '$ergebnis'," + . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'"); + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $id = $db->insertid(); + } + else { + $query = "UPDATE #__sportsmanager_individualwettbewerb_spiel" + . "\n SET zeitpunkt = '$zeitpunkt'," + . "\n heim_spieler_1_id = '$heim_spieler_1_id'," + . "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . "," + . "\n gast_spieler_1_id = '$gast_spieler_1_id'," + . "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . "," + . "\n ergebnis = '$ergebnis'," + . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") + . "\n WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + individualwettbewerbTabelleAktualisieren($individualwettbewerbid); + + wannGespieltAktualisieren(); + if ($elo_aktualisieren) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, 0, $individualwettbewerbid); + + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#sid' . $id); +} + +function adminRemoveIndividualwettbewerbSpiel() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_spiel WRITE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $spiel = $rows[0]; + + $elo_aktualisieren = $individualwettbewerb->elo_wertung; + $aktualisieren_ab_datum = $spiel->zeitpunkt; + + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + individualwettbewerbTabelleAktualisieren($individualwettbewerbid); + + wannGespieltAktualisieren(); + if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, 0, $individualwettbewerbid); + + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid); +} + +function adminEditIndividualwettbewerbAusgangsplatzierung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); + + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; + + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(true); + + if (!$individualwettbewerb->tabellenwertung) die("Wrong id!"); + + $id = $jinput->get('id', 0, 'INT'); + $typ = $jinput->get('typ', 0, 'RAW'); + + $query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY platz, nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + + $row = null; + if (!empty($id)) { + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) { + if ($ausgangsplatzierung->spieler_id == $id) { + $row = $ausgangsplatzierung; + break; + } + } + if ($row == null) die("Wrong id!"); + } + + $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode($spiel_spieler_ids, ", ") . ")") : "") + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + HTML_sportsmanager_admin::adminEditIndividualwettbewerbAusgangsplatzierung($row, $individualwettbewerb, $ausgangsplatzierungen, $spieler); +} + +function adminSaveIndividualwettbewerbAusgangsplatzierung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(); + + $id = $jinput->get('id', 0, 'INT'); + $nach_id = $jinput->get('nach_id', 0, 'INT'); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); + + return; + } + + if ($id == $nach_id) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); + + return; + } + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE, #__sportsmanager_spieler READ"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + array_push($platzierungen, $ausgangsplatzierung->spieler_id); + + if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!"); + + $id_platzierung = array_search($id, $platzierungen); + if ($id_platzierung !== false) + array_splice($platzierungen, $id_platzierung, 1); + $nach_id_platzierung = !empty($nach_id) ? (array_search($nach_id, $platzierungen) + 1) : 0; + array_splice($platzierungen, $nach_id_platzierung, 0, $id); + + $platzierungen_uebrig = $platzierungen; + foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { + $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); + if ($index !== false) { + $platz = $index + 1; + if ($platzierung_vorhanden->platz != $platz) { + $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET platz = '$platz'" + . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig); + unset($platzierungen_uebrig[$index_uebrig]); + } + else { + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + foreach ($platzierungen_uebrig as $platzierung_uebrig) { + $index = array_search($platzierung_uebrig, $platzierungen); + $platz = $index + 1; + $query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET individualwettbewerb_id = '$individualwettbewerbid'," + . "\n spieler_id = '$platzierung_uebrig'," + . "\n platz = '$platz'"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + individualwettbewerbTabelleAktualisieren($individualwettbewerbid); + + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); +} + +function adminRemoveIndividualwettbewerbAusgangsplatzierung() { + $db =& getDatabase(); + $jinput = JFactory::getApplication()->input; + + $id = $jinput->get('id', 0, 'INT'); + $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) + keinZugriff(true); + + $query = "LOCK TABLES #__sportsmanager_individualwettbewerb READ, #__sportsmanager_individualwettbewerb_ausgangsplatzierung WRITE"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + array_push($platzierungen, $ausgangsplatzierung->spieler_id); + + if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!"); + + $id_platzierung = array_search($id, $platzierungen); + if ($id_platzierung !== false) + array_splice($platzierungen, $id_platzierung, 1); + + foreach ($ausgangsplatzierungen as $platzierung_vorhanden) { + $index = array_search($platzierung_vorhanden->spieler_id, $platzierungen); + if ($index !== false) { + $platz = $index + 1; + if ($platzierung_vorhanden->platz != $platz) { + $query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n SET platz = '$platz'" + . "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + else { + $query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UNLOCK TABLES;"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + + individualwettbewerbTabelleAktualisieren($individualwettbewerbid); + + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid); +} + + +?>