diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 96725d2..0ff9d98 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -7312,6 +7312,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'); @@ -7341,10 +7342,22 @@ 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); foreach ($spielerstatistiken as $spielerstatistik) { - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname," + //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 = $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," + . "\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," @@ -7359,11 +7372,16 @@ function spielerstatistiken(): void $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(punkte_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 #__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 @@ -7379,6 +7397,7 @@ function spielerstatistiken(): void function spielerstatistik(): void { $db = getDatabase(); + global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $id = $jInput->get('id', 0, 'INT'); @@ -7394,6 +7413,7 @@ 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'); if ($filter_saison_id == 0) { $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); @@ -7430,9 +7450,33 @@ 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 if ($filter_min_spiele != 999) + $spielerstatistik->min_spiele = $filter_min_spiele; + } + // Spielerstatistikpunkte ermitteln $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname," - . "\n #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," + . "\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"; @@ -7444,11 +7488,16 @@ function spielerstatistik(): void $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(punkte_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 #__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 { @@ -7460,7 +7509,7 @@ function spielerstatistik(): void $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); @@ -7482,6 +7531,7 @@ function spielerstatistik(): void if (isJson()) { JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte); } else { + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); } 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 f83b9c7..af4be4d 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6016,9 +6016,10 @@ static function turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $me