mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
Einige Optimierungen durchgeführt.
This commit is contained in:
@@ -5267,54 +5267,24 @@ function updateDatabase(): void
|
||||
}
|
||||
|
||||
if ($datenbank_version < 104) {
|
||||
$query = $db->getQuery(true)
|
||||
->select('COUNT(*)')
|
||||
->from('INFORMATION_SCHEMA.COLUMNS')
|
||||
->where('TABLE_NAME = ' . $db->quote($db->replacePrefix('#__sportsmanager_veranstaltung')))
|
||||
->where('COLUMN_NAME = ' . $db->quote('direktervergleich'));
|
||||
$db->setQuery($query);
|
||||
$exists = (bool)$db->loadResult();
|
||||
|
||||
if (!$exists) {
|
||||
$query = "ALTER TABLE #__sportsmanager_veranstaltung ADD direktervergleich INT(4) NOT NULL DEFAULT '0' AFTER tabellenwertung;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
|
||||
$query = "ALTER TABLE #__sportsmanager_veranstaltung ADD direktervergleich INT(4) NOT NULL DEFAULT '0' AFTER tabellenwertung;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
|
||||
$query = $db->getQuery(true)
|
||||
->select('COUNT(*)')
|
||||
->from('INFORMATION_SCHEMA.COLUMNS')
|
||||
->where('TABLE_NAME = ' . $db->quote($db->replacePrefix('#__sportsmanager_team')))
|
||||
->where('COLUMN_NAME = ' . $db->quote('setzliste_nr'));
|
||||
$db->setQuery($query);
|
||||
$exists = (bool)$db->loadResult();
|
||||
|
||||
if (!$exists) {
|
||||
$query = "ALTER TABLE #__sportsmanager_team ADD setzliste_nr INT(4) NULL DEFAULT NULL AFTER veranstaltung_id;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
}
|
||||
|
||||
$query = $db->getQuery(true)
|
||||
->select('COUNT(*)')
|
||||
->from('INFORMATION_SCHEMA.COLUMNS')
|
||||
->where('TABLE_NAME = ' . $db->quote($db->replacePrefix('#__sportsmanager_begegnung')))
|
||||
->where('COLUMN_NAME = ' . $db->quote('spiel_nr'));
|
||||
$db->setQuery($query);
|
||||
$exists = (bool)$db->loadResult();
|
||||
|
||||
if (!$exists) {
|
||||
$query = "ALTER TABLE #__sportsmanager_begegnung ADD spiel_nr INT(4) NULL DEFAULT NULL AFTER spieltag;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
}
|
||||
$query = "ALTER TABLE #__sportsmanager_team ADD setzliste_nr INT(4) NULL DEFAULT NULL AFTER veranstaltung_id;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
|
||||
$query = "ALTER TABLE #__sportsmanager_begegnung ADD spiel_nr INT(4) NULL DEFAULT NULL AFTER spieltag;";
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
|
||||
$query = "UPDATE #__sportsmanager_einstellungen"
|
||||
. "\n SET wert = '104'"
|
||||
|
||||
@@ -1620,7 +1620,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
die($db->stderr(true));
|
||||
}
|
||||
$spieltage = $db->loadObjectList();
|
||||
$anzahl_spieltage_komplett = count($spieltage);
|
||||
$anzahl_spieltage_komplett = $db->loadResult();
|
||||
|
||||
// Spieltage ermitteln, an denen schon eine Begegnung ausgetragen wurde
|
||||
$query = "SELECT DISTINCT spieltag"
|
||||
@@ -1634,7 +1634,6 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
die($db->stderr(true));
|
||||
}
|
||||
$spieltage = $db->loadObjectList();
|
||||
$anzahl_spieltage_gespielt = count($spieltage);
|
||||
|
||||
$aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0;
|
||||
if ($spieltag == 0 || $veranstaltung->tabellenwertung >= 21)
|
||||
@@ -1644,45 +1643,11 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
$teams = getTabelleAktuellerSpieltag($veranstaltung);
|
||||
} else {
|
||||
$teams = getTabelleSpieltag($veranstaltung,$spieltag);
|
||||
if ($veranstaltung->direktervergleich AND $spieltag >= $anzahl_spieltage_komplett/2){
|
||||
$teams = getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag);
|
||||
}
|
||||
}
|
||||
|
||||
if ($veranstaltung->direktervergleich AND $spieltag >= $anzahl_spieltage_komplett/2){
|
||||
$Gesamtpunkte = 1000;
|
||||
$Anzahl_Spiele = 1000;
|
||||
$Platz = 0;
|
||||
foreach($teams AS $key => $value){
|
||||
if (($Gesamtpunkte != $value->gesamtpunkte) OR ($Anzahl_Spiele != $value->anzahl_spiele)){
|
||||
$Gesamtpunkte = $value->gesamtpunkte;
|
||||
$Anzahl_Spiele = $value->anzahl_spiele;
|
||||
$Platz = $value->platz;
|
||||
@$Punktgleiche_Mannschaften[$Platz] = $value->team_id;
|
||||
}
|
||||
else{
|
||||
@$Punktgleiche_Mannschaften[$Platz] .= ",".$value->team_id;
|
||||
@$Korrektur[$Platz] = $Punktgleiche_Mannschaften[$Platz];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($Korrektur)){
|
||||
foreach($Korrektur AS $key => $value){
|
||||
$teams_korrektur = getTabelleSpieltag($veranstaltung,$spieltag,$value,$key-1);
|
||||
foreach($teams_korrektur AS $key1 => $value1){
|
||||
foreach($teams AS $key2 => $value2){
|
||||
if ($value2->team_id == $value1->team_id){
|
||||
$value2->platz = $value1->platz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Tabelle neu sortieren
|
||||
usort($teams, function($a, $b) {
|
||||
return $a->platz <=> $b->platz;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if (isJson()) {
|
||||
return JSON_sportsmanager::tabelleAnzeigen($modus, $teams);
|
||||
} else {
|
||||
@@ -1707,6 +1672,49 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
return "";
|
||||
}
|
||||
|
||||
function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag)
|
||||
{
|
||||
|
||||
$gesamtpunkte = 1000;
|
||||
$anzahlSpiele = 1000;
|
||||
$platz = 0;
|
||||
$punktgleicheMannschaften = [];
|
||||
$korrekturen = [];
|
||||
|
||||
foreach($teams AS $team){
|
||||
if (($gesamtpunkte != $team->gesamtpunkte) OR ($anzahlSpiele != $team->anzahl_spiele)){
|
||||
$gesamtpunkte = $team->gesamtpunkte;
|
||||
$anzahlSpiele = $team->anzahl_spiele;
|
||||
$platz = $team->platz;
|
||||
$punktgleicheMannschaften[$platz] = $team->team_id;
|
||||
}
|
||||
else{
|
||||
$punktgleicheMannschaften[$platz] .= ",".$team->team_id;
|
||||
$korrekturen[$platz] = $punktgleicheMannschaften[$platz];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($korrekturen)){
|
||||
foreach($korrekturen AS $key => $korrektur){
|
||||
$teamsKorrektur = getTabelleSpieltag($veranstaltung,$spieltag,$korrektur,$key-1);
|
||||
foreach($teamsKorrektur AS $teamKorrektur){
|
||||
foreach($teams AS $team){
|
||||
if ($team->team_id == $teamKorrektur->team_id){
|
||||
$team->platz = $teamKorrektur->platz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Tabelle neu sortieren
|
||||
usort($teams, function($a, $b) {
|
||||
return $a->platz <=> $b->platz;
|
||||
});
|
||||
|
||||
return $teams;
|
||||
}
|
||||
|
||||
function getTabelleAktuellerSpieltag($veranstaltung)
|
||||
{
|
||||
$db = getDatabase();
|
||||
@@ -1721,8 +1729,7 @@ function getTabelleAktuellerSpieltag($veranstaltung)
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
$teams = $db->loadObjectList();
|
||||
return $teams;
|
||||
return $db->loadObjectList();
|
||||
}
|
||||
|
||||
function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_platz = 0)
|
||||
@@ -1773,7 +1780,7 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
|
||||
$query .= "\n ORDER BY spielpunkte_quotient DESC, punkte_quotient DESC, teamname";
|
||||
else
|
||||
$query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, teamname";
|
||||
//echo $query;
|
||||
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
@@ -4970,7 +4977,7 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
die($db->stderr(true));
|
||||
}
|
||||
$spieltage = $db->loadObjectList();
|
||||
$anzahl_spieltage_komplett = count($spieltage);
|
||||
$anzahl_spieltage_komplett = $db->loadResult();
|
||||
|
||||
// Spieltage ermitteln, an denen schon eine Begegnung ausgetragen wurde
|
||||
$query = "SELECT DISTINCT spieltag"
|
||||
@@ -4984,43 +4991,12 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
die($db->stderr(true));
|
||||
}
|
||||
$spieltage = $db->loadObjectList();
|
||||
$anzahl_spieltage_gespielt = count($spieltage);
|
||||
|
||||
$anzahl_spieltage_gespielt = $db->loadResult();
|
||||
$aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0;
|
||||
|
||||
// Direkter Vergleich, wenn mindestens die Hälfte der Spieltage gespielt sind.
|
||||
if ($veranstaltung->direktervergleich AND $anzahl_spieltage_gespielt >= $anzahl_spieltage_komplett/2){
|
||||
$Gesamtpunkte = 1000;
|
||||
$Anzahl_Spiele = 1000;
|
||||
$Platz = 0;
|
||||
foreach($teams AS $key => $value){
|
||||
if (($Gesamtpunkte != $value->gesamtpunkte) OR ($Anzahl_Spiele != $value->anzahl_spiele)){
|
||||
$Gesamtpunkte = $value->gesamtpunkte;
|
||||
$Anzahl_Spiele = $value->anzahl_spiele;
|
||||
$Platz = $value->platz;
|
||||
@$Punktgleiche_Mannschaften[$Platz] = $value->team_id;
|
||||
}
|
||||
else{
|
||||
@$Punktgleiche_Mannschaften[$Platz] .= ",".$value->team_id;
|
||||
@$Korrektur[$Platz] = $Punktgleiche_Mannschaften[$Platz];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($Korrektur)){
|
||||
foreach($Korrektur AS $key => $value){
|
||||
$teams_korrektur = getTabelleSpieltag($veranstaltung,999,$value,$key-1);
|
||||
foreach($teams_korrektur AS $key1 => $value1){
|
||||
foreach($teams AS $key2 => $value2){
|
||||
if ($value2->team_id == $value1->team_id){
|
||||
$value2->platz = $value1->platz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Tabelle neu sortieren
|
||||
usort($teams, function($a, $b) {
|
||||
return $a->platz <=> $b->platz;
|
||||
});
|
||||
$teams = getTabelleDirekterVergleich($teams,$veranstaltung,$aktueller_spieltag);
|
||||
}
|
||||
|
||||
$platz = 1;
|
||||
|
||||
@@ -7206,7 +7206,7 @@ class HTML_sportsmanager_admin
|
||||
</tr>
|
||||
<tr id="tr_hthr">
|
||||
<td nowrap style="width: 20%; text-align: right">
|
||||
<label for="direktervergleich"><?php echo Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD'); ?>
|
||||
<label for="dd_hthr"><?php echo Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD'); ?>
|
||||
:</label>
|
||||
</td>
|
||||
<td nowrap>
|
||||
|
||||
Reference in New Issue
Block a user