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)) {
?>
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
|
|
+ |
+ |
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 |
@@ -4861,6 +4871,29 @@ class HTML_sportsmanager_admin
+
+
+
+ |
+
+ |
+
+
+ |
+
+
+
+
|
|
- ";
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){
?>
+
-
-
+
+
@@ -11322,7 +11370,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
value="spieltag_titel); ?>"/>
|