refactor: remove execute() on reading queries

This commit is contained in:
Marvin Flock
2025-08-04 00:00:42 +02:00
parent 762bf50f62
commit 9861f59662
8 changed files with 860 additions and 4506 deletions
File diff suppressed because it is too large Load Diff
@@ -4,10 +4,8 @@
*/
use JetBrains\PhpStorm\NoReturn;
use Joomla\CMS\Application\AdministratorApplication;
use Joomla\CMS\Application\SiteApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\User\UserFactory;
use Joomla\CMS\User\UserFactoryInterface;
use Joomla\Registry\Registry;
@@ -43,8 +41,7 @@ function notifyChange($data): void
try {
$db = getDatabase();
$query = "SELECT wert from #__sportsmanager_einstellungen WHERE name='api_push_key'";
$db->setQuery($query);
$push_key = $db->loadResult();
$push_key = loadResult($db, $query);
$push_server = !empty($push_key) && isset(_payload($push_key)->aud) ? _payload($push_key)->aud : '';
if ($push_server != '' && $push_key != '') {
$url = $push_server . (str_ends_with($push_server, '/') ? '' : '/') . 'v1/notifications/send';
@@ -137,11 +134,8 @@ function begegnungVerlegenNotify($begegnung, $users, $vorschlagendes_team_id, $h
$expires->modify('+16 hours');
$db = getDatabase();
$query = "SELECT berechtigt_team_id from #__sportsmanager_berechtigt_fuer_team where berechtigt_user_id = $user_id";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
$team_id = $db->loadObjectList();
$team_id = loadObjectList($db, $query);
JSON_sportsmanager::JSON([
'token' => jwt_token([
'sub' => $user_id,
@@ -180,8 +174,7 @@ function begegnungVerlegenNotify($begegnung, $users, $vorschlagendes_team_id, $h
$db = getDatabase();
$query = $db->getQuery(true);
$query->select('id')->from('#__users')->where('username = "' . $username . '"')->setLimit(1);
$db->setQuery($query);
$user_id = $db->loadResult();
$user_id = loadResult($db, $query);
$user = $container->get(UserFactoryInterface::class)->loadUserById($user_id);
//TODO: pw verification modernising: use php native methods, however this also needs new pw hashing. maybe force a pw reset on all accounts
@@ -7,6 +7,8 @@ use Joomla\Database\DatabaseInterface;
use Joomla\Database\Mysql\MysqlDriver;
use Joomla\Database\Mysqli\MysqliDriver;
require_once JPATH_SITE . '/components/com_sportsmanager/database/util.php';
function initDatabase(): void
{
global $sportsmanager_database_local;
@@ -22,11 +24,7 @@ function initDatabase(): void
$sportsmanager_database_local = Factory::getContainer()->get(DatabaseInterface::class);
$query = "SELECT * FROM #__sportsmanager_einstellungen";
$sportsmanager_database_local->setQuery($query);
if (!$sportsmanager_database_local->execute()) {
die($sportsmanager_database_local->stderr(true));
}
$rows = $sportsmanager_database_local->loadObjectList();
$rows = loadObjectList($sportsmanager_database_local, $query);
$database_driver = "mysql";
$database_host = "";
@@ -75,14 +73,13 @@ function initDatabase(): void
if ($sportsmanager_database_external === NULL) {
echo "<strong>" . Text::_('COM_SPORTSMANAGER_CONNECTION_EXTERNAL_DB_FAILURE') . "</strong><br><br>";
} else {
$query = "SELECT wert FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'";
$sportsmanager_database_external->setQuery($query);
try {
if (!$sportsmanager_database_external->execute()) {
echo "<strong>" . Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_TABLES') . "</strong><br><br>";
$sportsmanager_database_external = NULL;
} else {
$db_version = $sportsmanager_database_external->loadResult();
$query = "SELECT wert FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'";
$db_version = loadResult($sportsmanager_database_external, $query);
if ($db_version < 38) {
echo "<strong>" . Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_VERSION') . "</strong><br><br>";
$sportsmanager_database_external = NULL;
@@ -20,27 +20,15 @@ function updateDatabase(): void
$termin_aktionen_email_setzen = false;
$query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "tsleague_basis' || name = '" . $db->getPrefix() . "tsleague_einstellungen'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) > 0) {
$query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "tsleague_basis'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) > 0) {
$query = "SELECT * FROM #__tsleague_basis";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) == 0)
die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY'));
@@ -337,11 +325,7 @@ function updateDatabase(): void
if ($datenbank_version < 9) {
$query = "SELECT spieler_id, geschlecht"
. "\n FROM #__tsleague_spieler";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$spieler = $db->loadObjectList();
$spieler = loadObjectList($db, $query);
$query = "ALTER TABLE #__tsleague_spieler CHANGE geschlecht geschlecht char(1)";
$db->setQuery($query);
@@ -855,11 +839,7 @@ function updateDatabase(): void
}
$query = "SELECT * FROM #__tsleague_einstellungen WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) == 0)
die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY'));
@@ -1728,11 +1708,7 @@ function updateDatabase(): void
}
$query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) == 0)
die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY'));
@@ -2174,11 +2150,7 @@ function updateDatabase(): void
. "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_bestenliste WHERE NOT ISNULL(erster_tag)"
. "\n GROUP BY jahr"
. "\n ORDER BY jahr";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$jahre = $db->loadObjectList();
$jahre = loadObjectList($db, $query);
if (count($jahre) > 0) {
foreach ($jahre as $jahr) {
@@ -2199,11 +2171,7 @@ function updateDatabase(): void
}
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC LIMIT 1";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$saisons = $db->loadObjectList();
$saisons = loadObjectList($db, $query);
$aktuelle_saison_id = $saisons[0]->saison_id;
// Saisons den Veranstaltungen zuordnen
@@ -2644,11 +2612,7 @@ function updateDatabase(): void
. "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
. "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)"
. "\n ORDER BY heimspielort_name, heimspielort_anschrift";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$teams = $db->loadObjectList();
$teams = loadObjectList($db, $query);
$heimspielort_name = "";
$heimspielort_strasse = "";
@@ -3020,11 +2984,7 @@ function updateDatabase(): void
$query = "SELECT * FROM #__sportsmanager_turniervoranmeldung"
. "\n ORDER BY turnierdisziplin_id";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
foreach ($rows as $row) {
$query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)"
@@ -3215,11 +3175,7 @@ function updateDatabase(): void
if ($datenbank_version < 40) {
$query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer, kategorie_id DESC";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
$typ = -1;
$nummer = -1;
@@ -4053,11 +4009,7 @@ function updateDatabase(): void
}
$query = "SELECT * FROM #__sportsmanager_moderator";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
foreach ($rows as $row) {
$moderator_id = $row->moderator_id;
@@ -5214,8 +5166,7 @@ function updateDatabase(): void
->from('INFORMATION_SCHEMA.COLUMNS')
->where('TABLE_NAME = ' . $db->quote($db->replacePrefix('#__sportsmanager_rangliste')))
->where('COLUMN_NAME = ' . $db->quote('lizenzen'));
$db->setQuery($query);
$exists = (bool)$db->loadResult();
$exists = (bool)loadResult($db, $query);
if (!$exists) {
$query = "ALTER TABLE #__sportsmanager_rangliste ADD lizenzen varchar(30) DEFAULT NULL AFTER streichergebnisse";
@@ -5230,8 +5181,7 @@ function updateDatabase(): void
->from('INFORMATION_SCHEMA.COLUMNS')
->where('TABLE_NAME = ' . $db->quote($db->replacePrefix('#__sportsmanager_spieler')))
->where('COLUMN_NAME = ' . $db->quote('lizenz'));
$db->setQuery($query);
$exists = (bool)$db->loadResult();
$exists = (bool)loadResult($db, $query);
if (!$exists) {
$query = "ALTER TABLE #__sportsmanager_spieler ADD lizenz varchar(30) DEFAULT NULL AFTER lizenznr";
@@ -5269,11 +5219,7 @@ function updateDatabase(): void
if ($termin_aktionen_email_setzen) {
$query = "SELECT aktion_user_id, termin_aktion_id"
. "\n FROM #__sportsmanager_termin_aktion";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
foreach ($rows as $row) {
$container = Factory::getContainer();
@@ -0,0 +1,47 @@
<?php
use Joomla\CMS\Log\Log;
/**
* @param $db
* @param $query
* @return mixed
* @since 2.0.5
*/
function loadObjectList($db, $query): mixed
{
try {
$db->setQuery($query);
$objList = $db->loadObjectList();
} catch (RuntimeException $e) {
Log::add("Database error: " . $e->getMessage(), Log::ERROR, "com_sportsmanager");
if(isJson()) {
abortWithError($e->getMessage());
} else {
throw $e;
}
}
return $objList;
}
/**
* @param $db
* @param $query
* @return mixed
* @since 2.0.5
*/
function loadResult($db, $query): mixed
{
try {
$db->setQuery($query);
$result = $db->loadResult();
} catch (RuntimeException $e) {
Log::add("Database error: " . $e->getMessage(), Log::ERROR, "com_sportsmanager");
if(isJson()) {
abortWithError($e->getMessage());
} else {
throw $e;
}
}
return $result;
}
File diff suppressed because it is too large Load Diff
@@ -10,7 +10,6 @@ use Joomla\CMS\Factory;
use Joomla\CMS\Log\Log;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\User\User;
use Joomla\CMS\Version;
defined('_JEXEC') or die('Restricted access');
@@ -7,6 +7,8 @@ use Joomla\CMS\Uri\Uri;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Folder;
require_once JPATH_SITE . '/components/com_sportsmanager/database/util.php';
const SPORTSMANAGER_JOOMLA_PATH = JPATH_ROOT;
define("SPORTSMANAGER_JOOMLA_URL", Uri::base());
@@ -241,11 +243,7 @@ function playerImage($playerId, $gender, $width = 180, $height = 240): ?string
. "\n FROM #__sportsmanager_spieler"
. "\n WHERE NOT ISNULL(aktueller_verein_id) AND NOT bild_ausblenden" . (!empty($spielernr) ? " AND spielernr = '$spielernr'" : " AND lizenznr = '$lizenznr'")
. "\n ORDER BY spieler_id DESC";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$rows = $db->loadObjectList();
$rows = loadObjectList($db, $query);
if (count($rows) < 1) {
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
header('HTTP/1.1 404 Not Found');