diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 9dd6e8d..56fec3e 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -6,6 +6,32 @@ // kein direkter Zugriff defined('_JEXEC') or die('Restricted access'); +function UhrzeitWandlerDE($Zeitstempel) +{ + //Jürgen Meyer 07.03.2025 + + $Temp = explode(' ',$Zeitstempel); + $Datum = $Temp[0]; + $Uhrzeit = $Temp[1]; + if (preg_match("/\d{2}\.\d{2}\.\d{4}/", $Datum)) + { + $Datum = substr($Datum,6,4)."-".substr($Datum,3,2)."-".substr($Datum,0,2); + } + else if (preg_match("/\d{4}\-\d{2}\-\d{2}/", $Datum)) + { + return $Zeitstempel; + } + return $Datum." ".$Uhrzeit; + +} + +function validateDate($date, $format = 'Y-m-d H:i:s') +{ + //Jürgen Meyer 07.03.2025 + $d = DateTime::createFromFormat($format, $date); + return $d && $d->format($format) == $date; +} + function adminUebersicht() { $db = getDatabase(); global $params; @@ -10761,6 +10787,152 @@ function Gruppenspiele($anzahlteams) { return $spiele; } +function GruppenspieleMatrix($anzahlteams) +{ + /* Generiert Gruppenspiele von 4 bis 14 Teams über eine Setzliste + * bei denen jedes Team genau einmal gegen jedes andere Team spielt, + * die Spiele an Anzahl Teams - 1 Spieltagen ausgetragen werden und + * jedes Team an jedem Tag genau ein Spiel austrägt + * Manschaften die am selben Spieltag auf 1,2 oder 3,4 oder 5,6 usw. haben nie gleichzeitig Heimspiel. + * + * Rückgabewert: Dreidimensionales Array mit Spieltag als erstem Index (1, ..., Anzahl Teams - 1), + * Spiel-Nr. als zweitem Index (1, ..., Anzahl Teams / 2) und als drittem Index 0 für das erste + * und 1 für das zweite Team, wobei jeweils die Teamnummer enthalten ist (1, ..., Anzahl Teams) + * + * (C) Jürgen Meyer 09.03.2025 + */ + + switch ($anzahlteams) { + case 4: + $Spalte_Heim = 12; + break; + case 6: + $Spalte_Heim = 10; + break; + case 8: + $Spalte_Heim = 8; + break; + case 10: + $Spalte_Heim = 6; + break; + case 12: + $Spalte_Heim = 4; + break; + case 14: + $Spalte_Heim = 2; + break; + } + + +//Spieltag_Nr;Spiel_Nr;Heim14;Gast14;Heim12;Gast12;Heim10;Gast10;Heim8;Gast8;Heim6;Gast6;Heim4;Gast4 +//Folgende Zeilen dürfen nicht eingrückt werden. +$str_Setzliste_Matrix = +"1;1;1;4;1;4;1;4;1;4;1;4;1;4 +1;2;3;2;3;2;3;2;3;2;3;2;3;2 +1;3;5;14;5;12;5;10;5;8;5;6;; +1;4;7;12;7;10;7;8;7;6;;;; +1;5;9;10;9;8;9;6;;;;;; +1;6;11;8;11;6;;;;;;;; +1;7;13;6;;;;;;;;;; +2;1;3;1;3;1;3;1;8;1;2;5;2;1 +2;2;2;5;2;5;2;5;2;5;3;4;3;4 +2;3;6;4;6;4;6;4;3;7;6;1;; +2;4;8;13;8;11;8;9;6;4;;;; +2;5;10;11;10;9;10;7;;;;;; +2;6;12;9;12;7;;;;;;;; +2;7;14;7;;;;;;;;;; +3;1;1;6;1;6;1;6;1;6;1;2;1;3 +3;2;4;8;4;8;4;8;4;2;4;6;4;2 +3;3;5;3;5;3;5;3;5;3;5;3;; +3;4;7;2;7;2;7;2;7;8;;;; +3;5;9;14;9;12;9;10;;;;;; +3;6;11;12;11;10;;;;;;;; +3;7;13;10;;;;;;;;;; +4;1;5;1;5;1;5;9;5;1;5;1;; +4;2;2;9;2;9;2;4;2;7;2;4;; +4;3;3;7;3;7;3;7;3;4;3;6;; +4;4;8;6;8;6;8;6;8;6;;;; +4;5;10;4;10;4;10;1;;;;;; +4;6;12;13;12;11;;;;;;;; +4;7;14;11;;;;;;;;;; +5;1;1;8;1;8;1;8;1;3;1;3;; +5;2;4;12;4;12;4;10;4;8;4;5;; +5;3;6;10;6;10;6;3;6;2;6;2;; +5;4;7;5;7;5;7;5;7;5;;;; +5;5;9;3;9;3;9;2;;;;;; +5;6;11;2;11;2;;;;;;;; +5;7;13;14;;;;;;;;;; +6;1;7;1;7;1;7;9;7;4;;;; +6;2;2;13;2;4;2;6;2;1;;;; +6;3;3;11;3;11;3;4;3;8;;;; +6;4;5;9;5;9;5;1;5;6;;;; +6;5;10;8;10;8;10;8;;;;;; +6;6;12;6;12;6;;;;;;;; +6;7;14;4;;;;;;;;;; +7;1;1;10;1;10;1;2;1;7;;;; +7;2;4;2;4;3;4;7;4;5;;;; +7;3;6;14;6;2;6;10;6;3;;;; +7;4;8;12;8;12;8;5;8;2;;;; +7;5;9;7;9;7;9;3;;;;;; +7;6;11;5;11;5;;;;;;;; +7;7;13;3;;;;;;;;;; +8;1;9;1;9;1;7;1;;;;;; +8;2;2;6;2;8;2;8;;;;;; +8;3;3;4;3;6;3;10;;;;;; +8;4;5;13;5;4;5;6;;;;;; +8;5;7;11;7;11;9;4;;;;;; +8;6;12;10;12;10;;;;;;;; +8;7;14;8;;;;;;;;;; +9;1;1;12;1;12;4;5;;;;;; +9;2;4;5;4;7;1;9;;;;;; +9;3;6;3;6;5;6;7;;;;;; +9;4;8;2;8;3;8;3;;;;;; +9;5;10;14;10;2;10;2;;;;;; +9;6;11;9;11;9;;;;;;;; +9;7;13;7;;;;;;;;;; +10;1;11;1;11;1;;;;;;;; +10;2;2;10;2;12;;;;;;;; +10;3;3;8;3;10;;;;;;;; +10;4;5;6;5;8;;;;;;;; +10;5;7;4;7;6;;;;;;;; +10;6;9;13;9;4;;;;;;;; +10;7;14;12;;;;;;;;;; +11;1;1;14;1;2;;;;;;;; +11;2;4;9;4;11;;;;;;;; +11;3;6;7;6;9;;;;;;;; +11;4;8;5;8;7;;;;;;;; +11;5;10;3;10;5;;;;;;;; +11;6;12;2;12;3;;;;;;;; +11;7;13;11;;;;;;;;;; +12;1;13;1;;;;;;;;;; +12;2;2;14;;;;;;;;;; +12;3;3;12;;;;;;;;;; +12;4;5;10;;;;;;;;;; +12;5;7;8;;;;;;;;;; +12;6;9;6;;;;;;;;;; +12;7;11;4;;;;;;;;;; +13;1;1;2;;;;;;;;;; +13;2;4;13;;;;;;;;;; +13;3;6;11;;;;;;;;;; +13;4;8;9;;;;;;;;;; +13;5;10;7;;;;;;;;;; +13;6;12;5;;;;;;;;;; +13;7;14;3;;;;;;;;;;"; + + $Spieltage = explode("\n",$str_Setzliste_Matrix); + $Zeile = 0; + foreach($Spieltage as $value) + { + $Spiel = explode(";",$value); + if($Spiel[$Spalte_Heim] == "") continue; + $Zeile++; + $Matrix[$Spiel[0]][$Spiel[1]][0] = $Spiel[$Spalte_Heim]; + $Matrix[$Spiel[0]][$Spiel[1]][1] = $Spiel[$Spalte_Heim+1]; + } + + return $Matrix; +} + function adminBegegnungenGenerierenForm() { $db = getDatabase(); $jinput = JFactory::getApplication()->input; @@ -10794,6 +10966,8 @@ function adminBegegnungenGenerierenForm() { } function adminBegegnungenGenerieren() { + //geändert am 07.03.2025 von Jürgen Meyer + $db = getDatabase(); $jinput = JFactory::getApplication()->input; @@ -10822,24 +10996,99 @@ function adminBegegnungenGenerieren() { } $teams = $db->loadObjectList(); + //Erstellen des Array Teams mit Überprüfung der Mannschaften + $teams_ok = true; for ($i = 1; $i <= $anzahlteams; $i++) { - $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); - if ($teamids[$i] == 0) die("Wrong id!"); + $team_id_form = $jinput->get('team_id_' . $i, 0, 'INT'); + if ($team_id_form == "") + { + $teams_ok = false; + } + else + { + if (!isset($teamids)) + { + $teamids[$i] = $team_id_form; + } + else + { + if (!in_array($team_id_form,$teamids)) + { + $teamids[$i] = $team_id_form; + } + else + { + $teams_ok = false; + } + } + } } - - $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; + + //Bei 1 wird nur Hinrunde gespielt, bei 2 wird Rückrunde gespielt + $runden = $jinput->get('runden', 0, 'INT'); + $generierung = $jinput->get('generierung', 0, 'var'); + //Bei 1 wird Datum überprüft, bei 0 nicht. + $datumscheck = $jinput->get('datumscheck', 0, 'INT'); + + $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; $spieltag_basis = array(); - for ($i = 1; $i <= ($spieltage * 2); $i++) { + for ($i = 1; $i <= ($spieltage * $runden); $i++) { $jahr = $jinput->get('datum_jahr_' . $i, 0, 'INT'); $kw = $jinput->get('datum_kw_' . $i, 0, 'INT'); - if ($jahr == 0 || $kw == 0) die("Wrong date!"); + $spieltag_nr = $jinput->get('spieltag_nr_' . $i, 0, 'INT'); + $startzeit = $jinput->get('startzeit_' . $i, 0, 'var'); + $startzeit = UhrzeitWandlerDE($startzeit); + if (!validateDate($startzeit)){$startzeit = "";} + if ($jahr == 0 && $kw == 0) die("Wrong date!"); $spieltag_basis[$i] = array(); $spieltag_basis[$i]["jahr"] = $jahr; $spieltag_basis[$i]["kw"] = $kw; + $spieltag_basis[$i]["startzeit"] = $startzeit; + $spieltag_basis[$i]["spieltag_nr"] = $spieltag_nr; + } - - $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); - + + //Überprüfung der Spieltag Nummer + $spieltage_ok = true; + foreach ($spieltag_basis as $value) + { + $spieltag_nr_form = $value["spieltag_nr"]; + if ($spieltag_nr_form == "") + { + $spieltage_ok = false; + } + else + { + if (!isset($spieltage_check)) + { + $spieltage_check[] = $spieltag_nr_form; + } + else + { + if (!in_array($spieltag_nr_form,$spieltage_check)) + { + $spieltage_check[] = $spieltag_nr_form; + } + else + { + $spieltage_ok = false; + } + } + } + } + + if ($generierung == "Setzliste") + { + //Generieren des Spielplans über Setzliste + $spiele = GruppenspieleMatrix($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); + } + if ($generierung == "Automatisch") + { + //Automatisches generieren des Spielplans + $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); + } + $Zeile = 0; + $datumsangaben = true; for ($spieltag = 1; $spieltag <= $spieltage; $spieltag++) { for ($spielnr = 1; $spielnr <= ($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams) / 2; $spielnr++) { if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams) @@ -10855,7 +11104,7 @@ function adminBegegnungenGenerieren() { break; } } - if ($heim_team == null) die("Team id not found!"); + if ($heim_team == null) continue; $gast_team = null; foreach ($teams as $t) { @@ -10864,46 +11113,333 @@ function adminBegegnungenGenerieren() { break; } } - if ($gast_team == null) die("Team id not found!"); + if ($gast_team == null) continue; - if ($heim_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $ts = getdate(mondaykw($spieltag_basis[$spieltag]["kw"], $spieltag_basis[$spieltag]["jahr"], $heim_team->heimspiel_wochentag - 1)); - $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); + if ($spieltag_basis[$spieltag]["startzeit"] != "") + { + $zeitpunkt = $spieltag_basis[$spieltag]["startzeit"]; } - - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$spieltag', '$heim_team_id', '$gast_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + else + { + if ($heim_team->heimspiel_wochentag == 0 OR $spieltag_basis[$spieltag]["kw"] == 0) + $zeitpunkt = NULL; + else { + $ts = getdate(mondaykw($spieltag_basis[$spieltag]["kw"], $spieltag_basis[$spieltag]["jahr"], $heim_team->heimspiel_wochentag - 1)); + $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d:00", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); + } } - - $weiterer_spieltag = $spieltag + $spieltage; - if ($gast_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $ts = getdate(mondaykw($spieltag_basis[$weiterer_spieltag]["kw"], $spieltag_basis[$weiterer_spieltag]["jahr"], $gast_team->heimspiel_wochentag - 1)); - $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); + + $spieltag_nr = $spieltag_basis[$spieltag]["spieltag_nr"]; + if (!validateDate($zeitpunkt)) + { + $zeitpunkt = NULL; + if ($datumscheck) $datumsangaben = false; } + + $Begegnung[$Zeile]['spieltag'] = $spieltag_nr; + $Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt; + $Begegnung[$Zeile]['heim_team_id'] = $heim_team_id; + $Begegnung[$Zeile]['gast_team_id'] = $gast_team_id; + $Zeile++; - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$weiterer_spieltag', '$gast_team_id', '$heim_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + + if ($runden == 2) + { + $weiterer_spieltag = $spieltag + $spieltage; + + if ($spieltag_basis[$weiterer_spieltag]["startzeit"] != "") + { + $zeitpunkt = $spieltag_basis[$weiterer_spieltag]["startzeit"]; + } + else + { + if ($gast_team->heimspiel_wochentag == 0 OR $spieltag_basis[$weiterer_spieltag]["kw"] == 0) + $zeitpunkt = NULL; + else { + $ts = getdate(mondaykw($spieltag_basis[$weiterer_spieltag]["kw"], $spieltag_basis[$weiterer_spieltag]["jahr"], $gast_team->heimspiel_wochentag - 1)); + $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d:00", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); + } + } + + $spieltag_nr = $spieltag_basis[$weiterer_spieltag]["spieltag_nr"]; + if (!validateDate($zeitpunkt)) + { + $zeitpunkt = NULL; + if ($datumscheck) $datumsangaben = false; + } + + $Begegnung[$Zeile]['spieltag'] = $spieltag_nr; + $Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt; + $Begegnung[$Zeile]['heim_team_id'] = $heim_team_id; + $Begegnung[$Zeile]['gast_team_id'] = $gast_team_id; + $Zeile++; + } } } + + if ($datumsangaben and $teams_ok and $spieltage_ok) + { + $Zeile = 1; + $query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, heim_team_id, gast_team_id) VALUES "; + foreach($Begegnung as $value) + { + if ($Zeile > 1){$query .= ", ";} + $query .= "(".$value['spieltag'].",".($value['zeitpunkt'] != NULL ? "'".$value['zeitpunkt']."'" : "NULL").",".$value['heim_team_id'].",".$value['gast_team_id'].") "; + $Zeile++; + } + $query .= ";"; + echo $query; + $db->setQuery($query); + + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + else + { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid, count($Begegnung)." ".JText::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME_CREATED')); + } + } + else + { + if (!$datumsangaben) + { + echo "
Der Datumscheck war nicht OK!!!
"; + } + if (!$teams_ok) + { + echo "
Jede Mannschaft muss genau einmal existieren!!!
"; + } + if (!$spieltage_ok) + { + echo "
Jeder Spieltag darf nur einmal existieren!!!
"; + } + ?>Zurückinput; + + $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(true); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungid" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + HTML_sportsmanager_admin::adminBegegnungenImportieren($veranstaltung, $rows); +} + +function adminBegegnungenImportieren() { + //Jürgen Meyer 07.03.2025 + $db = getDatabase(); + global $_FILES; + $jinput = JFactory::getApplication()->input; + $import = false; + + $veranstaltungid = $_POST['veranstaltung_id']; + + if ($veranstaltungid == 0) die("Missing id!"); + + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) + keinZugriff(); + + if ($jinput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + + return; + } + + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + + echo JText::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME2')."

"; + + $query = "SELECT team_id, teamname FROM #__sportsmanager_team WHERE veranstaltung_id = ".$veranstaltungid.";"; + $db->setQuery($query); + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + + + foreach ($rows as $value) + { + $Mannschaften[$value->teamname] = $value->team_id; + } + + if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED')); + + return; + } + + $handle = fopen($_FILES["daten"]["tmp_name"], "r"); + if (!$handle) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE')); + + return; + } + if (feof($handle)) { + redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_FILE_IS_EMPTY')); + + return; + } + + $Zeile = 1; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + $import = true; + while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) + { + if ($Zeile == 1) + { + $Titelzeile = array_flip($data); + } + else + { + $import_zeile = true; + $bgcolor ="green"; + //$Begegnungen[$Zeile] = $data; + $Begegnung[$Zeile]['spieltag'] = $data[$Titelzeile['Spieltag_Nr']]; + $Begegnung[$Zeile]['zeitpunkt'] = UhrzeitWandlerDE($data[$Titelzeile['Spielstart']]); + $Begegnung[$Zeile]['heim_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Heim']])]; + $Begegnung[$Zeile]['gast_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Gast']])]; + echo ""; + if ($Begegnung[$Zeile]['spieltag'] > 99 or $Begegnung[$Zeile]['spieltag'] < 1) + { + $bgcolor ="red"; + $import = false; + } + else + { + $bgcolor ="green"; + } + echo ""; + if (!validateDate($Begegnung[$Zeile]['zeitpunkt'])) + { + $bgcolor ="red"; + $import = false; + } + else + { + $bgcolor ="green"; + } + echo ""; + if ($Begegnung[$Zeile]['heim_team_id'] == "") + { + if ($data[$Titelzeile['Heim']] == "spielfrei") + { + $bgcolor ="orange"; + $import_zeile = false; + } + else + { + $bgcolor ="red"; + $import = false; + } + } + else + { + $bgcolor ="green"; + } + echo ""; + if ($Begegnung[$Zeile]['gast_team_id'] == "") + { + if ($data[$Titelzeile['Gast']] == "spielfrei") + { + $bgcolor ="orange"; + $import_zeile = false; + } + else + { + $bgcolor ="red"; + $import = false; + } + } + else + { + $bgcolor ="green"; + } + echo ""; + echo ""; + } + if ($import_zeile == false){unset($Begegnung[$Zeile]);} + $Zeile++; + } + echo "
SpieltagSpielstartHeimGast
".$data[$Titelzeile['Spieltag_Nr']]."".$data[$Titelzeile['Spielstart']]."".utf8_encode($data[$Titelzeile['Heim']])."".utf8_encode($data[$Titelzeile['Gast']])."
"; + fclose($handle); + + if ($import == true) + { + $Zeile = 1; + $query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, heim_team_id, gast_team_id) VALUES "; + foreach($Begegnung as $value) + { + if ($Zeile > 1){$query .= ", ";} + $query .= "(".$value['spieltag'].",'".$value['zeitpunkt']."',".$value['heim_team_id'].",".$value['gast_team_id'].") "; + $Zeile++; + } + $query .= ";"; + + $db->setQuery($query); + + if (!$result = $db->execute()) { + die($db->stderr(true)); + } + else + { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid, count($Begegnung)." ".JText::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME_IMPORTED')); + } + } + else + { + echo "
Die csv-Datei ist fehlerhaft und konnte nicht importiert werden! Siehe Tabelle oben!
"; + } + ?> +
+ + size="4"/> + + + +
+ input; - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); if ($veranstaltungid == 0) die("Missing id!"); @@ -14115,6 +14651,10 @@ function adminSaveTurnierdisziplinMeldung() { $db->setQuery( $query ); if (!$result = $db->execute()) { die($db->stderr(true)); } if ($db->loadResult() > 0) { + $query = "UNLOCK TABLES;"; + $db->setQuery( $query ); + if (!$result = $db->execute()) { die($db->stderr(true)); } + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid, "Die Meldung wurde nicht gespeichert, da zu mindestens einem der Spieler bereits eine Platzierung bei einer anderen Meldung eingetragen ist."); } } diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 723ea03..6a437a7 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -473,6 +473,12 @@ if ($task == "spielerbild") { case 'admin_begegnungen_generieren': adminBegegnungenGenerieren(); break; + case 'admin_begegnungen_importieren_form': + adminBegegnungenImportierenForm(); + break; + case 'admin_begegnungen_importieren': + adminBegegnungenImportieren(); + break; case 'admin_begegnungen_runde_erzeugen_form': adminBegegnungenRundeErzeugenForm(); break; @@ -8121,18 +8127,17 @@ function teamSpielplanXML() { function ranglistenpunkte() { $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); + $rangliste_id = JRequest::getInt('rangliste_id', 0); if ($rangliste_id == 0) die("Missing id!"); - $spieler_id = $jinput->get('spieler_id', 0, 'INT'); + $spieler_id = JRequest::getInt('spieler_id', 0); if ($spieler_id == 0) die("Missing id!"); - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $filter_saison_id = JRequest::getInt('filter_saison_id', 0); if ($filter_saison_id == 0) - $filter_saison_id = $jinput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + $filter_saison_id = JRequest::getInt('sportsmanager_filter_saison_id', 0, 'cookie'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_rangliste" diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/hilfe_gruppenspiele_erzeugen.pdf b/src/structure/components/com_sportsmanager/views/sportsmanager/hilfe_gruppenspiele_erzeugen.pdf new file mode 100644 index 0000000..35f02f6 Binary files /dev/null and b/src/structure/components/com_sportsmanager/views/sportsmanager/hilfe_gruppenspiele_erzeugen.pdf differ 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 624a7d0..2a27b63 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -5327,7 +5327,7 @@ class HTML_sportsmanager_admin $lizenzen = ['A', 'B', 'C', 'D']; foreach ($lizenzen as $lizenz) { - $checked = ($rangliste != null && is_array($lizenz) && in_array($lizenz, $rangliste->lizenzen)) ? ' checked': ''; + $checked = ($rangliste != null && in_array($lizenz, $rangliste->lizenzen)) ? ' checked': ''; echo '
'; } ?> @@ -8263,7 +8263,6 @@ class HTML_sportsmanager_admin static function adminBegegnungen($veranstaltung, $modus, $rows) { global $params; - ?>
'bezeichnung); ?> @@ -8284,6 +8283,9 @@ class HTML_sportsmanager_admin + + @@ -9283,41 +9285,126 @@ class HTML_sportsmanager_admin static function adminBegegnungenGenerieren($veranstaltung, $rows) { + //geändert am 07.03.2025 von Jürgen Meyer global $params; $anzahlteams = count($rows); - $jahr = $veranstaltung->erster_tag != null ? substr($veranstaltung->erster_tag, 0, 4) : 0; + if ($anzahlteams % 2) + { + $rows[$anzahlteams] = (object) array('team_id' => 0, + 'teamname' => 'spielfrei'); + $anzahlteams = count($rows); + } + $jahr = $veranstaltung->erster_tag != null ? substr($veranstaltung->erster_tag, 0, 4) : 0; ?> -
- 'bezeichnung); ?> - ':
+
+ + bezeichnung); ?> + :
-
+
+
-
+
+
+ + + + + + + + + + + + + + $spieltage) + { + $bgcolor = "#000033"; + } + else + { + $bgcolor = "#000099"; + } + if ($spieltag == 1){ + echo ""; + } + if ($spieltag == $spieltage + 1){ + echo ""; + } ?> - - + "; + echo ""; for ($teamnr = 1; $teamnr <= $anzahlteams; $teamnr += 2) { ?> - -
Grundeinstellungen
Runden + +
Generierung + +
Datumscheck + +
 
Hinrunde
Rückrunde (Bei Nur Hinrunde sind hier keine Eingaben erforderlich)
+ +
> . : - + ".$spieltag.""; + for ($i = 1; $i <= 99; $i++) + { + echo ""; + } + ?> + + +
 
Setzliste bzw. Erste Paarung
- + + : - - vs.
- - +
+
+
+ Kleine Anleitung + + +
+   + bezeichnung); ?>
+ +
+ Die Datei muss die Spalten Spieltag_Nr;Spielstart;Heim;Gast enthalten!
+ Die Daten müssen mit Semikolon getrennt sein
+ Die Spieltag_Nr muss eine Zahl zwischen 1 und 99 sein!
+ Spielstart muss das Format TT.MM.JJJJ hh:mm:ss oder YYYY-MM-DD hh:mm:ss haben!
+ Die Mannschaften Heim und Gast müssen in der Gruppe enthalten sein! +
+ +
+ + + + +
+ + + + + + +
+ : + + + + veranstaltung_id); ?> size="4"/> +
+
+ + + + + +
-
+
+ :
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 eed0a37..57bd1be 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -649,6 +649,10 @@ COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Bild innerhalb Mannschaft" COM_SPORTSMANAGER_ADD_MEETING="Begegnung hinzufügen" COM_SPORTSMANAGER_ROUND_GENERATION="Runde erzeugen" COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Gruppenspiele erzeugen" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME="Gruppenspiele importieren" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME2="Gruppenspiele: Importieren" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME_IMPORTED="Begegnungen wurden importiert" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME_CREATED="Begegnungen wurden erstellt" COM_SPORTSMANAGER_REMOVE_ALL_ENCOUNTERS="Willst du wirklich alle Begegnungen entfernen?" COM_SPORTSMANAGER_REMOVE_ALL_MATCHES="Alle Begegnungen entfernen" COM_SPORTSMANAGER_HOME_TEAM="Heimteam" @@ -694,6 +698,7 @@ COM_SPORTSMANAGER_NUMBER_DAYS="%d Tage" COM_SPORTSMANAGER_CALENDAR_WEEK="Kalenderwoche" COM_SPORTSMANAGER_CALENDAR_WEEK_SHORTCUT="KW" COM_SPORTSMANAGER_PAIRING="Paarung" +COM_SPORTSMANAGER_SETTING="Setzen" COM_SPORTSMANAGER_PAIRINGS="Paarungen" COM_SPORTSMANAGER_INTERMITTENT="Aussetzend" COM_SPORTSMANAGER_MAXIMUM_SETS="Sätze maximal" 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 8484415..706af8e 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -649,6 +649,10 @@ COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Image within team" COM_SPORTSMANAGER_ADD_MEETING="Add match" COM_SPORTSMANAGER_ROUND_GENERATION="Generate round" COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Generate group games" +COM_SPORTSMANAGER_Import_GROUP_GAME="Import group games" +COM_SPORTSMANAGER_Import_GROUP_GAME2="Group games: Import" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME_IMPORTED="matches were imported" +COM_SPORTSMANAGER_IMPORT_GROUP_GAME_CREATED="matches were created" COM_SPORTSMANAGER_REMOVE_ALL_ENCOUNTERS="Do you really want to remove all matches?" COM_SPORTSMANAGER_REMOVE_ALL_MATCHES="Remove all matches" COM_SPORTSMANAGER_HOME_TEAM="Home team" @@ -694,6 +698,7 @@ COM_SPORTSMANAGER_NUMBER_DAYS="%d days" COM_SPORTSMANAGER_CALENDAR_WEEK="Calendar week" COM_SPORTSMANAGER_CALENDAR_WEEK_SHORTCUT="CW" COM_SPORTSMANAGER_PAIRING="Fixture" +COM_SPORTSMANAGER_SETTING="Setting" COM_SPORTSMANAGER_PAIRINGS="Fixtures" COM_SPORTSMANAGER_INTERMITTENT="Skipping" COM_SPORTSMANAGER_MAXIMUM_SETS="Maximum sets"