diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 20b3eff..ef8e06c 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -4525,6 +4525,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'); @@ -4572,7 +4573,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)); @@ -4590,6 +4595,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); diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 0ff9d98..c4b9ce8 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -5825,17 +5825,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(); @@ -5868,6 +5874,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; @@ -5888,6 +5896,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; @@ -6014,6 +6026,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," @@ -6024,7 +6041,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()) { @@ -6051,6 +6069,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," @@ -6064,6 +6086,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()) { @@ -7356,7 +7379,7 @@ function spielerstatistiken(): void $max_spiele = loadResult($db, $query); $spielerstatistik->min_spiele = round($max_spiele/2); } - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname," + $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," @@ -7375,10 +7398,11 @@ function spielerstatistiken(): void } 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(punkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + $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 AND siege + unentschieden + niederlagen >= $spielerstatistik->min_spiele"; @@ -7386,7 +7410,7 @@ function spielerstatistiken(): void $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; else $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - $spielerstatistik_punkte = loadObjectList($db, $query); + $spielerstatistik_punkte = loadObjectList($db, $query); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, $details_anzeigen); } @@ -7474,34 +7498,35 @@ function spielerstatistik(): void } // Spielerstatistikpunkte ermitteln - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname," + $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 , 0 AS leistungsindex"; + $query .= "\n , spielpunkte_gewonnen 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"; + $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 .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + $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(punkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + $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 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, quotient DESC, 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); 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 af4be4d..183901f 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6207,21 +6207,19 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a if ($spielerstatistik->tabellenwertung > 0) { ?> - + title="tabellenwertung); ?>"> + tabellenwertung); ?> - + title=""> + + - + title=""> + - - + + title=""> + + - - + title=""> + - teamname)) + echo "
" . htmlentities_utf8($row->teamname); ?> @@ -6320,7 +6318,7 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a } else { ?> - punkte_gewonnen; ?> + spielpunkte_gewonnen; ?> spielpunkte_verloren; ?> + + + + + + + + + + + + +