From 2fdebfda29606cb8d179c29913343a9e69d28803 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Tue, 11 Mar 2025 21:43:59 +0100 Subject: [PATCH] Ensure PHP 5.3 compatibility --- adminer/create.inc.php | 12 ++++++------ adminer/drivers/pgsql.inc.php | 5 ++++- adminer/drivers/sqlite.inc.php | 2 +- adminer/include/bootstrap.inc.php | 1 - phpcs.xml | 7 +++++++ plugins/drivers/simpledb.php | 2 +- 6 files changed, 19 insertions(+), 10 deletions(-) diff --git a/adminer/create.inc.php b/adminer/create.inc.php index ede508a2..70c3fc69 100644 --- a/adminer/create.inc.php +++ b/adminer/create.inc.php @@ -83,17 +83,18 @@ if ($_POST && !process_fields($row["fields"]) && !$error) { $partitioning = ""; if (support("partitioning")) { if (isset($partition_by[$row["partition_by"]])) { - $params = array_filter($row, function ($key) { - return preg_match('~^partition~', $key); - }, ARRAY_FILTER_USE_KEY); - + $params = array(); + foreach ($row as $key => $val) { + if (preg_match('~^partition~', $key)) { + $params[$key] = $val; + } + } foreach ($params["partition_names"] as $key => $name) { if ($name == "") { unset($params["partition_names"][$key]); unset($params["partition_values"][$key]); } } - if ($params != get_partitions_info($TABLE)) { $partitions = array(); if ($params["partition_by"] == 'RANGE' || $params["partition_by"] == 'LIST') { @@ -102,7 +103,6 @@ if ($_POST && !process_fields($row["fields"]) && !$error) { $partitions[] = "\n PARTITION " . idf_escape($name) . " VALUES " . ($params["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($value != "" ? " ($value)" : " MAXVALUE"); //! SQL injection } } - // $params["partition"] can be expression, not only column $partitioning .= "\nPARTITION BY $params[partition_by]($params[partition])"; if ($partitions) { diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 7df77016..e6c3ca10 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -43,7 +43,10 @@ if (isset($_GET["pgsql"])) { } function quote($string) { - return pg_escape_literal($this->link, $string); + return (function_exists('pg_escape_literal') + ? pg_escape_literal($this->link, $string) // available since PHP 5.4.4 + : "'" . pg_escape_string($this->link, $string) . "'" + ); } function value($val, $field) { diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 151dbeed..804a85c4 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -78,7 +78,7 @@ if (isset($_GET["sqlite"])) { ); } - function __desctruct() { + function __destruct() { return $this->result->finalize(); } } diff --git a/adminer/include/bootstrap.inc.php b/adminer/include/bootstrap.inc.php index ca5a7809..a08acf96 100644 --- a/adminer/include/bootstrap.inc.php +++ b/adminer/include/bootstrap.inc.php @@ -62,7 +62,6 @@ if (function_exists("get_magic_quotes_runtime") && get_magic_quotes_runtime()) { set_magic_quotes_runtime(false); } @set_time_limit(0); // @ - can be disabled -@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated @ini_set("precision", 15); // @ - can be disabled, 15 - internal PHP precision include "../adminer/include/lang.inc.php"; diff --git a/phpcs.xml b/phpcs.xml index 56c71c35..d6b72fa8 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -108,4 +108,11 @@ + + diff --git a/plugins/drivers/simpledb.php b/plugins/drivers/simpledb.php index 0ac5f3fd..488a10d2 100644 --- a/plugins/drivers/simpledb.php +++ b/plugins/drivers/simpledb.php @@ -422,7 +422,7 @@ if (isset($_GET["simpledb"])) { 'max_redirects' => 0, )))); if (!$file) { - $this->error = lang('Invalid credentials.'); + $connection->error = lang('Invalid credentials.'); return false; } libxml_use_internal_errors(true);