From aceb4ce7a5db0d63b05eeeec182f70c65e110e0a Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Fri, 28 Mar 2025 22:39:12 +0100 Subject: [PATCH] Move $drivers to SqlDriver --- adminer/drivers/mssql.inc.php | 2 +- adminer/drivers/mysql.inc.php | 5 ++--- adminer/drivers/oracle.inc.php | 2 +- adminer/drivers/pgsql.inc.php | 5 ++--- adminer/drivers/sqlite.inc.php | 2 +- adminer/dump.inc.php | 2 +- adminer/include/adminer.inc.php | 8 ++++---- adminer/include/auth.inc.php | 2 +- adminer/include/bootstrap.inc.php | 2 +- adminer/include/connect.inc.php | 2 +- adminer/include/design.inc.php | 4 ++-- adminer/include/driver.inc.php | 11 ++++------- adminer/include/functions.inc.php | 3 +-- compile.php | 4 ++-- editor/index.php | 2 +- phpstan.neon | 2 +- 16 files changed, 26 insertions(+), 32 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 8833583c..c83c2ed8 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -7,7 +7,7 @@ namespace Adminer; -$drivers["mssql"] = "MS SQL"; +add_driver("mssql", "MS SQL"); if (isset($_GET["mssql"])) { define('Adminer\DRIVER', "mssql"); diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index c6545d9e..726814f0 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -1,7 +1,7 @@ "MySQL / MariaDB") + $drivers; +SqlDriver::$drivers = array("server" => "MySQL / MariaDB") + SqlDriver::$drivers; if (!defined('Adminer\DRIVER')) { define('Adminer\DRIVER', "server"); // server - backwards compatibility @@ -366,7 +366,6 @@ if (!defined('Adminer\DRIVER')) { * @return string|Db string for error */ function connect(array $credentials) { - global $drivers; $connection = new Db; $error = $connection->attach($credentials[0], $credentials[1], $credentials[2]); if ($error) { @@ -378,7 +377,7 @@ if (!defined('Adminer\DRIVER')) { $connection->set_charset(charset($connection)); $connection->query("SET sql_quote_show_create = 1, autocommit = 1"); $connection->flavor = (preg_match('~MariaDB~', $connection->server_info) ? 'maria' : 'mysql'); - $drivers[DRIVER] = ($connection->flavor == 'maria' ? "MariaDB" : "MySQL"); + add_driver(DRIVER, ($connection->flavor == 'maria' ? "MariaDB" : "MySQL")); return $connection; } diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index 35841bfc..ccc413d9 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -1,7 +1,7 @@ attach($credentials[0], $credentials[1], $credentials[2]); if ($error) { @@ -314,7 +313,7 @@ if (isset($_GET["pgsql"])) { $connection->flavor = (preg_match('~CockroachDB~', $version) ? 'cockroach' : ''); $connection->server_info = preg_replace('~^\D*([\d.]+[-\w]*).*~', '\1', $version); if ($connection->flavor == 'cockroach') { // we don't use "PostgreSQL / CockroachDB" by default because it's too long - $drivers[DRIVER] = "CockroachDB"; + add_driver(DRIVER, "CockroachDB"); } return $connection; } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 67bbfb20..e4f7324b 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -1,7 +1,7 @@ server_info) . " dump\n\n"; + echo "-- Adminer " . VERSION . " " . get_driver(DRIVER) . " " . str_replace("\n", " ", $connection->server_info) . " dump\n\n"; if (JUSH == "sql") { echo "SET NAMES utf8; SET time_zone = '+00:00'; diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 77083bda..b85c0978 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -118,10 +118,10 @@ class Adminer { /** Print login form */ function loginForm(): void { - global $drivers, $adminer; + global $adminer; echo "\n"; // this is matched by compile.php - echo $adminer->loginFormField('driver', '
' . lang('System') . '', html_select("auth[driver]", $drivers, DRIVER, "loginDriver(this);")); + echo $adminer->loginFormField('driver', '
' . lang('System') . '', html_select("auth[driver]", SqlDriver::$drivers, DRIVER, "loginDriver(this);")); echo $adminer->loginFormField('server', '
' . lang('Server') . '', ''); // this is matched by compile.php echo $adminer->loginFormField('username', '
' . lang('Username') . '', '' . script("qs('#username').form['auth[driver]'].onchange();")); @@ -946,7 +946,7 @@ class Adminer { * @param string $missing can be "auth" if there is no database connection, "db" if there is no database selected, "ns" with invalid schema */ function navigation(string $missing): void { - global $drivers, $connection, $adminer; + global $connection, $adminer; echo "

" . $adminer->name() . " " . VERSION; $new_version = $_COOKIE["adminer_version"]; echo " " . (version_compare(VERSION, $new_version) < 0 ? h($new_version) : "") . ""; @@ -957,7 +957,7 @@ class Adminer { $output = ""; foreach ((array) $_SESSION["pwds"] as $vendor => $servers) { foreach ($servers as $server => $usernames) { - $name = h(get_setting("vendor-$vendor-$server") ?: $drivers[$vendor]); + $name = h(get_setting("vendor-$vendor-$server") ?: get_driver($vendor)); foreach ($usernames as $username => $password) { if ($password !== null) { $dbs = $_SESSION["db"][$vendor][$server][$username]; diff --git a/adminer/include/auth.inc.php b/adminer/include/auth.inc.php index 3db0f94c..7f9c56ca 100644 --- a/adminer/include/auth.inc.php +++ b/adminer/include/auth.inc.php @@ -182,7 +182,7 @@ if (isset($_GET["username"]) && is_string(get_password())) { if (is_object($connection)) { $driver = new Driver($connection); if ($connection->flavor) { - save_settings(array("vendor-" . DRIVER . "-" . SERVER => $drivers[DRIVER])); + save_settings(array("vendor-" . DRIVER . "-" . SERVER => get_driver(DRIVER))); } } } diff --git a/adminer/include/bootstrap.inc.php b/adminer/include/bootstrap.inc.php index eee7e8fd..3ab140c0 100644 --- a/adminer/include/bootstrap.inc.php +++ b/adminer/include/bootstrap.inc.php @@ -39,7 +39,7 @@ if ($_GET["script"] == "version") { exit; } -global $adminer, $connection, $driver, $drivers, $translations; // allows including Adminer inside a function +global $adminer, $connection, $driver, $translations; // allows including Adminer inside a function if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility $_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; diff --git a/adminer/include/connect.inc.php b/adminer/include/connect.inc.php index 7fd52fe0..cf1cd61a 100644 --- a/adminer/include/connect.inc.php +++ b/adminer/include/connect.inc.php @@ -42,7 +42,7 @@ if ( echo "$val\n"; } } - echo "

" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "" . h($connection->server_info) . "", "$connection->extension") . "\n"; + echo "

" . lang('%s version: %s through PHP extension %s', get_driver(DRIVER), "" . h($connection->server_info) . "", "$connection->extension") . "\n"; echo "

" . lang('Logged as: %s', "" . h(logged_user()) . "") . "\n"; if (isset($adminer->plugins) && is_array($adminer->plugins)) { echo "

" . lang('Loaded plugins') . ":\n

    \n"; diff --git a/adminer/include/design.inc.php b/adminer/include/design.inc.php index 8df77265..ad28e373 100644 --- a/adminer/include/design.inc.php +++ b/adminer/include/design.inc.php @@ -7,7 +7,7 @@ namespace Adminer; * @param string $title2 used after colon in title and heading, should be HTML escaped */ function page_header(string $title, string $error = "", $breadcrumb = array(), string $title2 = ""): void { - global $adminer, $drivers; + global $adminer; page_headers(); if (is_ajax() && $error) { page_messages($error); @@ -88,7 +88,7 @@ const thousandsSeparator = '" . js_escape(lang(',')) . "';") echo "
    \n"; if ($breadcrumb !== null) { $link = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); - echo '