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