diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index f04453f..2f82d85 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -1971,7 +1971,7 @@ function adminSpielerZusammenlegenForm(): void ranglisteAktualisieren(); einstufungAktualisieren(); halloffameAktualisieren(); - + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); } @@ -2082,7 +2082,7 @@ function adminRemoveInaktiveSpielerForm(): void spielerstatistikAktualisieren(); halloffameAktualisieren(); - + foreach ($bilder_spieler_ids as $id) bildLoeschen("spieler", $id); @@ -2869,10 +2869,10 @@ function adminImportSpieler(): void // Spieler aktualisieren bzw. ergänzen if ($spieler_id != null) { // Spieler aktualisieren - + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_id"; $spieler_buffer = loadObjectList($db, $query); - + $query = "UPDATE #__sportsmanager_spieler" . "\n SET vorname = '" . $db->escape($vorname) . "'," . "\n nachname = '" . $db->escape($nachname) . "'"; @@ -3525,6 +3525,8 @@ function adminVereine(): void if (!benutzerZugriff("vereine_aendern")) keinZugriff(true); + $ansprechpartner = []; + $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; $organisationAnzeigen = loadResult($db, $query) > 1; @@ -3534,7 +3536,21 @@ function adminVereine(): void . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, ausgetreten, vereinsname"; $vereine = loadObjectList($db, $query); - HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen); + + $query = "SELECT #__sportsmanager_verein.verein_id, email FROM #__sportsmanager_vereinsansprechpartner" + . "\n LEFT join #__sportsmanager_verein ON #__sportsmanager_vereinsansprechpartner.verein_id = #__sportsmanager_verein.verein_id" + . "\n WHERE #__sportsmanager_verein.ausgetreten = 0" + . "\n AND email IS NOT NULL AND email <> '';"; + $ergebnisse = loadObjectList($db, $query); + + if (!empty($ergebnisse)){ + foreach($ergebnisse as $value){ + if (empty($ansprechpartner[$value->verein_id]) OR !in_array($value->email, $ansprechpartner[$value->verein_id])) + $ansprechpartner[$value->verein_id][] = $value->email; + } + } + + HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen, $ansprechpartner); } function adminEditVerein(): void @@ -3768,7 +3784,7 @@ function adminEditVerein(): void aktuellerVereinAktualisieren(); halloffameAktualisieren(); - + redirectSportsManagerURL('&task=admin_vereine'); } @@ -3877,7 +3893,7 @@ function adminVereineZusammenlegenForm(): void aktuellerVereinAktualisieren(); halloffameAktualisieren(); - + redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id); } @@ -4576,6 +4592,7 @@ function adminEditTeamspielmodus(): void $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'); + $spiele_in_spielerstatistik = $jInput->get('spiele_in_spielerstatistik', 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'); @@ -4623,7 +4640,11 @@ function adminEditTeamspielmodus(): void $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');"; + $query = "INSERT INTO #__sportsmanager_teamspiel_modus" + . "\n (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel," + . "\n spielpunkte_bedingung, spielernamen, heimtausch, modus, spiele_in_spielerstatistik, status)" + . "\n VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel'," + . "\n '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$spiele_in_spielerstatistik', '$status');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); @@ -4641,6 +4662,7 @@ function adminEditTeamspielmodus(): void . "\n spielernamen = '$spielernamen'," . "\n heimtausch = '$heimtausch'," . "\n modus = '$modus'," + . "\n spiele_in_spielerstatistik = '$spiele_in_spielerstatistik'," . "\n status = '$status'" . "\n WHERE teamspiel_modus_id = $id"; $db->setQuery($query); @@ -4709,10 +4731,10 @@ function adminSpielverlegungen(): void $db = getDatabase(); global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(true); - + $filter_status = $jInput->get('filter_status', '', 'RAW'); $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); if ($filter_saison_id == 0) @@ -4722,13 +4744,13 @@ function adminSpielverlegungen(): void . "\n FROM #__sportsmanager_saison" . "\n ORDER BY saisonbezeichnung DESC"; $saisons = loadObjectList($db, $query); - + if (empty($filter_saison_id)) $filter_saison_id = $saisons[0]->saison_id; if (empty($filter_status)) $filter_status = "offen,genehmigt,abgelehnt"; - + $query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id," . "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt," . "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga," @@ -4743,23 +4765,23 @@ function adminSpielverlegungen(): void . "\n AND t5.saison_id = '$filter_saison_id'" . "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;"; $spielverlegungen = loadObjectList($db, $query); - + $last_id = ""; foreach ($spielverlegungen as $key => $spielverlegung) { if ($spielverlegung->begegnung_id == $last_id) { unset($spielverlegungen[$key]); } else { $last_id = $spielverlegung->begegnung_id; - + $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt," . "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $genehmigt = loadObjectList($db, $query); - + if (!empty($genehmigt)) { $spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id; $spielverlegung->genehmigt = $genehmigt[0]->genehmigt; @@ -4782,9 +4804,9 @@ function adminSpielverlegungen(): void . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $abgelehnt = loadObjectList($db, $query); - + if (!empty($abgelehnt)) { $spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id; $spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt; @@ -4810,18 +4832,18 @@ function adminEditSpielverlegung(): void $db = getDatabase(); global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(true); - + $begegnung_id = $jInput->get('begegnung_id', 0, 'INT'); $beantragt_id = 0; $genehmigt_id = 0; $abgelehnt_id = 0; - + if (empty($begegnung_id)) redirectSportsManagerURL('&task=admin_spielverlegungen', 'Missing id'); - + // Checken, ob für diese ID schon eine Verlegung existiert $query = "SELECT *" @@ -4831,7 +4853,7 @@ function adminEditSpielverlegung(): void $ergebnis = loadObjectList($db, $query); if (!empty($ergebnis)) $beantragt_id = $ergebnis[0]->begegnung_historie_id; - + $query = "SELECT *" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n WHERE begegnung_id = '$begegnung_id' AND aktion = '1'" @@ -4839,7 +4861,7 @@ function adminEditSpielverlegung(): void $ergebnis = loadObjectList($db, $query); if (!empty($ergebnis)) $genehmigt_id = $ergebnis[0]->begegnung_historie_id; - + $query = "SELECT *" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n WHERE begegnung_id = '$begegnung_id' AND aktion = '10'" @@ -4847,11 +4869,11 @@ function adminEditSpielverlegung(): void $ergebnis = loadObjectList($db, $query); if (!empty($ergebnis)) $abgelehnt_id = $ergebnis[0]->begegnung_historie_id; - + $beantragt = []; if (!empty($beantragt_id)){ $query = "SELECT" - . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," + . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," . "\n t2.heim_team_id, t2.gast_team_id," . "\n IF (ISNULL(t1.verantwortlich_team_id), 0, verantwortlich_team_id) AS beantragt_von_id," . "\n t2.begegnung_id AS begegnung_id, t5.bezeichnung AS Liga, t3.teamname AS Heim, t4.teamname AS Gast," @@ -4870,8 +4892,8 @@ function adminEditSpielverlegung(): void $spielverlegung = $beantragt[0]; } else if ($begegnung_id != 0){ - $query = "SELECT" - . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," + $query = "SELECT" + . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," . "\n t2.begegnung_id AS begegnung_id, t5.bezeichnung AS Liga, t3.teamname AS Heim," . "\n t4.teamname AS Gast, t2.zeitpunkt AS Termin_alt," . "\n t2.heim_team_id, t2.gast_team_id" @@ -4890,10 +4912,10 @@ function adminEditSpielverlegung(): void $spielverlegung->beantragt_verein = ""; $spielverlegung->status = "offen"; } - + if (empty($spielverlegung)) redirectSportsManagerURL('&task=admin_spielverlegungen', 'Wrong id'); - + $genehmigt = []; if (!empty($genehmigt_id)){ $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt_am," @@ -4943,11 +4965,11 @@ function adminEditSpielverlegung(): void $spielverlegung->Begruendung_abgelehnt = ""; } - + $teams[0] = "Verband"; $teams[$spielverlegung->heim_team_id] = $spielverlegung->Heim; $teams[$spielverlegung->gast_team_id] = $spielverlegung->Gast; - + HTML_sportsmanager_admin::adminEditSpielverlegung($spielverlegung,$teams); } @@ -4955,7 +4977,7 @@ function adminEditSpielverlegung(): void { $db = getDatabase(); $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(); @@ -4978,7 +5000,7 @@ function adminEditSpielverlegung(): void if (!empty($Termin_neu) && !validateDate($Termin_neu, $format = 'Y-m-d H:i:s')) redirectSportsManagerURL('&task=admin_spielverlegungen', Text::_('COM_SPORTSMANAGER_NOT_VALID_TIME')); - + if ($beantragt_id == 0){ $query = "INSERT INTO #__sportsmanager_begegnung_historie" . "\n (begegnung_historie_id, begegnung_id, aktion, zeitpunkt, user_id, team_id, kommentar, eingetragen)" @@ -4994,12 +5016,12 @@ function adminEditSpielverlegung(): void if (!$db->execute()) { die($db->stderr(true)); } - + if ($genehmigt_id == 0 AND !empty($Termin_neu)){ $query = "INSERT INTO #__sportsmanager_begegnung_historie" . "\n (begegnung_historie_id, begegnung_id, aktion, zeitpunkt, user_id, team_id, eingetragen)" . "\n VALUES (NULL, $begegnung_id, 1, '$Termin_neu', $user_id, NULL, NOW());"; - } + } else if ($genehmigt_id != 0 AND !empty($Termin_neu)){ $query = "UPDATE #__sportsmanager_begegnung_historie" . "\n SET user_id = '$user_id'," @@ -5023,7 +5045,7 @@ function adminEditSpielverlegung(): void if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_spielverlegungen'); } @@ -5031,28 +5053,28 @@ function adminEditSpielverlegung(): void { $db = getDatabase(); $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(); - + $begegnung_id = $jInput->get('id', 0, 'INT'); - + $query = "SELECT * FROM #__sportsmanager_begegnung_historie" . "\n WHERE begegnung_id = $begegnung_id AND aktion = 2;"; $ergebnis = loadObjectList($db, $query); $zeitpunkt = $ergebnis[0]->zeitpunkt; - + $query = "UPDATE #__sportsmanager_begegnung" . "\n SET zeitpunkt = '$zeitpunkt'" . "\n WHERE begegnung_id = $begegnung_id;"; $db->setQuery($query); if (!$db->execute()) {die($db->stderr(true));} - + $query = "DELETE FROM #__sportsmanager_begegnung_historie" . "\n WHERE begegnung_id = $begegnung_id AND aktion IN (0,1,2,3,10);"; $db->setQuery($query); if (!$db->execute()) {die($db->stderr(true));} - + redirectSportsManagerURL('&task=admin_spielverlegungen'); } @@ -5061,10 +5083,10 @@ function adminEditSpielverlegung(): void $db = getDatabase(); global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(true); - + $filter_status = $jInput->get('filter_status', '', 'RAW'); $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); if ($filter_saison_id == 0) @@ -5074,13 +5096,13 @@ function adminEditSpielverlegung(): void . "\n FROM #__sportsmanager_saison" . "\n ORDER BY saisonbezeichnung DESC"; $saisons = loadObjectList($db, $query); - + if (empty($filter_saison_id)) $filter_saison_id = $saisons[0]->saison_id; if (empty($filter_status)) $filter_status = "offen,genehmigt,abgelehnt"; - + $query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id," . "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt," . "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga, t2.spieltag AS Spieltag_Nr," @@ -5095,23 +5117,23 @@ function adminEditSpielverlegung(): void . "\n AND t5.saison_id = '$filter_saison_id'" . "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;"; $spielverlegungen = loadObjectList($db, $query); - + $last_id = ""; foreach ($spielverlegungen as $key => $spielverlegung) { if ($spielverlegung->begegnung_id == $last_id) { unset($spielverlegungen[$key]); } else { $last_id = $spielverlegung->begegnung_id; - + $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt," . "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $genehmigt = loadObjectList($db, $query); - + if (!empty($genehmigt)) { $spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id; $spielverlegung->genehmigt = $genehmigt[0]->genehmigt; @@ -5134,9 +5156,9 @@ function adminEditSpielverlegung(): void . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $abgelehnt = loadObjectList($db, $query); - + if (!empty($abgelehnt)) { $spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id; $spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt; @@ -5178,21 +5200,21 @@ function adminSpielverlegungMailen(): void $db = getDatabase(); $app = Factory::getContainer()->get(SiteApplication::class); $jInput = $app->input; - + if (!benutzerZugriff("verschieberegeln_aendern")) keinZugriff(true); - + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : $app->getIdentity()->id); $query = "SELECT name, email FROM #__users WHERE id = '$user_id';"; $Benutzer = loadObjectList($db, $query); - + $begegnung_id = $jInput->get('id', 0, 'INT'); $beantragt_id = 0; $genehmigt_id = 0; - + if (empty($begegnung_id)) redirectSportsManagerURL('&task=admin_spielverlegungen', 'Missing id'); - + if ($jInput->get('cancel', false, 'BOOL')) redirectSportsManagerURL('&task=admin_spielverlegungen'); @@ -5203,7 +5225,7 @@ function adminSpielverlegungMailen(): void $ergebnis = loadObjectList($db, $query); if (!empty($ergebnis)) $beantragt_id = $ergebnis[0]->begegnung_historie_id; - + $query = "SELECT *" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n WHERE begegnung_id = '$begegnung_id' AND aktion = '1'" @@ -5211,11 +5233,11 @@ function adminSpielverlegungMailen(): void $ergebnis = loadObjectList($db, $query); if (!empty($ergebnis)) $genehmigt_id = $ergebnis[0]->begegnung_historie_id; - + $beantragt = []; if (!empty($beantragt_id)){ $query = "SELECT" - . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," + . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," . "\n t2.heim_team_id, t2.gast_team_id, t7.verein_id AS heim_verein_id, t8.verein_id AS gast_verein_id," . "\n IF (ISNULL(t1.verantwortlich_team_id), 0, verantwortlich_team_id) AS beantragt_von_id," . "\n t2.begegnung_id AS begegnung_id, t5.bezeichnung AS Liga, t3.teamname AS Heim, t4.teamname AS Gast," @@ -5237,8 +5259,8 @@ function adminSpielverlegungMailen(): void $spielverlegung = $beantragt[0]; } else if ($begegnung_id != 0){ - $query = "SELECT" - . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," + $query = "SELECT" + . "\n CONCAT(t3.teamname, ' - ', t4.teamname, ' (', t5.bezeichnung, ')') AS Begegnung," . "\n t2.begegnung_id AS begegnung_id, t5.bezeichnung AS Liga, t3.teamname AS Heim," . "\n t4.teamname AS Gast, t2.zeitpunkt AS Termin_alt," . "\n t2.heim_team_id, t2.gast_team_id" @@ -5257,10 +5279,10 @@ function adminSpielverlegungMailen(): void $spielverlegung->beantragt_verein = ""; $spielverlegung->status = "offen"; } - + if (empty($spielverlegung)) redirectSportsManagerURL('&task=admin_spielverlegungen', 'Wrong id'); - + $genehmigt = []; if (!empty($genehmigt_id)){ $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt_am," @@ -5284,8 +5306,8 @@ function adminSpielverlegungMailen(): void $spielverlegung->genehmigt_verein = ""; $spielverlegung->genehmigt_von = ""; } - - + + $query = "SELECT nachname, vorname, email" . "\n FROM #__sportsmanager_vereinsansprechpartner" . "\n WHERE verein_id IN ('$spielverlegung->heim_verein_id', '$spielverlegung->gast_verein_id')" @@ -5306,7 +5328,7 @@ function adminSpielverlegungMailen(): void else $to .= ";" . $ansprechpartner->email; } - + $var['Heim'] = $spielverlegung->Heim; $var['Gast'] = $spielverlegung->Gast; $var['Liga'] = $spielverlegung->Liga; @@ -5316,7 +5338,7 @@ function adminSpielverlegungMailen(): void $var['Neuer_Termin'] = $spielverlegung->Termin_neu ? (new DateTime($spielverlegung->Termin_neu))->format("d.m.Y H:i") : 'offen'; $var['Begruendung'] = $spielverlegung->Begruendung_beantragt; $var['Absender'] = $Benutzer[0]->name; - + $query = "SELECT * FROM #__sportsmanager_email_vorlagen WHERE vorlage = 'Spielverlegung';"; $vorlagen = loadObjectList($db, $query); $template = $vorlagen[0]->email_text; @@ -5327,7 +5349,7 @@ function adminSpielverlegungMailen(): void $message = renderTemplate($template, $var); $backtomail = "admin_spielverlegungen_mailen&id=" . $spielverlegung->begegnung_id; $backtosender = "admin_spielverlegungen"; - + $vorlage = new stdClass(); $vorlage->id = $spielverlegung->spielverlegung_id; $vorlage->name = 'Spielverlegung'; @@ -6946,7 +6968,7 @@ function adminEditSaison(): void function adminOrdnungsstrafeMailen(): void { - + $db = getDatabase(); $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $id = $jInput->get('id', 0, 'INT'); @@ -7080,10 +7102,10 @@ function sendJoomlaMail(): void $mailer->addBcc($recipient); } } - + //Checkmail für Absender $mailer->addBcc($absender[0]->email); - + // Betreff und Body $mailer->setSubject($subject); $mailer->setBody($body); @@ -7374,7 +7396,7 @@ function adminEditOrdnungsstrafe(): void $query .= "\n AND t8.id = '" . $filter['aussteller'] . "'"; $query .= "\n ORDER BY ordnungsstrafen_id"; $rows = loadObjectList($db, $query); - + exportCSV($rows, "Ordnungsstrafen.csv"); die(); @@ -7489,14 +7511,14 @@ function adminEditVerbandsorgan(): void if (!$db->execute()) { die($db->stderr(true)); } - + //Alle Mitglieder löschen $query = "DELETE FROM #__sportsmanager_mitglied_von_verbandsorgan WHERE verbandsorgane_id = $id;"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_verbandsorgane'); } @@ -7515,7 +7537,7 @@ function adminEditVerbandsorgan(): void . "\n LEFT JOIN #__sportsmanager_spieler t3 ON t3.spieler_id = t2.spieler_id" . "\n ORDER BY t1.reihenfolge, t2.reihenfolge, t2.nachname, t2.vorname;"; $rows = loadObjectList($db, $query); - + exportCSV($rows, "Verbandsorgane.csv"); die(); @@ -7544,7 +7566,7 @@ function adminVerbandsorganMitglieder(): void . "\n WHERE t2.verbandsorgane_id = $id" . "\n ORDER BY t2.reihenfolge, t2.nachname, t2.vorname;"; $rows = loadObjectList($db, $query); - + HTML_sportsmanager_admin::adminVerbandsorganMitglieder($rows,$verbandsorgan); } @@ -7558,7 +7580,7 @@ function adminEditVerbandsorganMitglied(): void $id = $jInput->get('id', 0, 'INT'); $verbandsorgane_id = $jInput->get('verbandsorgane_id', 0, 'INT'); - + if ($id == 0) $row = null; else { @@ -7605,11 +7627,11 @@ function adminEditVerbandsorganMitglied(): void $mobil = $db->escape(trim($jInput->get('mobil', '', 'RAW'))); $reihenfolge = $jInput->get('reihenfolge', 0, 'INT'); $beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW'))); - + if ($jInput->get('cancel', false, 'BOOL')) { redirectSportsManagerURL('&task=admin_verbandsorgan_mitglieder&id=' . $verbandsorgane_id); } - + if ($spieler_id != 0){ $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_id"; $spieler = loadObjectList($db, $query); @@ -7662,13 +7684,13 @@ function adminEditVerbandsorganMitglied(): void $id = $jInput->get('id', 0, 'INT'); $verbandsorgane_id = $jInput->get('verbandsorgane_id', 0, 'INT'); - + $query = "DELETE FROM #__sportsmanager_mitglied_von_verbandsorgan WHERE mitglied_von_verbandsorgan_id = $id;"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_verbandsorgan_mitglieder&id=' . $verbandsorgane_id); } @@ -7700,7 +7722,7 @@ function adminEditHalloffame(): void $id = $jInput->get('id', 0, 'INT'); $anzahl_eintraege = 0; - + if ($id == 0) $row = null; else { @@ -7708,7 +7730,7 @@ function adminEditHalloffame(): void $rows = loadObjectList($db, $query); if (count($rows) < 1) die("Wrong id!"); $row = $rows[0]; - + $query = "SELECT * FROM #__sportsmanager_mitglied_von_halloffame WHERE halloffame_id = $id"; $rows = loadObjectList($db, $query); $anzahl_eintraege = count($rows); @@ -7796,14 +7818,14 @@ function adminEditHalloffame(): void if (!$db->execute()) { die($db->stderr(true)); } - + //Alle Mitglieder löschen $query = "DELETE FROM #__sportsmanager_mitglied_von_halloffame WHERE halloffame_id = $id;"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_halloffame'); } @@ -7817,7 +7839,7 @@ function adminHalloffameMitglieder(): void $id = $jInput->get('id', 0, 'INT'); $mitglieder = null; - + $query = "SELECT * FROM #__sportsmanager_halloffame WHERE halloffame_id = $id"; $rows = loadObjectList($db, $query); if (count($rows) < 1) { @@ -7826,14 +7848,14 @@ function adminHalloffameMitglieder(): void $halloffame = $rows[0]; $halloffame->platz2_zeigen = 0; $halloffame->platz3_zeigen = 0; - + $query = "SELECT t2.*, t1.halloffame" . "\n FROM #__sportsmanager_halloffame t1" . "\n LEFT JOIN #__sportsmanager_mitglied_von_halloffame t2 ON t2.halloffame_id = t1.halloffame_id" . "\n WHERE t2.halloffame_id = $id" . "\n ORDER BY t2.jahr DESC, platz ASC;"; $rows = loadObjectList($db, $query); - + if (count($rows) > 0){ $mitglieder = []; if ($halloffame->spielform == 1){ @@ -7851,10 +7873,10 @@ function adminHalloffameMitglieder(): void $halloffame->platz2_zeigen = 1; if ($row->platz == 3 && !empty($row->teamname)) $halloffame->platz3_zeigen = 1; - + //Suche team_id wenn keine verein_id vorhanden if (empty($row->verein_id)){ - $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; + $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; $mitglieder[$row->jahr]->$index_teamid = loadResult($db, $query); } else { $mitglieder[$row->jahr]->$index_teamid = ""; @@ -7867,7 +7889,7 @@ function adminHalloffameMitglieder(): void $index_spieler1 = "spieler1_" . $row->platz; $index_spieler2id = "spieler2_id_" . $row->platz; $index_spieler2 = "spieler2_" . $row->platz; - + if (!isset($mitglieder[$row->jahr])) { $mitglieder[$row->jahr] = new stdClass(); } @@ -7910,7 +7932,7 @@ function adminEditHalloffameMitglied(): void . "\n FROM #__sportsmanager_verein" . "\n ORDER BY vereinsname"; $vereine = loadObjectList($db, $query); - + $query = "SELECT spieler_id, CONCAT(nachname, ', ', vorname, ' (', spielernr, ')') AS spieler" . "\n FROM #__sportsmanager_spieler" . "\n ORDER BY nachname, vorname, spielernr"; @@ -7986,14 +8008,14 @@ function adminEditHalloffameMitglied(): void if (!benutzerZugriff("organisationen_aendern")) keinZugriff(); - + $halloffame_id = $jInput->get('halloffame_id', 0, 'INT'); $spielform = $jInput->get('spielform', 0, 'INT'); $jahr = $jInput->get('jahr', 0, 'INT'); - + if ($jInput->get('cancel', false, 'BOOL')) redirectSportsManagerURL('&task=admin_halloffame_mitglieder&id=' . $halloffame_id); - + if ($spielform == 1){ for ($p = 1; $p <= 3; $p++){ $verein_id[$p] = $jInput->get('verein_id_' . $p, 0, 'INT'); @@ -8022,7 +8044,7 @@ function adminEditHalloffameMitglied(): void } } } - + if ($spielform == 2 || $spielform == 3){ for ($p = 1; $p <= 3; $p++){ $spieler1_id[$p] = $jInput->get('spieler1_id_' . $p, 0, 'INT'); @@ -8064,7 +8086,7 @@ function adminEditHalloffameMitglied(): void } } } - + redirectSportsManagerURL('&task=admin_halloffame_mitglieder&id=' . $halloffame_id); } @@ -8078,7 +8100,7 @@ function adminEditHalloffameMitglied(): void $halloffame_id = $jInput->get('halloffame_id', 0, 'INT'); $jahr = $jInput->get('jahr', 0, 'INT'); - + $query = "DELETE FROM #__sportsmanager_mitglied_von_halloffame" . "\n WHERE halloffame_id = $halloffame_id" . "\n AND jahr = $jahr;"; @@ -8086,7 +8108,7 @@ function adminEditHalloffameMitglied(): void if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_halloffame_mitglieder&id=' . $halloffame_id); } @@ -8327,7 +8349,7 @@ function adminEditEmailVorlage($vorlage): void $back = 'admin_ordnungsstrafen'; } if ($vorlage == 'Spielverlegung'){ - $vars = "Ansprechpartner, Heim, Gast, Liga, Spieltag, Antragsteller, + $vars = "Ansprechpartner, Heim, Gast, Liga, Spieltag, Antragsteller,
Alter_Termin, Neuer_Termin, Begruendung, Absender"; $back = 'admin_spielverlegungen'; } @@ -8619,6 +8641,8 @@ function adminMannschaften(): void if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) keinZugriff(true); + $ansprechpartner = []; + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; $rows = loadObjectList($db, $query); if (count($rows) < 1) die("Wrong id!"); @@ -8643,7 +8667,36 @@ function adminMannschaften(): void . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId" . "\n ORDER BY teamname"; $rows = loadObjectList($db, $query); - HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows); + + //Ansprechpartner Teams + $query = "SELECT #__sportsmanager_team.team_id, email FROM #__sportsmanager_teamansprechpartner" + . "\n LEFT JOIN #__sportsmanager_team ON #__sportsmanager_teamansprechpartner.team_id = #__sportsmanager_team.team_id" + . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId" + . "\n AND email IS NOT NULL AND email <> '';"; + $ergebnisse = loadObjectList($db, $query); + if (!empty($ergebnisse)){ + foreach($ergebnisse as $value){ + if (empty($ansprechpartner[$value->team_id]) OR !in_array($value->email, $ansprechpartner[$value->team_id])) + $ansprechpartner[$value->team_id][] = $value->email; + } + } + + //Ansprechpartner Vereine + $query = "SELECT #__sportsmanager_team.team_id, #__sportsmanager_vereinsansprechpartner.email" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_team.verein_id = #__sportsmanager_verein.verein_id" + . "\n LEFT JOIN #__sportsmanager_vereinsansprechpartner ON #__sportsmanager_verein.verein_id = #__sportsmanager_vereinsansprechpartner.verein_id" + . "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId" + . "\n AND #__sportsmanager_vereinsansprechpartner.email IS NOT NULL AND #__sportsmanager_vereinsansprechpartner.email <> '';"; + $ergebnisse = loadObjectList($db, $query); + if (!empty($ergebnisse)){ + foreach($ergebnisse as $value){ + if (empty($ansprechpartner[$value->team_id]) OR !in_array($value->email, $ansprechpartner[$value->team_id])) + $ansprechpartner[$value->team_id][] = $value->email; + } + } + + HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows, $ansprechpartner); } function adminEditMannschaft(): void @@ -10406,7 +10459,7 @@ function adminRemoveBegegnung(): void if (!$db->execute()) { die($db->stderr(true)); } - + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); @@ -10490,7 +10543,7 @@ function adminEditBegegnungSpielplan($bestaetigen): void //$bestaetigen = 0: Eingabe Moderator //$bestaetigen = 1: Bestätigung Ergebnis //$bestaetigen = 2: Pineingabe - + $db = getDatabase(); $jInput = Factory::getContainer()->get(SiteApplication::class)->input; @@ -10680,7 +10733,7 @@ function adminSaveBegegnungSpielplan(): void adminDeleteMatchReportBegegnung($id,$veranstaltungId); redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id, Text::_('COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED')); } - + $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" @@ -11031,7 +11084,7 @@ function adminSaveBegegnungSpielplan(): void if (!$db->execute()) { abortWithError($db->stderr(true)); } - + // Spielbericht auf Fehler (doppelte Einträge) überprüfen $query = "DELETE t1" . "\n FROM #__sportsmanager_teamspiel t1" @@ -11149,13 +11202,13 @@ function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void { $db = getDatabase(); $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); - - $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; + + $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; $db->setQuery($query); if (!$db->execute()) { abortWithError($db->stderr(true)); } - + $query = "UPDATE #__sportsmanager_begegnung" . "\n SET heim_punkte = NULL," . "\n gast_punkte = NULL," @@ -11166,14 +11219,14 @@ function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void if (!$db->execute()) { abortWithError($db->stderr(true)); } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; + + $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; $db->setQuery($query); if (!$db->execute()) { abortWithError($db->stderr(true)); } - - $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id AND aktion IN (6,7,8,9,10,13);"; + + $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id AND aktion IN (6,7,8,9,10,13);"; $db->setQuery($query); if (!$db->execute()) { abortWithError($db->stderr(true)); @@ -11205,7 +11258,7 @@ function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void if (!$db->execute()) { abortWithError($db->stderr(true)); } - + return; } @@ -11315,17 +11368,17 @@ function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void if (!$db->execute()) { die($db->stderr(true)); } - + $encrypted_pin = $db->escape($jInput->get('pin', '', 'RAW')); $pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA"); - + $query = "SELECT team_id FROM #__sportsmanager_team" . "\n WHERE pin = " . $db->quote($pin) . " AND veranstaltung_id = $veranstaltungId;"; $team_id = loadResult($db, $query); - + if (empty($user_id) OR !empty($team_id)) $user_id = "NULL"; if (empty($team_id)) $team_id = "NULL"; - + $query = "INSERT INTO #__sportsmanager_begegnung_historie" . "\n (begegnung_historie_id,begegnung_id,aktion,team_id,user_id,eingetragen)" . "\n VALUES (NULL,$id,11,$team_id,$user_id,NOW());"; @@ -12430,7 +12483,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void $rundenNr = $jInput->get('runde', 0, 'INT'); $rundenTitel = $jInput->get('rundentitel', 0, 'STRING'); $spielumplatz3 = $jInput->get('spielumplatz3', 0, 'INT'); - + $teams = []; if ($veranstaltungId == 0) die("Missing id!"); @@ -12466,7 +12519,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void else{ $anzahlmatches = pow(2, $anzahlrunden - $rundenNr); //Verlierer rausfiltern - $query = "SELECT" + $query = "SELECT" . "\n CASE" . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id" . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id" @@ -12549,7 +12602,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void if ($spielumplatz3) { //Verlierer Halbfinale ermitteln - $query = "SELECT" + $query = "SELECT" . "\n CASE" . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id" . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id" @@ -12602,7 +12655,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void if (!$db->execute()) { die($db->stderr(true)); } - + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); } else{ @@ -12736,7 +12789,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void if ($rundenNr >= 2){ $query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast, t1.heim_team_id, t1.gast_team_id, - t1.spieltag_titel AS Runde, t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, + t1.spieltag_titel AS Runde, t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore, t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte FROM #__sportsmanager_begegnung AS t1 @@ -12775,7 +12828,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void if ($spielumplatz3) { //Verlierer Halbfinale ermitteln - $query = "SELECT" + $query = "SELECT" . "\n CASE" . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id" . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id" @@ -13022,13 +13075,13 @@ function adminBegegnungenExportForm(): void ORDER BY t4.veranstaltung_id, t1.spieltag, t1.spiel_nr, t1.zeitpunkt; "; $rows = loadObjectList($db, $query); - + // Spielverlegungen foreach ($rows as $value) { $beantragt = []; $genehmigt = []; - + // Spielverlegung vorgeschlagen $query = " SELECT t1.zeitpunkt AS Termin_alt @@ -13054,7 +13107,7 @@ function adminBegegnungenExportForm(): void $value->verlegt_auf = $genehmigt[0]->Termin_neu; } $dateiname = "Spielplan " . $veranstaltung->bezeichnung; - + if (!isset($rows) or count($rows) == 0) { redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=1', "Zu dieser Auswahl sind keine Daten vorhanden!"); } @@ -13083,10 +13136,10 @@ function adminBegegnungenExportForm(): void $value->bestaetigt_von = ""; $value->moderator_um = ""; $value->moderator_von = ""; - + // Endergebnis vorgeschlagen $query = " - SELECT t1.eingetragen AS gespeichert_um, + SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von_user, t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 @@ -13107,7 +13160,7 @@ function adminBegegnungenExportForm(): void // Endergebnis bestätigen Gegner $query = " - SELECT t1.eingetragen AS gespeichert_um, + SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von_user, t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 @@ -13125,10 +13178,10 @@ function adminBegegnungenExportForm(): void if (!empty($Bestaetigt[0]->gespeichert_von_team)) $value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von_team; } - + // Endergebnis bestätigen Moderator $query = " - SELECT t1.eingetragen AS gespeichert_um, + SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von_user, t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 @@ -13200,12 +13253,12 @@ function adminBegegnungenExportForm(): void . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t3 ON t1.veranstaltung_id = t3.veranstaltung_id" . "\n LEFT JOIN #__sportsmanager_spielort AS t4 ON t1.heimspielort_id = t4.spielort_id" . "\n WHERE t1.veranstaltung_id = " . $veranstaltungId . ";"; - + $rows = loadObjectList($db, $query); if (!isset($rows) or count($rows) == 0) { redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=1', "Zu dieser Auswahl sind keine Daten vorhanden!"); } - + foreach ($rows AS $value) { $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner" @@ -13237,7 +13290,7 @@ function adminBegegnungenExportForm(): void $value->$property = ""; } } - + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner" . "\n WHERE team_id = ".$value->team_id." ORDER BY kontaktperson_id;"; $ansprechpartner = loadObjectList($db, $query); @@ -13272,7 +13325,7 @@ function adminBegegnungenExportForm(): void } $dateiname .= ".csv"; - + exportCSV($rows, $dateiname); } @@ -14258,7 +14311,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) keinZugriff(); - + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; $db->setQuery($query); if (!$db->execute()) { @@ -14348,21 +14401,21 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void $elo_aktualisieren = $turnierdisziplin->elo_wertung; $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; $Meldung = "Alle Dateien wurden erfolgreich importiert!!!"; - + $filename = $_FILES['daten']['name']; $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); - + if (!in_array(strtolower($ext), ["csv","json","xml"], true)) redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei muss vom Typ csv, xml oder json sein."); - - if (!is_uploaded_file($_FILES["daten"]["tmp_name"])) + + if (!is_uploaded_file($_FILES["daten"]["tmp_name"])) redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Es wurde keine Datei hochgeladen."); adminLoeschenTurnierdisziplinMeldungenSpiele($id); // CSV-Import if ($ext === "csv"){ - + $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."); @@ -14655,10 +14708,10 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void // json Datei von Coral (nur Endergebnis einer Disziplin) if ($ext === "json"){ - + $FehlerJason = ""; $ist_doppel = false; - + if ($_FILES['daten']['error'] !== UPLOAD_ERR_OK) $FehlerJason = "Fehler beim Hochladen der json-Datei."; @@ -14725,9 +14778,9 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void $i = 1; foreach ($entry['players'] ?? [] as $player) { if ($i > 1) $ist_doppel = true; - + [$nachname, $vorname] = $splitName($player['name'] ?? ""); - + // Spielernummern und -namen ermitteln $spieler_id = null; if (!empty($player['license'])) { @@ -14757,19 +14810,19 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void $row[$i."v"] = $vorname; $row[$i."vn"] = ""; } - $i++; + $i++; } $spielerMeldungen[] = $row; } } } - + if ($FehlerJason != "") redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, $FehlerJason); - } + } if (in_array(strtolower($ext), ["csv","json"], true) && !empty($spielerMeldungen)){ - + foreach ($spielerMeldungen as $spielerMeldung) { $platz = $spielerMeldung["p"]; $spieler1_id = $spielerMeldung["1"] ?? null; @@ -14815,7 +14868,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void if ($spieler2_id == null) { $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');"; $db->setQuery($query); if (!$db->execute()) { @@ -14824,8 +14877,8 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void } } } - } - + } + if ($ext == "xml"){ // XML-Import // Daten zu Vorrunde laden @@ -15179,7 +15232,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void if (is_array($spielerId)) { $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');"; $db->setQuery($query); if (!$db->execute()) { diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index 34595a9..aa52962 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5734,6 +5734,28 @@ function updateDatabase(): void die($db->stderr(true)); } + $columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus'); + if (!array_key_exists('spiele_in_spielerstatistik', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`" + . "\n ADD `spiele_in_spielerstatistik` INT(4) NOT NULL DEFAULT '0' AFTER `heimtausch`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $columns = $db->getTableColumns('#__sportsmanager_bestenliste_punkte'); + if (!array_key_exists('team_id', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_bestenliste_punkte`" + . "\n ADD `team_id` INT(11) NULL DEFAULT NULL AFTER `spieler_2_id`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $spielerstatistik_aktualisieren = true; + $query = "UPDATE #__sportsmanager_einstellungen" . "\n SET wert = '120'" . "\n WHERE name = 'datenbank_version'"; diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 7e4c131..9a28946 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1847,7 +1847,7 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) $spielpunkte_differenz = 1000; $spielpunkte_quotient = 1000.0000; $platz = 0; - + $punktgleicheMannschaften = []; $korrekturen = []; $bufferplatz = []; @@ -1855,7 +1855,7 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) foreach($teams AS $team){ $bufferplatz[$team->team_id]['platz'] = $team->platz; $unterschied = false; - + if (($gesamtpunkte != $team->gesamtpunkte) || ($anzahl_spiele != $team->anzahl_spiele)) $unterschied = true; if ($veranstaltung->direktervergleich >= 2 && in_array($veranstaltung->tabellenwertung, [1,4,7,10]) && $spielpunkte_differenz != $team->spielpunkte_differenz) @@ -1866,7 +1866,7 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) $unterschied = true; if ($veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [2,5,8,11]) && $punkte_quotient != $team->punkte_quotient) $unterschied = true; - + if ($unterschied) { $gesamtpunkte = $team->gesamtpunkte; @@ -1889,7 +1889,7 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) foreach($teamsKorrektur AS $teamKorrektur){ $teamKorrektur->platz_alt = $bufferplatz[$teamKorrektur->team_id]['platz']; } - + if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7){ usort($teamsKorrektur, fn($a, $b) => [(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_differenz, (float)$b->punkte_differenz, (int)$a->platz_alt] @@ -1925,7 +1925,7 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) [(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (int)$b->platz_alt] ); } - + $neuerPlatz = $key; foreach ($teamsKorrektur as $teamKorrektur) { $teamKorrektur->platz = $neuerPlatz++; @@ -2604,7 +2604,7 @@ function turnierbaumAnzeigen($veranstaltung): void else $begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Heim']); } - } else + } else if ($begegnung['Heim_Satzpunkte'] < $begegnung['Gast_Satzpunkte']) { $begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 2; if ($begegnung['Spieltag_Nr'] < $anzahlRunden){ @@ -2613,7 +2613,7 @@ function turnierbaumAnzeigen($veranstaltung): void else $begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Gast']); } - } else + } else if ($begegnung['Heim_Satzpunkte'] == $begegnung['Gast_Satzpunkte'] && $begegnung['Heim_Tore'] > $begegnung['Gast_Tore']) { $begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 1; if ($begegnung['Spieltag_Nr'] < $anzahlRunden){ @@ -2622,7 +2622,7 @@ function turnierbaumAnzeigen($veranstaltung): void else $begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Heim']); } - } else + } else if ($begegnung['Heim_Satzpunkte'] == $begegnung['Gast_Satzpunkte'] && $begegnung['Heim_Tore'] < $begegnung['Gast_Tore']) { $begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 2; if ($begegnung['Spieltag_Nr'] < $anzahlRunden){ @@ -4276,16 +4276,16 @@ function spielverlegungen(): void global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $filter_status = $jInput->get('filter_status', '', 'RAW'); - + if (empty($filter_status)) $filter_status = "offen,genehmigt"; - + $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_saison" . "\n ORDER BY saisonbezeichnung DESC LIMIT 1"; $saisons = loadObjectList($db, $query); $filter_saison_id = $saisons[0]->saison_id; - + $query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id," . "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt," . "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga," @@ -4301,23 +4301,23 @@ function spielverlegungen(): void . kategorieFilter("AND t5.kategorie IN") . "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;"; $spielverlegungen = loadObjectList($db, $query); - + $last_id = ""; foreach ($spielverlegungen as $key => $spielverlegung) { if ($spielverlegung->begegnung_id == $last_id) { unset($spielverlegungen[$key]); } else { $last_id = $spielverlegung->begegnung_id; - + $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt," . "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu" . "\n FROM #__sportsmanager_begegnung_historie AS t1" . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $genehmigt = loadObjectList($db, $query); - + if (!empty($genehmigt)) { $spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id; $spielverlegung->genehmigt = $genehmigt[0]->genehmigt; @@ -4340,9 +4340,9 @@ function spielverlegungen(): void . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" . "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id" . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; - + $abgelehnt = loadObjectList($db, $query); - + if (!empty($abgelehnt)) { $spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id; $spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt; @@ -4374,7 +4374,7 @@ function verbandsorgane(): void $db = getDatabase(); global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + $query = "SELECT t1.*, COUNT(t2.verbandsorgane_id) AS anzahl, t3.veranstalterbezeichnung AS organisation" . "\n FROM #__sportsmanager_verbandsorgane t1" . "\n LEFT JOIN #__sportsmanager_mitglied_von_verbandsorgan t2 ON t2.verbandsorgane_id = t1.verbandsorgane_id" @@ -4383,7 +4383,7 @@ function verbandsorgane(): void . kategorieFilter("HAVING t1.kategorie IN") . "\n ORDER BY t1.reihenfolge;"; $verbandsorgane = loadObjectList($db, $query); - + $query = "SELECT COUNT(veranstalter_id) AS anzahl" . "\n FROM #__sportsmanager_verbandsorgane" . "\n GROUP BY veranstalter_id" @@ -4410,16 +4410,16 @@ function verbandsorganeDetails($uebergabe_id = 0): void $db = getDatabase(); $app = Factory::getContainer()->get(SiteApplication::class); $jInput = $app->input; - + global $params; - - + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : $app->getIdentity()->id); if ($user_id > 0) $erweiterte_anzeige = true; else $erweiterte_anzeige = false; - + if ($uebergabe_id == 0) $id = $jInput->get('id', 0, 'INT'); else @@ -4436,7 +4436,7 @@ function verbandsorganeDetails($uebergabe_id = 0): void . "\n WHERE verbandsorgane_id = $id" . "\n ORDER BY reihenfolge, nachname, vorname"; $mitglieder = loadObjectList($db, $query); - + $query = "SELECT zusatzinfo FROM #__sportsmanager_mitglied_von_verbandsorgan" . "\n WHERE verbandsorgane_id = $id" . "\n AND zusatzinfo IS NOT NULL AND TRIM(zusatzinfo) <> ''" @@ -4446,7 +4446,7 @@ function verbandsorganeDetails($uebergabe_id = 0): void $zusatzinfos_vorhanden = true; else $zusatzinfos_vorhanden = false; - + if (isJson()) { echo json_encode($mitglieder); } else { @@ -4458,7 +4458,7 @@ function halloffame(): void { $db = getDatabase(); global $params; - + $query = "SELECT t1.*, COUNT(DISTINCT t2.jahr) AS anzahl," . "\n IF (COUNT(DISTINCT t2.jahr) > 0, CONCAT(min(t2.jahr), ' - ', max(t2.jahr)), '" . Text::_('COM_SPORTSMANAGER_NO_ENTRY') . "') AS zeitspanne" . "\n FROM #__sportsmanager_halloffame t1" @@ -4467,7 +4467,7 @@ function halloffame(): void . kategorieFilter("HAVING t1.kategorie IN") . "\n ORDER BY t1.reihenfolge;"; $halloffame = loadObjectList($db, $query); - + if (count($halloffame) == 1){ halloffameDetails($halloffame[0]->halloffame_id); } else { @@ -4484,16 +4484,16 @@ function halloffameDetails($uebergabe_id = 0): void $db = getDatabase(); $app = Factory::getContainer()->get(SiteApplication::class); $jInput = $app->input; - + global $params; - + if ($uebergabe_id == 0) $id = $jInput->get('id', 0, 'INT'); else $id = $uebergabe_id; - + $mitglieder = null; - + $query = "SELECT * FROM #__sportsmanager_halloffame WHERE halloffame_id = $id"; $rows = loadObjectList($db, $query); if (count($rows) < 1) { @@ -4502,14 +4502,14 @@ function halloffameDetails($uebergabe_id = 0): void $halloffame = $rows[0]; $halloffame->platz2_zeigen = 0; $halloffame->platz3_zeigen = 0; - + $query = "SELECT t2.*, t1.halloffame" . "\n FROM #__sportsmanager_halloffame t1" . "\n LEFT JOIN #__sportsmanager_mitglied_von_halloffame t2 ON t2.halloffame_id = t1.halloffame_id" . "\n WHERE t2.halloffame_id = $id" . "\n ORDER BY t2.jahr DESC, platz ASC;"; $rows = loadObjectList($db, $query); - + if (count($rows) > 0){ $mitglieder = []; if ($halloffame->spielform == 1){ @@ -4530,7 +4530,7 @@ function halloffameDetails($uebergabe_id = 0): void //Suche team_id wenn keine verein_id vorhanden if (empty($row->verein_id)){ - $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; + $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; $mitglieder[$row->jahr]->$index_teamid = loadResult($db, $query); } else { $mitglieder[$row->jahr]->$index_teamid = ""; @@ -4543,7 +4543,7 @@ function halloffameDetails($uebergabe_id = 0): void $index_spieler1 = "spieler1_" . $row->platz; $index_spieler2id = "spieler2_id_" . $row->platz; $index_spieler2 = "spieler2_" . $row->platz; - + if (!isset($mitglieder[$row->jahr])) { $mitglieder[$row->jahr] = new stdClass(); } @@ -4559,7 +4559,7 @@ function halloffameDetails($uebergabe_id = 0): void } } } - + if (isJson()) { echo json_encode($mitglieder); } else { @@ -4754,10 +4754,10 @@ function begegnungVerlegenForm(): void $aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT'); $query = "SELECT #__sportsmanager_veranstaltung.*, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage," - . "\n termine_minimal, termine_maximal, ablehnen, begruendung_erforderlich" + . "\n termine_minimal, termine_maximal, ablehnen, begruendung_erforderlich" . "\n FROM #__sportsmanager_veranstaltung LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id)" . "\n WHERE veranstaltung_id = $veranstaltungid"; - + $rows = loadObjectList($db, $query); if (count($rows) < 1) die("Wrong id!"); @@ -5128,7 +5128,7 @@ function begegnungVerlegen(): void function neueTeamStrafe($teamid, $veranstaltungid, $strafe, $moderator_user_id, $beschreibung) { $app = Factory::getContainer()->get(SiteApplication::class); $db = getDatabase(); - + $zeitpunkt = date('Y-m-d H:i:s'); $query = "INSERT INTO #__sportsmanager_team_strafen" . "\n (team_id, zeitpunkt, moderator_user_id, strafe, beschreibung)" @@ -5324,9 +5324,9 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert $buchholz1_wert = 0; $buchholz2_wert = 0; foreach ($teams as $team) { - if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) - || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) - || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) + if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) + || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) + || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) $tatsaechlicher_platz = $platz; $query = "UPDATE #__sportsmanager_team" @@ -5868,17 +5868,23 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $punkte = array(); foreach ($veranstaltungen as $veranstaltung) { - $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte" + $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, heim_team_id, gast_team_id," + . "\n teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte" . "\n FROM #__sportsmanager_begegnung" . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id" . "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id" . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND veranstaltung_id = $veranstaltung->veranstaltung_id"; - if ($spielerstatistik->typ == 1) + . "\n LEFT JOIN #__sportsmanager_veranstaltung ON #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel_modus ON #__sportsmanager_veranstaltung.modus_id = #__sportsmanager_teamspiel_modus.teamspiel_modus_id" + . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND #__sportsmanager_veranstaltung.veranstaltung_id = $veranstaltung->veranstaltung_id" + . "\n AND (#__sportsmanager_teamspiel_modus.spiele_in_spielerstatistik <= 0" + . "\n OR teamspiel_nummer <= #__sportsmanager_teamspiel_modus.spiele_in_spielerstatistik)"; + if ($spielerstatistik->typ == 1) $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; - $begegnungen = loadObjectList($db, $query); + $query .= "\n ORDER BY #__sportsmanager_begegnung.zeitpunkt ASC;"; + $begegnungen = loadObjectList($db, $query); foreach ($begegnungen as $begegnung) { $beteiligte = array(); @@ -5911,6 +5917,8 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $gast_punkte = $begegnung->teamspiel_gast_punkte; $heim_spielpunkte = $begegnung->teamspiel_heim_spielpunkte; $gast_spielpunkte = $begegnung->teamspiel_gast_spielpunkte; + $heim_team_id = $begegnung->heim_team_id; + $gast_team_id = $begegnung->gast_team_id; $ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0); $heim_saetze = $ergebnis == 1 ? 1 : 0; $unentschieden_saetze = $ergebnis == 0 ? 1 : 0; @@ -5931,6 +5939,10 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $punkte[$spieler_id]["sv"] = 0; $punkte[$spieler_id]["pg"] = 0; $punkte[$spieler_id]["pv"] = 0; + if ($typ == "H") + $punkte[$spieler_id]["team_id"] = $heim_team_id; + else + $punkte[$spieler_id]["team_id"] = $gast_team_id; } if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) $punkte[$spieler_id]["s"] += 1; @@ -6057,6 +6069,11 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; + if (!empty($spieler_punkte["team_id"])) + $spieler_team_id = $spieler_punkte["team_id"]; + else + $spieler_team_id = "NULL"; + $query = "UPDATE #__sportsmanager_bestenliste_punkte" . "\n SET siege = $spieler_punkte_siege," . "\n unentschieden = $spieler_punkte_unentschieden," @@ -6067,7 +6084,8 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea . "\n saetze_unentschieden = $spieler_punkte_saetze_unentschieden," . "\n saetze_verloren = $spieler_punkte_saetze_verloren," . "\n punkte_gewonnen = $spieler_punkte_punkte_gewonnen," - . "\n punkte_verloren = $spieler_punkte_punkte_verloren" + . "\n punkte_verloren = $spieler_punkte_punkte_verloren," + . "\n team_id = $spieler_team_id" . "\n WHERE bestenliste_punkte_id = $row->bestenliste_punkte_id;"; $db->setQuery($query); if (!$db->execute()) { @@ -6094,6 +6112,10 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; + if (!empty($spieler_punkte["team_id"])) + $spieler_team_id = $spieler_punkte["team_id"]; + else + $spieler_team_id = "NULL"; $query = "INSERT #__sportsmanager_bestenliste_punkte" . "\n SET siege = $spieler_punkte_siege," . "\n unentschieden = $spieler_punkte_unentschieden," @@ -6107,6 +6129,7 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea . "\n punkte_verloren = $spieler_punkte_punkte_verloren," . "\n spieler_id = $spieler_1_id," . "\n spieler_2_id = " . ($spieler_2_id != NULL ? "$spieler_2_id" : "NULL") . "," + . "\n team_id = $spieler_team_id," . "\n bestenliste_id = $spielerstatistik->bestenliste_id;"; $db->setQuery($query); if (!$db->execute()) { @@ -7355,6 +7378,7 @@ function spielerstatistiken(): void $details_anzeigen = currentUserHasAccessToDetails(); $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); + if ($filter_saison_id == 0) $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); @@ -7384,25 +7408,53 @@ function spielerstatistiken(): void . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; $spielerstatistiken = loadObjectList($db, $query); - HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, "", null, null, null, null); foreach ($spielerstatistiken as $spielerstatistik) { - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) + //Mindestzahl an Spielen + $spielerstatistik->min_spiele = 0; + if (in_array($spielerstatistik->tabellenwertung, [4, 5])) { + $query = "SELECT siege + unentschieden + niederlagen AS spiele" + . "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" + . "\n ORDER BY spiele DESC;"; + $max_spiele = loadResult($db, $query); + $spielerstatistik->min_spiele = round($max_spiele/2); + } + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, team.teamname," + . "\n siege + unentschieden + niederlagen AS spiele," + . "\n #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht," + . "\n #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," + . "\n spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2," + . "\n spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2," + . "\n spieler_2.bild_ausblenden AS bild_ausblenden_2," + . "\n IF(siege > 0 OR unentschieden > 0, ROUND(((siege * 2 + unentschieden)*100) / ((siege + unentschieden + niederlagen)*2)), 0) AS quotient"; + if ($spielerstatistik->tabellenwertung == 0){ + $query .= "\n , 0 AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 1){ $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - else if ($spielerstatistik->tabellenwertung == 2) - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - $query .= "\n FROM #__sportsmanager_bestenliste_punkte" + } else if ($spielerstatistik->tabellenwertung == 2){ + $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 3){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * 2 + unentschieden + punkte_gewonnen - punkte_verloren, 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 4){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen*100 / (punkte_gewonnen + punkte_verloren),2), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 5){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(spielpunkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + } + $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" - . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" + . "\n AND siege + unentschieden + niederlagen >= $spielerstatistik->min_spiele"; if ($spielerstatistik->tabellenwertung == 0) $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; else - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - $spielerstatistik_punkte = loadObjectList($db, $query); + $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $spielerstatistik_punkte = loadObjectList($db, $query); - HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, $details_anzeigen); + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, 0, $details_anzeigen); } administrationFooter(); @@ -7411,6 +7463,7 @@ function spielerstatistiken(): void function spielerstatistik(): void { $db = getDatabase(); + global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $id = $jInput->get('id', 0, 'INT'); @@ -7426,7 +7479,10 @@ function spielerstatistik(): void } } $details_anzeigen = currentUserHasAccessToDetails(); + $filter_min_spiele = $jInput->get('filter_min_spiele', 999, 'INT'); $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); + $filter_teams = $jInput->get('filter_teams', 0, 'INT'); + if ($filter_saison_id == 0) { $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); } @@ -7462,29 +7518,80 @@ function spielerstatistik(): void } $spielerstatistik = $rows[0]; + //Mindestzahl an Spielen + $spiele = null; + $spielerstatistik->min_spiele = 0; + if (in_array($spielerstatistik->tabellenwertung, [4, 5])) { + $query = "SELECT siege + unentschieden + niederlagen AS spiele" + . "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n WHERE bestenliste_id = $id" + . "\n ORDER BY spiele DESC;"; + $max_spiele = loadResult($db, $query); + if ($max_spiele > 0){ + $offset = $max_spiele/10; + $spiele[0] = "Alle zeigen"; + for($i = 1; $i <= 10; $i++){ + $spiele[round($offset*$i)] = $i*10 . "%"; + } + } + $spielerstatistik->max_spiele = $max_spiele; + if ($filter_min_spiele == 999) + $spielerstatistik->min_spiele = round($max_spiele/2); + else + $spielerstatistik->min_spiele = $filter_min_spiele; + } + // Spielerstatistikpunkte ermitteln - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) { - $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - } else if ($spielerstatistik->tabellenwertung == 2) { - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - } + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, team.teamname," + . "\n siege + unentschieden + niederlagen AS spiele," + . "\n #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," + . "\n spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2," + . "\n spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2," + . "\n IF(siege > 0 OR unentschieden > 0, ROUND(((siege * 2 + unentschieden)*100) / ((siege + unentschieden + niederlagen)*2)), 0) AS quotient"; + if ($spielerstatistik->tabellenwertung == 0){ + $query .= "\n , spielpunkte_gewonnen AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 1){ + $query .= "\n , IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 2){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 3){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * 2 + unentschieden + punkte_gewonnen - punkte_verloren, 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 4){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen*100 / (punkte_gewonnen + punkte_verloren),2), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 5){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(spielpunkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + } $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" - . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" + . "\n AND siege + unentschieden + niederlagen >= $spielerstatistik->min_spiele"; if ($spielerstatistik->tabellenwertung == 0) { $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } else { - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, spielpunkte_gewonnen - spielpunkte_verloren DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } $spielerstatistik_punkte = loadObjectList($db, $query); + //Dropdown teams + $query = "SELECT 0 AS team_id, '" . Text::_('COM_SPORTSMANAGER_SELECT_ALL') . "' AS teamname, 0 AS sort_order" + . "\n UNION" + . "\n SELECT team.team_id, team.teamname, 1 AS sort_order" + . "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team" + . "\n ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" + . "\n GROUP BY team.team_id" + . "\n ORDER BY sort_order, teamname;"; + $db->setQuery($query); + $teams = $db->loadObjectList('team_id'); + // Vorherige und nächste Spielerstatistik ermitteln $query = "SELECT *" . "\n FROM #__sportsmanager_bestenliste" . "\n WHERE status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; $rows = loadObjectList($db, $query); $n = count($rows); @@ -7506,7 +7613,8 @@ function spielerstatistik(): void if (isJson()) { JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte); } else { - HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele, $teams, $filter_teams); + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); } } diff --git a/src/structure/components/com_sportsmanager/sync.php b/src/structure/components/com_sportsmanager/sync.php index 4531aee..5d9bd43 100644 --- a/src/structure/components/com_sportsmanager/sync.php +++ b/src/structure/components/com_sportsmanager/sync.php @@ -21,6 +21,8 @@ function syncGetBearerToken(): ?string $headers = trim($_SERVER["Authorization"]); } elseif (isset($_SERVER['HTTP_AUTHORIZATION'])) { $headers = trim($_SERVER["HTTP_AUTHORIZATION"]); + } elseif (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { + $headers = trim($_SERVER["REDIRECT_HTTP_AUTHORIZATION"]); } elseif (function_exists('apache_request_headers')) { $requestHeaders = apache_request_headers(); $requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders)); @@ -77,40 +79,44 @@ function syncLogEntry(string $direction, string $trigger, string $status, int $s */ function syncGetLastStatus(): string { - $db = getDatabase(); - $query = "SELECT * FROM #__sportsmanager_sync_log ORDER BY sync_id DESC LIMIT 1"; - $rows = loadObjectList($db, $query); - if (count($rows) === 0) { + try { + $db = getDatabase(); + $query = "SELECT * FROM #__sportsmanager_sync_log ORDER BY sync_id DESC LIMIT 1"; + $rows = loadObjectList($db, $query); + if (count($rows) === 0) { + return "Noch nie synchronisiert"; + } + $row = $rows[0]; + + $statusClass = $row->sync_status === 'success' ? 'uk-text-success' : 'uk-text-danger'; + $statusText = $row->sync_status === 'success' ? 'Erfolgreich' : 'Fehlgeschlagen'; + $directionText = $row->sync_direction === 'push' ? 'Export (Push)' : 'Import (Receive)'; + $triggerText = $row->sync_trigger === 'manual' ? 'Manuell' : ($row->sync_trigger === 'cron' ? 'Cron' : 'API'); + + $stats = ""; + if ($row->sync_status === 'success') { + $stats = sprintf( + " (Spieler gesamt: %d, Aktualisiert: %d, Hinzugefügt: %d)", + $row->spieler_count, + $row->spieler_updated, + $row->spieler_added + ); + } else { + $stats = " (Fehler: " . htmlspecialchars($row->message) . ")"; + } + + return sprintf( + "%s am %s via %s / %s%s", + $statusClass, + $statusText, + date('d.m.Y H:i:s', strtotime($row->sync_timestamp)), + $directionText, + $triggerText, + $stats + ); + } catch (Exception $e) { return "Noch nie synchronisiert"; } - $row = $rows[0]; - - $statusClass = $row->sync_status === 'success' ? 'uk-text-success' : 'uk-text-danger'; - $statusText = $row->sync_status === 'success' ? 'Erfolgreich' : 'Fehlgeschlagen'; - $directionText = $row->sync_direction === 'push' ? 'Export (Push)' : 'Import (Receive)'; - $triggerText = $row->sync_trigger === 'manual' ? 'Manuell' : ($row->sync_trigger === 'cron' ? 'Cron' : 'API'); - - $stats = ""; - if ($row->sync_status === 'success') { - $stats = sprintf( - " (Spieler gesamt: %d, Aktualisiert: %d, Hinzugefügt: %d)", - $row->spieler_count, - $row->spieler_updated, - $row->spieler_added - ); - } else { - $stats = " (Fehler: " . htmlspecialchars($row->message) . ")"; - } - - return sprintf( - "%s am %s via %s / %s%s", - $statusClass, - $statusText, - date('d.m.Y H:i:s', strtotime($row->sync_timestamp)), - $directionText, - $triggerText, - $stats - ); } /** @@ -131,7 +137,7 @@ function syncExportSpielerCSV(): string $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein ON #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_verein.spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_spieler.aktueller_verein_id" . "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_verein.verein_id = #__sportsmanager_spieler.aktueller_verein_id" . "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id"; - $query .= "\n WHERE NOT ISNULL(spielernr) AND spielernr != ''"; + $query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND NOT ISNULL(spielernr) AND spielernr != ''"; $query .= "\n ORDER BY nachname, vorname"; $rows = loadObjectList($db, $query); @@ -272,6 +278,9 @@ function syncPushToDtfb(string $csvData): array */ function syncReceiveSpielerImport(string $csvData): array { + if (!ini_get('safe_mode')) + set_time_limit(300); + $db = getDatabase(); $lines = explode("\n", str_replace("\r", "", $csvData)); @@ -354,6 +363,8 @@ function syncReceiveSpielerImport(string $csvData): array $spalte["telefon"] = $index; } else if ($bezeichnung === "mobil") { $spalte["mobil"] = $index; + } else if ($bezeichnung === "lizenz") { + $spalte["lizenz"] = $index; } else if ($bezeichnung === "austritt" || $bezeichnung === "ausgetreten") { $spalte["ausgetreten"] = $index; } else if ($bezeichnung === "mitgliedsstatus") { @@ -369,10 +380,11 @@ function syncReceiveSpielerImport(string $csvData): array } $lineIdx++; - $session_id = 'sync_recv_' . date('Ymd_His') . '_' . bin2hex(random_bytes(4)); + $session_id = date('Y-m-d H:i:s'); $organisations = []; $rows_to_insert = []; + $lizenz_map = []; for ($i = $lineIdx; $i < count($lines); $i++) { $buffer = trim($lines[$i]); @@ -444,6 +456,7 @@ function syncReceiveSpielerImport(string $csvData): array } $pseudonym = isset($spalte["pseudonym"]) && isset($daten[$spalte["pseudonym"]]) ? $daten[$spalte["pseudonym"]] : ""; + $lizenz = isset($spalte["lizenz"]) && isset($daten[$spalte["lizenz"]]) ? $daten[$spalte["lizenz"]] : ""; $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"]] : ""; @@ -471,6 +484,10 @@ function syncReceiveSpielerImport(string $csvData): array 'mitgliedsstatus' => $mitgliedsstatus, 'geschlecht' => $geschlecht ]; + + if (!empty($spielernr) && !empty($lizenz)) { + $lizenz_map[$spielernr] = $lizenz; + } } if (empty($rows_to_insert)) { @@ -519,10 +536,16 @@ function syncReceiveSpielerImport(string $csvData): array } } - // Clean up older sync runs staging data (older than 5 minutes) - $query = "DELETE FROM #__sportsmanager_spieler_import WHERE session_id < SUBTIME(NOW(), '00:05:00') AND session_id LIKE 'sync_recv_%'"; - $db->setQuery($query); - $db->execute(); + // Clean up older staging data (older than 5 minutes) + $query = "SELECT DISTINCT session_id" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')"; + $old_sessions = loadObjectList($db, $query); + foreach ($old_sessions as $old_session) { + $query = "DELETE FROM #__sportsmanager_spieler_import WHERE session_id = '" . $db->escape($old_session->session_id) . "'"; + $db->setQuery($query); + $db->execute(); + } // Fetch staging players with matching ID $query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id" @@ -570,6 +593,7 @@ function syncReceiveSpielerImport(string $csvData): array $vorname = $t->vorname; $geschlecht = $t->geschlecht; $lizenznr = $t->lizenznr; + $lizenz = $lizenz_map[$t->spielernr] ?? ''; $pseudonym = $t->pseudonym; $vereinsname = $t->vereinsname; $vereinssitz = $t->vereinssitz; @@ -593,6 +617,9 @@ function syncReceiveSpielerImport(string $csvData): array if (!empty($lizenznr)) { $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; } + if (!empty($lizenz)) { + $query .= ",\n lizenz = '" . $db->escape($lizenz) . "'"; + } if ($geburtsjahr !== null) { $query .= ",\n geburtsjahr = '" . $db->escape($geburtsjahr) . "'"; } diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index 538acf4..6b2ae73 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1093,17 +1093,17 @@ static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster, $ergebnis_vorhanden = $row->heim_punkte != null || $row->gast_punkte != null; if ($zeitfenster == 0 && $veranstaltung != null) { if ($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) { - + if ($row->spieltag > 999) $Spieltagname = htmlentities_utf8(Rundenbezeichnung($row->spieltag, $veranstaltung->unterteilung == 0, true)); else if ($veranstaltung->unterteilung == 1) $Spieltagname = "Runde " . $row->spieltag; else $Spieltagname = "Spieltag " . $row->spieltag; - - if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "") + + if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "") $Spieltagname .= " - " . $row->spieltag_titel; - + if ($Spieltagname_Buffer != $Spieltagname || $spielort_name != $row->spielort_name) { $spieltag = $row->spieltag; $spielort_name = $row->spielort_name; @@ -1844,6 +1844,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie $punkte_quotient = 0; $buchholz1_wert = 0; $buchholz2_wert = 0; + $gesamtpunkte_verloren = 0; $k = 0; foreach ($teams as $team) { ?> @@ -1874,6 +1875,12 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie $buchholz1_wert = $team->buchholz1; $buchholz2_wert = $team->buchholz2; } + if (in_array($veranstaltung->tabellenwertung, [7,8,9])){ + $gesamtpunkte_verloren = $team->niederlagen; + } + if (in_array($veranstaltung->tabellenwertung, [1,2,3])){ + $gesamtpunkte_verloren = $team->niederlagen * 2 + $team->unentschieden; + } ?> tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { ?> - + tabellenwertung, [7,8,9,1,2,3])) + echo $gesamtpunkte . ":" . $gesamtpunkte_verloren; + else + echo $gesamtpunkte; + ?> + + @@ -3962,7 +3976,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): void 0) { $k = 0; - foreach ($rows as $row) { + foreach ($rows as $row) { ?> @@ -3970,7 +3984,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): void Liga); ?> - Heim == $row->beantragt_von) echo "" . htmlentities_utf8($row->Heim) . ""; else @@ -4019,7 +4033,7 @@ static function verbandsorgane($titel, $beschreibung, $rows, $organisation_zeige 0) { ?>
@@ -4063,8 +4077,8 @@ static function verbandsorgane($titel, $beschreibung, $rows, $organisation_zeige
  "; echo "

" . $verbandsorgan->verbandsorgan . "

"; - + echo $verbandsorgan->beschreibung; - + if (count($rows) > 0) { ?>

@@ -4231,7 +4245,7 @@ static function halloffameDetails($titel, $beschreibung, $rows, $halloffame): vo - platz2_zeigen) continue; if ($i == 3 && !$halloffame->platz3_zeigen) continue; @@ -4690,7 +4704,7 @@ global $params; if ((count($vereine) == 0) && !benutzerZugriff("spieler_aendern") && !benutzerVeranstalterModerator() && !benutzerVereinModerator()) { - echo "Sie haben keine Berechtigung auf diesen Datensatz!!!"; + echo "Sie haben keine Berechtigung auf diesen Datensatz!!!"; die; } @@ -4868,7 +4882,7 @@ if ($bild != null) { : - vereinsname) . " (" . htmlentities_utf8($verein->status) . ")
"; ?> @@ -6018,9 +6032,10 @@ static function turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $me
0) { + if (!empty($saisons) || !empty($spiele) || !empty($teams)) { ?>
+ - + + + + + + + @@ -6062,12 +6108,13 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte
+
tabellenwertung > 0) { ?> - + title="tabellenwertung); ?>"> + tabellenwertung); ?> + + + + + + + - + - - - - + - - - - - - + - - - - - + - + + + + + + + + - + spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) + if ($platz == 1 + || $spielpunkte_gewonnen != $row->spielpunkte_gewonnen + || $spielpunkte_verloren != $row->spielpunkte_verloren + || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) $tatsaechlicher_platz = $platz; + $spielpunkte_gewonnen = $row->spielpunkte_gewonnen; + $spielpunkte_verloren = $row->spielpunkte_verloren; + $punkte_gewonnen = $row->punkte_gewonnen; + $punkte_verloren = $row->punkte_verloren; + $platz++; + if (!$allein_angezeigt && $tatsaechlicher_platz > 3) break; + + if (!empty($filter_teams) && $row->team_id != $filter_teams) + continue; ?> @@ -6270,6 +6329,8 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a teamname)) + echo "
" . htmlentities_utf8($row->teamname); ?> @@ -6293,32 +6354,27 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a if ($spielerstatistik->tabellenwertung != 0) { ?> - leistungsindex); ?> + leistungsindex; ?> + + spielpunkte_gewonnen; ?> + + spielpunkte_verloren; ?> + siege + $row->niederlagen + $row->unentschieden; ?> - siege + $row->niederlagen + $row->unentschieden; ?> - tabellenwertung == 0 ? "" : "") . $row->spielpunkte_gewonnen . ($spielerstatistik->tabellenwertung == 0 ? "" : ""); ?> - spielpunkte_verloren; ?> - punkte_gewonnen; ?> - punkte_verloren; ?> - 0) ? round((($row->siege * 2 + $row->unentschieden) / ($spiele_gesamt * 2)) * 100) . "%" : "-"; ?> + quotient . " %"; ?> + siege + $row->niederlagen + $row->unentschieden; ?> siege; ?> unentschieden; ?> niederlagen; ?> + punkte_gewonnen; ?> + punkte_verloren; ?> spielpunkte_gewonnen; - $spielpunkte_verloren = $row->spielpunkte_verloren; - $punkte_gewonnen = $row->punkte_gewonnen; - $punkte_verloren = $row->punkte_verloren; - $platz++; } ?> diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 837542e..a6685a5 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -2913,7 +2913,7 @@ class HTML_sportsmanager_admin   @@ -3566,7 +3566,7 @@ class HTML_sportsmanager_admin + + - + @@ -4861,6 +4871,29 @@ class HTML_sportsmanager_admin + + + + + + + + + - + @@ -7326,8 +7364,8 @@ class HTML_sportsmanager_admin - + onclick="const t = this.form.task; t.value = 'admin_ordnungsstrafe_mailen';"/> + @@ -7349,7 +7387,7 @@ class HTML_sportsmanager_admin
:
- +
vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?> ausgetreten ? Text::_('COM_SPORTSMANAGER_YES') : Text::_('COM_SPORTSMANAGER_NO'); ?> + verein_id])){ + $emails = implode(';', $ansprechpartner[$row->verein_id]); + echo "E-Mail "; + } + ?> + X
+ + + +
0) { $k = 0; - foreach ($rows as $row) { + foreach ($rows as $row) { ?>
- begegnung_id); ?>"> begegnung_id; ?> @@ -7424,7 +7462,7 @@ class HTML_sportsmanager_admin Liga); ?> - Heim == $row->beantragt_von) echo "" . htmlentities_utf8($row->Heim) . ""; else @@ -7465,7 +7503,7 @@ class HTML_sportsmanager_admin   { t.value = 'admin_verbandsorgane'; }, 100);"/> - +
- +
@@ -7959,7 +7997,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void - platz2_zeigen) continue; if ($i == 3 && !$halloffame->platz3_zeigen) continue; @@ -8324,8 +8362,8 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void - spielform == 1){ $index_vereinid = "verein_id_" . $p; $index_team = "teamname_" . $p; @@ -8349,9 +8387,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void value="$index_team) : ''; ?>"/> - spielform == 2 || $halloffame->spielform == 3){ $index_spieler1id = "spieler1_id_" . $p; $index_spieler1 = "spieler1_" . $p; @@ -8391,15 +8429,15 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void -   - + @@ -8409,7 +8447,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void - "; else @@ -9711,7 +9749,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void "> + + anzahl_verschiebungen; ?> name)) echo htmlentities_utf8($row->name); ?> + + team_id])){ + $emails = implode(';', $ansprechpartner[$row->team_id]); + echo "E-Mail "; + } + ?> + begegnungen == 0) { ?> - + 'bezeichnung); ?> ': - +
@@ -11066,10 +11114,10 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void $Spieltagname = "Runde " . $row->spieltag; else $Spieltagname = "Spieltag " . $row->spieltag; - - if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "") + + if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "") $Spieltagname .= " - " . $row->spieltag_titel; - + if ($Spieltagname_Buffer != $Spieltagname){ ?> @@ -11097,12 +11145,12 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void - + - - + + @@ -11322,7 +11370,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void value="spieltag_titel); ?>"/> - + @@ -11341,7 +11389,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void title="Spielnummer (optional)" name="spiel_nr"> " . $i . ""; } @@ -11453,7 +11501,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void '); return false; } return true;"/> @@ -12494,7 +12542,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void value="spieltag_titel); ?>"/> - + @@ -12510,11 +12558,11 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
- diff --git a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini index 4695598..52fa11b 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -157,6 +157,7 @@ COM_SPORTSMANAGER_DEFEAT="Niederlage" COM_SPORTSMANAGER_DEFEATS="Niederlagen" COM_SPORTSMANAGER_DEFEATS_SHORTCUT="N" COM_SPORTSMANAGER_GOALS="Tore" +COM_SPORTSMANAGER_GOALS_SHORTCUT="T" COM_SPORTSMANAGER_SETS="Sätze" COM_SPORTSMANAGER_POINT="Punkt" COM_SPORTSMANAGER_POINTS="Punkte" @@ -169,9 +170,9 @@ COM_SPORTSMANAGER_GAME_POINTS="Spielpunkte" COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="SP" COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (eine Mannschaft)" COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (Mannschaften zusammen)" -COM_SPORTSMANAGER_DIFFERENCE="Differenz" -COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Punktedifferenz" -COM_SPORTSMANAGER_POINTS_RATIO="Punkteverhältnis" +COM_SPORTSMANAGER_DIFFERENCE="Differenz Tore" +COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Differenz Spielpunkte" +COM_SPORTSMANAGER_POINTS_RATIO="Verhältnis Spielpunkte" COM_SPORTSMANAGER_SCHEDULE_DATE="Zeitpunkt" COM_SPORTSMANAGER_TEAM_HOME="Heim" COM_SPORTSMANAGER_TEAM_VISITOR="Gast" @@ -296,7 +297,6 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="Es müssen mindestens %d Termine v COM_SPORTSMANAGER_REJECT_SHIFT="Verschiebung ablehnen" COM_SPORTSMANAGER_TO="bis" COM_SPORTSMANAGER_PLAYER_STATISTICS="Spielerstatistiken" -COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="LI" COM_SPORTSMANAGER_WON="gewonnen" COM_SPORTSMANAGER_LOST="verloren" COM_SPORTSMANAGER_RATE="Siegquote" @@ -500,6 +500,8 @@ COM_SPORTSMANAGER_WIN_1_POINT="Sieg: 1 Punkt" COM_SPORTSMANAGER_WIN_2_POINTS="Sieg: 2 Punkte, Unentschieden: 1 Punkt" COM_SPORTSMANAGER_WIN_3_POINTS="Sieg: 3 Punkte, Unentschieden: 1 Punkt" COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Begegnung abgeschlossen bei" +COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Spiele in Spielerstatistik" +COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL="Alle Spiele" COM_SPORTSMANAGER_GENERALLY="Allgemein" COM_SPORTSMANAGER_TYPE="Typ" COM_SPORTSMANAGER_ELO_MIN="Elo min." @@ -555,8 +557,17 @@ COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="bei gleicher Punktzahl" COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="bei gleicher Punktzahl, Satzpunkte" COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="bei gleicher Punktzahl, Satzpunkte, Tore" COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz" -COM_SPORTSMANAGER_PERFORMANCE_INDEX="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..." +COM_SPORTSMANAGER_PERFORMANCE_INDEX0="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz" +COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Leistungsindex (S * P+ * 10) / (P+ + P-), Spielpunkte gewonnen, ..." +COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (Siege*2 + Unentschieden + Tordifferenz)" +COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Effizienzindex (T+ / (T+ + T-))" +COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Punkteschnitt (P+ / Anzahl Sätze)" +COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Einzelstatistik aus allen Spielen" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Einzelstatistik aus Einzel-Spielen" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Einzelstatistik aus Doppel-Spielen" @@ -1102,4 +1113,6 @@ COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch" COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit allen historischen Einträgen gelöscht. Willst du den Spielbericht wirklich löschen?" COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Spielbericht gelöscht" COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gelöscht!" -COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur" \ No newline at end of file +COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur" +COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele" +COM_SPORTSMANAGER_SELECT_ALL="Alle" \ No newline at end of file diff --git a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini index 165df52..8013911 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -157,6 +157,7 @@ COM_SPORTSMANAGER_DEFEAT="Defeat" COM_SPORTSMANAGER_DEFEATS="Defeats" COM_SPORTSMANAGER_DEFEATS_SHORTCUT="F" COM_SPORTSMANAGER_GOALS="Goals" +COM_SPORTSMANAGER_GOALS_SHORTCUT="G" COM_SPORTSMANAGER_SETS="Sets" COM_SPORTSMANAGER_POINT="Point" COM_SPORTSMANAGER_POINTS="Points" @@ -169,9 +170,9 @@ COM_SPORTSMANAGER_GAME_POINTS="Game points" COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="GP" COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (one team)" COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (teams together)" -COM_SPORTSMANAGER_DIFFERENCE="Difference" -COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in points" -COM_SPORTSMANAGER_POINTS_RATIO="Points ratio" +COM_SPORTSMANAGER_DIFFERENCE="Goal difference" +COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in game points" +COM_SPORTSMANAGER_POINTS_RATIO="Game points ratio" COM_SPORTSMANAGER_SCHEDULE_DATE="Appointment date" COM_SPORTSMANAGER_TEAM_HOME="Home" COM_SPORTSMANAGER_TEAM_VISITOR="Visitor" @@ -296,7 +297,6 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="At least %d dates must be given comple COM_SPORTSMANAGER_REJECT_SHIFT="Reject shift" COM_SPORTSMANAGER_TO="until" COM_SPORTSMANAGER_PLAYER_STATISTICS="Player statistics" -COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="PI" COM_SPORTSMANAGER_WON="won" COM_SPORTSMANAGER_LOST="lost" COM_SPORTSMANAGER_RATE="Winning rate" @@ -500,6 +500,8 @@ COM_SPORTSMANAGER_WIN_1_POINT="Win: 1 point" COM_SPORTSMANAGER_WIN_2_POINTS="Win: 2 points, draw: 1 point" COM_SPORTSMANAGER_WIN_3_POINTS="Win: 3 points, draw: 1 point" COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Match won at" +COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Games in player statistics" +COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL="All games" COM_SPORTSMANAGER_GENERALLY="Generally" COM_SPORTSMANAGER_TYPE="Type" COM_SPORTSMANAGER_ELO_MIN="Elo min." @@ -555,8 +557,17 @@ COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="Tie: pts" COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="Tie: pts, set points" COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="Tie: pts, set points, goals" COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Game points won, game points lost, point difference" -COM_SPORTSMANAGER_PERFORMANCE_INDEX="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..." +COM_SPORTSMANAGER_PERFORMANCE_INDEX0="Game points won, game points lost, point difference" +COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Performance index (games * P+ * 10) / (P+ + P-), game points won, ..." +COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (victories*2 + draws + goal difference)" +COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Efficency index (G+ / (G+ + G-))" +COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Set point average (P+ / count sets)" +COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI" +COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Individual statistics of all games" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Individual statistics of singles games" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Individual statistics of doubles games" @@ -1102,4 +1113,6 @@ COM_SPORTSMANAGER_SWAP_MATCH="Swap home advantage" COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="The match report and all its history will be deleted. Are you sure you want to delete the match report?" COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Match report deleted" COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="The match report has been successfully deleted!" -COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected" \ No newline at end of file +COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected" +COM_SPORTSMANAGER_MIN_MATCHES="Min count matches" +COM_SPORTSMANAGER_SELECT_ALL="All" \ No newline at end of file diff --git a/src/structure/script.php b/src/structure/script.php index 6bebe14..0b113ff 100644 --- a/src/structure/script.php +++ b/src/structure/script.php @@ -526,6 +526,7 @@ return new class () implements InstallerScriptInterface . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," . "\n `spieler_2_id` int(11) DEFAULT NULL," + . "\n `team_id` INT(11) DEFAULT NULL," . "\n `siege` smallint(6) DEFAULT NULL," . "\n `unentschieden` smallint(6) DEFAULT NULL," . "\n `niederlagen` smallint(6) DEFAULT NULL," @@ -789,6 +790,7 @@ return new class () implements InstallerScriptInterface . "\n `spielpunkte_bedingung` tinyint(4) NOT NULL DEFAULT '0'," . "\n `spielernamen` tinyint(4) NOT NULL DEFAULT '0'," . "\n `heimtausch` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `spiele_in_spielerstatistik` tinyint(4) NOT NULL DEFAULT '0'," . "\n `modus` varchar(200) NOT NULL DEFAULT ''," . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," . "\n PRIMARY KEY (`teamspiel_modus_id`)" @@ -1147,7 +1149,7 @@ return new class () implements InstallerScriptInterface . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verstoesse` (" . "\n `verstoesse_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `regelwerke_id` int(11) NOT NULL DEFAULT 0," @@ -1163,7 +1165,7 @@ return new class () implements InstallerScriptInterface . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_ordnungsstrafen` (" . "\n `ordnungsstrafen_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `verstoesse_id` int(11) NOT NULL DEFAULT 0," @@ -1181,7 +1183,7 @@ return new class () implements InstallerScriptInterface . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_email_vorlagen` (" . "\n `email_vorlagen_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `vorlage` varchar(64) NOT NULL," @@ -1210,7 +1212,7 @@ return new class () implements InstallerScriptInterface . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_mitglied_von_verbandsorgan` (" . "\n `mitglied_von_verbandsorgan_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `verbandsorgane_id` int(11) DEFAULT NULL," @@ -1272,7 +1274,7 @@ return new class () implements InstallerScriptInterface $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '119';"; + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '120';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } @@ -1303,11 +1305,11 @@ return new class () implements InstallerScriptInterface $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'turnierbaum_zeigen', wert = '0';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'ordnungsstrafen_verwenden', wert = '0';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'spalte_mitglieder_zeigen', wert = '1';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } @@ -1320,7 +1322,7 @@ return new class () implements InstallerScriptInterface . "\n VALUES ('Beliebig', '0', '0', '0', '1', '3', '0');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "INSERT IGNORE INTO `#__sportsmanager_email_vorlagen` (`email_vorlagen_id`, `vorlage`) VALUES (NULL, 'Ordnungsstrafe');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } @@ -1328,7 +1330,7 @@ return new class () implements InstallerScriptInterface $query = "INSERT IGNORE INTO `#__sportsmanager_email_vorlagen` (`email_vorlagen_id`, `vorlage`) VALUES (NULL, 'Spielverlegung');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "INSERT #__sportsmanager_rangliste_system" . "\n SET systembezeichnung = 'Klostermann/Wahle (1 Punkt für letzten Platz)'," . "\n status = '1'," @@ -1820,35 +1822,35 @@ return new class () implements InstallerScriptInterface $query = "DROP TABLE IF EXISTS `#__sportsmanager_verteiler`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_regelwerke`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_verstoesse`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_ordnungsstrafen`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_email_vorlagen`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_verbandsorgane`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_mitglied_von_verbandsorgan`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_halloffame`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "DROP TABLE IF EXISTS `#__sportsmanager_mitglied_von_halloffame`;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); }