1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-07 15:16:44 +02:00

Doc-comments: Fix type errors

This commit is contained in:
Jakub Vrana
2025-03-28 13:15:14 +01:00
parent dc38a7ded3
commit 46f6a96c95
22 changed files with 60 additions and 64 deletions

View File

@@ -116,11 +116,11 @@ if (isset($_GET["mssql"])) {
return $row; return $row;
} }
function fetch_assoc(): array { function fetch_assoc() {
return $this->convert(sqlsrv_fetch_array($this->result, SQLSRV_FETCH_ASSOC)); return $this->convert(sqlsrv_fetch_array($this->result, SQLSRV_FETCH_ASSOC));
} }
function fetch_row(): array { function fetch_row() {
return $this->convert(sqlsrv_fetch_array($this->result, SQLSRV_FETCH_NUMERIC)); return $this->convert(sqlsrv_fetch_array($this->result, SQLSRV_FETCH_NUMERIC));
} }

View File

@@ -132,16 +132,16 @@ if (!defined('Adminer\DRIVER')) {
} }
/** Fetch next row as associative array /** Fetch next row as associative array
* @return array<?string> * @return array<?string>|false
*/ */
function fetch_assoc(): array { function fetch_assoc() {
return mysql_fetch_assoc($this->result); return mysql_fetch_assoc($this->result);
} }
/** Fetch next row as numbered array /** Fetch next row as numbered array
* @return list<?string> * @return list<?string>|false
*/ */
function fetch_row(): array { function fetch_row() {
return mysql_fetch_row($this->result); return mysql_fetch_row($this->result);
} }
@@ -623,7 +623,7 @@ if (!defined('Adminer\DRIVER')) {
} }
/** Find out if database is information_schema */ /** Find out if database is information_schema */
function information_schema(string $db): bool { function information_schema(?string $db): bool {
return ($db == "information_schema") return ($db == "information_schema")
|| (min_version(5.5) && $db == "performance_schema"); || (min_version(5.5) && $db == "performance_schema");
} }
@@ -951,7 +951,7 @@ if (!defined('Adminer\DRIVER')) {
} }
/** Get SQL command to create table */ /** Get SQL command to create table */
function create_sql(string $table, bool $auto_increment, string $style): string { function create_sql(string $table, ?bool $auto_increment, string $style): string {
$return = get_val("SHOW CREATE TABLE " . table($table), 1); $return = get_val("SHOW CREATE TABLE " . table($table), 1);
if (!$auto_increment) { if (!$auto_increment) {
$return = preg_replace('~ AUTO_INCREMENT=\d+~', '', $return); //! skip comments $return = preg_replace('~ AUTO_INCREMENT=\d+~', '', $return); //! skip comments

View File

@@ -79,11 +79,11 @@ if (isset($_GET["oracle"])) {
return $row; return $row;
} }
function fetch_assoc(): array { function fetch_assoc() {
return $this->convert(oci_fetch_assoc($this->result)); return $this->convert(oci_fetch_assoc($this->result));
} }
function fetch_row(): array { function fetch_row() {
return $this->convert(oci_fetch_row($this->result)); return $this->convert(oci_fetch_row($this->result));
} }

View File

@@ -101,11 +101,11 @@ if (isset($_GET["pgsql"])) {
$this->num_rows = pg_num_rows($result); $this->num_rows = pg_num_rows($result);
} }
function fetch_assoc(): array { function fetch_assoc() {
return pg_fetch_assoc($this->result); return pg_fetch_assoc($this->result);
} }
function fetch_row(): array { function fetch_row() {
return pg_fetch_row($this->result); return pg_fetch_row($this->result);
} }

View File

@@ -48,11 +48,11 @@ if (isset($_GET["sqlite"])) {
$this->result = $result; $this->result = $result;
} }
function fetch_assoc(): array { function fetch_assoc() {
return $this->result->fetchArray(SQLITE3_ASSOC); return $this->result->fetchArray(SQLITE3_ASSOC);
} }
function fetch_row(): array { function fetch_row() {
return $this->result->fetchArray(SQLITE3_NUM); return $this->result->fetchArray(SQLITE3_NUM);
} }

View File

@@ -46,7 +46,7 @@ class Adminer {
} }
/** Identifier of selected database */ /** Identifier of selected database */
function database(): string { function database(): ?string {
// should be used everywhere instead of DB // should be used everywhere instead of DB
return DB; return DB;
} }
@@ -444,7 +444,7 @@ class Adminer {
} }
/** Print text length box in select /** Print text length box in select
* @param string $text_length result of selectLengthProcess() * @param numeric-string $text_length result of selectLengthProcess()
*/ */
function selectLengthPrint(string $text_length): void { function selectLengthPrint(string $text_length): void {
if ($text_length !== null) { if ($text_length !== null) {
@@ -600,10 +600,10 @@ class Adminer {
} }
/** Process length box in select /** Process length box in select
* @return string number of characters to shorten texts, will be escaped * @return numeric-string number of characters to shorten texts, will be escaped, empty string means unlimited
*/ */
function selectLengthProcess(): string { function selectLengthProcess(): string {
return (isset($_GET["text_length"]) ? $_GET["text_length"] : "100"); return (isset($_GET["text_length"]) ? "$_GET[text_length]" : "100");
} }
/** Process extras in select form /** Process extras in select form
@@ -691,11 +691,12 @@ class Adminer {
} }
/** Get options to display edit field /** Get options to display edit field
* @param ?string $table null in call.inc.php
* @param Field $field * @param Field $field
* @param string $attrs attributes to use inside the tag * @param string $attrs attributes to use inside the tag
* @return string custom input field or empty string for default * @return string custom input field or empty string for default
*/ */
function editInput(string $table, array $field, string $attrs, ?string $value): string { function editInput(?string $table, array $field, string $attrs, ?string $value): string {
if ($field["type"] == "enum") { if ($field["type"] == "enum") {
return (isset($_GET["select"]) ? "<label><input type='radio'$attrs value='-1' checked><i>" . lang('original') . "</i></label> " : "") return (isset($_GET["select"]) ? "<label><input type='radio'$attrs value='-1' checked><i>" . lang('original') . "</i></label> " : "")
. ($field["null"] ? "<label><input type='radio'$attrs value=''" . ($value !== null || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "") . ($field["null"] ? "<label><input type='radio'$attrs value=''" . ($value !== null || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "")
@@ -706,9 +707,10 @@ class Adminer {
} }
/** Get hint for edit field /** Get hint for edit field
* @param ?string $table null in call.inc.php
* @param Field $field * @param Field $field
*/ */
function editHint(string $table, array $field, ?string $value): string { function editHint(?string $table, array $field, ?string $value): string {
return ""; return "";
} }

View File

@@ -5,7 +5,7 @@ namespace Adminer;
// interfaces can include properties only since PHP 8.4 // interfaces can include properties only since PHP 8.4
abstract class SqlDb { abstract class SqlDb {
public string $extension; // extension name public string $extension; // extension name
public string $flavor; // different vendor with the same API, e.g. MariaDB; usually stays empty public string $flavor = ''; // different vendor with the same API, e.g. MariaDB; usually stays empty
public string $server_info; // server version public string $server_info; // server version
public int $affected_rows; // number of affected rows public int $affected_rows; // number of affected rows
public string $info; // see https://php.net/mysql_info public string $info; // see https://php.net/mysql_info

View File

@@ -412,7 +412,7 @@ function normalize_enum(array $match): string {
* @param list<string> $privileges * @param list<string> $privileges
* @return Result|bool * @return Result|bool
*/ */
function grant(string $grant, array $privileges, string $columns, string $on) { function grant(string $grant, array $privileges, ?string $columns, string $on) {
if (!$privileges) { if (!$privileges) {
return true; return true;
} }

View File

@@ -57,7 +57,7 @@ function escape_string(string $val): string {
/** Get a possibly missing item from a possibly missing array /** Get a possibly missing item from a possibly missing array
* idx($row, $key) is better than $row[$key] ?? null because PHP will report error for undefined $row * idx($row, $key) is better than $row[$key] ?? null because PHP will report error for undefined $row
* @param ?mixed[] $array * @param ?mixed[] $array
* @param string|int $key * @param array-key $key
* @param mixed $default * @param mixed $default
* @return mixed * @return mixed
*/ */
@@ -142,7 +142,7 @@ function sid(): bool {
} }
/** Set password to session */ /** Set password to session */
function set_password(string $vendor, string $server, string $username, ?string $password): void { function set_password(string $vendor, ?string $server, string $username, ?string $password): void {
$_SESSION["pwds"][$vendor][$server][$username] = ($_COOKIE["adminer_key"] && is_string($password) $_SESSION["pwds"][$vendor][$server][$username] = ($_COOKIE["adminer_key"] && is_string($password)
? array(encrypt_string($password, $_COOKIE["adminer_key"])) ? array(encrypt_string($password, $_COOKIE["adminer_key"]))
: $password : $password
@@ -391,7 +391,7 @@ function set_session(string $key, $val) {
} }
/** Get authenticated URL */ /** Get authenticated URL */
function auth_url(string $vendor, string $server, string $username, string $db = null): string { function auth_url(string $vendor, ?string $server, string $username, string $db = null): string {
global $drivers; global $drivers;
$uri = remove_from_uri(implode("|", array_keys($drivers)) $uri = remove_from_uri(implode("|", array_keys($drivers))
. "|username|ext|" . "|username|ext|"
@@ -562,7 +562,7 @@ function repeat_pattern(string $pattern, int $length): string {
} }
/** Check whether the string is in UTF-8 */ /** Check whether the string is in UTF-8 */
function is_utf8(string $val): bool { function is_utf8(?string $val): bool {
// don't print control chars except \t\r\n // don't print control chars except \t\r\n
return (preg_match('~~u', $val) && !preg_match('~[\0-\x8\xB\xC\xE-\x1F]~', $val)); return (preg_match('~~u', $val) && !preg_match('~[\0-\x8\xB\xC\xE-\x1F]~', $val));
} }
@@ -771,9 +771,10 @@ function rand_string(): string {
/** Format value to use in select /** Format value to use in select
* @param string|string[] $val * @param string|string[] $val
* @param Field $field * @param Field $field
* @param ?numeric-string $text_length
* @return string HTML * @return string HTML
*/ */
function select_value($val, string $link, array $field, int $text_length): string { function select_value($val, string $link, array $field, ?string $text_length): string {
global $adminer; global $adminer;
if (is_array($val)) { if (is_array($val)) {
$return = ""; $return = "";

View File

@@ -191,7 +191,7 @@ function enum_input(string $type, string $attrs, array $field, $value, string $e
* @param Field|RoutineField $field * @param Field|RoutineField $field
* @param mixed $value * @param mixed $value
*/ */
function input(array $field, $value, string $function, bool $autofocus = false): void { function input(array $field, $value, string $function, ?bool $autofocus = false): void {
global $driver, $adminer; global $driver, $adminer;
$name = h(bracket_escape($field["field"])); $name = h(bracket_escape($field["field"]));
echo "<td class='function'>"; echo "<td class='function'>";

View File

@@ -68,11 +68,11 @@ if (extension_loaded('pdo')) {
class PdoResult extends \PDOStatement { class PdoResult extends \PDOStatement {
public $_offset = 0, $num_rows; public $_offset = 0, $num_rows;
function fetch_assoc(): array { function fetch_assoc() {
return $this->fetch(\PDO::FETCH_ASSOC); return $this->fetch(\PDO::FETCH_ASSOC);
} }
function fetch_row(): array { function fetch_row() {
return $this->fetch(\PDO::FETCH_NUM); return $this->fetch(\PDO::FETCH_NUM);
} }

View File

@@ -13,7 +13,7 @@ $rights = array(); // privilege => 0
$columns = array(); // selectable columns $columns = array(); // selectable columns
$search_columns = array(); // searchable columns $search_columns = array(); // searchable columns
$order_columns = array(); // searchable columns $order_columns = array(); // searchable columns
$text_length = null; $text_length = "";
foreach ($fields as $key => $field) { foreach ($fields as $key => $field) {
$name = $adminer->fieldName($field); $name = $adminer->fieldName($field);
$name_plain = html_entity_decode(strip_tags($name), ENT_QUOTES); $name_plain = html_entity_decode(strip_tags($name), ENT_QUOTES);

View File

@@ -2,7 +2,7 @@
namespace Adminer; namespace Adminer;
$TABLE = $_GET["trigger"]; $TABLE = $_GET["trigger"];
$name = $_GET["name"]; $name = "$_GET[name]";
$trigger_options = trigger_options(); $trigger_options = trigger_options();
$row = (array) trigger($name, $TABLE) + array("Trigger" => $TABLE . "_bi"); $row = (array) trigger($name, $TABLE) + array("Trigger" => $TABLE . "_bi");

View File

@@ -23,7 +23,7 @@ foreach ($privileges["Tables"] as $key => $val) {
$new_grants = array(); $new_grants = array();
if ($_POST) { if ($_POST) {
foreach ($_POST["objects"] as $key => $val) { foreach ($_POST["objects"] as $key => $val) {
$new_grants[$val] = (array) $new_grants[$val] + (array) $_POST["grants"][$key]; $new_grants[$val] = (array) $new_grants[$val] + idx($_POST["grants"], $key, array());
} }
} }
$grants = array(); $grants = array();

View File

@@ -56,7 +56,7 @@ parameters:
- adminer/sqlite.php - adminer/sqlite.php
phpVersion: phpVersion:
min: 70400 min: 70100
max: 80499 max: 80499
typeAliases: typeAliases:

View File

@@ -91,13 +91,13 @@ if (isset($_GET["clickhouse"])) {
reset($this->rows); reset($this->rows);
} }
function fetch_assoc(): array { function fetch_assoc() {
$row = current($this->rows); $row = current($this->rows);
next($this->rows); next($this->rows);
return $row === false ? false : array_combine($this->columns, $row); return $row === false ? false : array_combine($this->columns, $row);
} }
function fetch_row(): array { function fetch_row() {
$row = current($this->rows); $row = current($this->rows);
next($this->rows); next($this->rows);
return $row; return $row;

View File

@@ -49,26 +49,19 @@ if (isset($_GET["elastic"])) {
return $return; return $return;
} }
/** Perform query relative to actual selected DB /** Perform query relative to actual selected DB */
* @return array|false function query(string $query, bool $unbuffered = false) {
*/
function query(string $path, ?array $content = null, string $method = 'GET') {
// Support for global search through all tables // Support for global search through all tables
if ($path != "" && $path[0] == "S" && preg_match('/SELECT 1 FROM ([^ ]+) WHERE (.+) LIMIT ([0-9]+)/', $path, $matches)) { if ($query[0] == "S" && preg_match('/SELECT 1 FROM ([^ ]+) WHERE (.+) LIMIT ([0-9]+)/', $query, $matches)) {
$driver = driver();
$where = explode(" AND ", $matches[2]); $where = explode(" AND ", $matches[2]);
return driver()->select($matches[1], array("*"), $where, array(), array(), $matches[3]);
return $driver->select($matches[1], array("*"), $where, array(), array(), $matches[3]);
} }
return $this->rootQuery($path, $content, $method);
} }
function connect(string $server, string $username, string $password): bool { function connect(string $server, string $username, string $password): bool {
preg_match('~^(https?://)?(.*)~', $server, $match); preg_match('~^(https?://)?(.*)~', $server, $match);
$this->url = ($match[1] ?: "http://") . urlencode($username) . ":" . urlencode($password) . "@$match[2]"; $this->url = ($match[1] ?: "http://") . urlencode($username) . ":" . urlencode($password) . "@$match[2]";
$return = $this->query(''); $return = $this->rootQuery('');
if ($return) { if ($return) {
$this->server_info = $return['version']['number']; $this->server_info = $return['version']['number'];
} }
@@ -94,13 +87,13 @@ if (isset($_GET["elastic"])) {
reset($this->rows); reset($this->rows);
} }
function fetch_assoc(): array { function fetch_assoc() {
$return = current($this->rows); $return = current($this->rows);
next($this->rows); next($this->rows);
return $return; return $return;
} }
function fetch_row(): array { function fetch_row() {
$row = $this->fetch_assoc(); $row = $this->fetch_assoc();
return $row ? array_values($row) : false; return $row ? array_values($row) : false;
} }
@@ -228,7 +221,7 @@ if (isset($_GET["elastic"])) {
$id = trim($parts[1]); $id = trim($parts[1]);
$query = "$type/$id"; $query = "$type/$id";
return $this->conn->query($query, $record, 'POST'); return $this->conn->rootQuery($query, $record, 'POST');
} }
return false; return false;
@@ -245,7 +238,7 @@ if (isset($_GET["elastic"])) {
unset($record[$key]); unset($record[$key]);
} }
} }
$response = $this->conn->query($query, $record, 'POST'); $response = $this->conn->rootQuery($query, $record, 'POST');
if ($response == false) { if ($response == false) {
return false; return false;
} }
@@ -273,7 +266,7 @@ if (isset($_GET["elastic"])) {
foreach ($ids as $id) { foreach ($ids as $id) {
$query = "$table/_doc/$id"; $query = "$table/_doc/$id";
$response = $this->conn->query($query, null, 'DELETE'); $response = $this->conn->rootQuery($query, null, 'DELETE');
if (isset($response['result']) && $response['result'] == 'deleted') { if (isset($response['result']) && $response['result'] == 'deleted') {
$this->conn->affected_rows++; $this->conn->affected_rows++;
} }
@@ -532,7 +525,7 @@ if (isset($_GET["elastic"])) {
$properties = array('properties' => $properties); $properties = array('properties' => $properties);
} }
return connection()->query("_mapping/$name", $properties, 'PUT'); return connection()->rootQuery("_mapping/$name", $properties, 'PUT');
} }
/** Drop types /** Drop types
@@ -541,7 +534,7 @@ if (isset($_GET["elastic"])) {
function drop_tables(array $tables): bool { function drop_tables(array $tables): bool {
$return = true; $return = true;
foreach ($tables as $table) { //! convert to bulk api foreach ($tables as $table) { //! convert to bulk api
$return = $return && connection()->query(urlencode($table), null, 'DELETE'); $return = $return && connection()->rootQuery(urlencode($table), null, 'DELETE');
} }
return $return; return $return;

View File

@@ -60,11 +60,11 @@ if (isset($_GET["firebird"])) {
// $this->num_rows = ibase_num_rows($result); // $this->num_rows = ibase_num_rows($result);
} }
function fetch_assoc(): array { function fetch_assoc() {
return ibase_fetch_assoc($this->result); return ibase_fetch_assoc($this->result);
} }
function fetch_row(): array { function fetch_row() {
return ibase_fetch_row($this->result); return ibase_fetch_row($this->result);
} }

View File

@@ -123,13 +123,13 @@ if (isset($_GET["imap"])) {
$this->fields = array_keys(idx($result, 0, array())); $this->fields = array_keys(idx($result, 0, array()));
} }
function fetch_assoc(): array { function fetch_assoc() {
$row = current($this->result); $row = current($this->result);
next($this->result); next($this->result);
return $row; return $row;
} }
function fetch_row(): array { function fetch_row() {
$row = $this->fetch_assoc(); $row = $this->fetch_assoc();
return ($row ? array_values($row) : false); return ($row ? array_values($row) : false);
} }

View File

@@ -97,7 +97,7 @@ if (isset($_GET["mongo"])) {
$this->num_rows = count($this->rows); $this->num_rows = count($this->rows);
} }
function fetch_assoc(): array { function fetch_assoc() {
$row = current($this->rows); $row = current($this->rows);
if (!$row) { if (!$row) {
return $row; return $row;
@@ -110,7 +110,7 @@ if (isset($_GET["mongo"])) {
return $return; return $return;
} }
function fetch_row(): array { function fetch_row() {
$return = $this->fetch_assoc(); $return = $this->fetch_assoc();
if (!$return) { if (!$return) {
return $return; return $return;

View File

@@ -76,7 +76,7 @@ if (isset($_GET["simpledb"])) {
return (is_object($element) && $element['encoding'] == 'base64' ? base64_decode($element) : (string) $element); return (is_object($element) && $element['encoding'] == 'base64' ? base64_decode($element) : (string) $element);
} }
function fetch_assoc(): array { function fetch_assoc() {
$row = current($this->rows); $row = current($this->rows);
if (!$row) { if (!$row) {
return $row; return $row;
@@ -89,7 +89,7 @@ if (isset($_GET["simpledb"])) {
return $return; return $return;
} }
function fetch_row(): array { function fetch_row() {
$return = $this->fetch_assoc(); $return = $this->fetch_assoc();
if (!$return) { if (!$return) {
return $return; return $return;

View File

@@ -20,7 +20,7 @@ class AdminerSlugify {
function editInput($table, $field, $attrs, $value) { function editInput($table, $field, $attrs, $value) {
static $slugify; static $slugify;
if (!$_GET["select"] && !$_GET["where"]) { if (!$_GET["select"] && !$_GET["where"] && $table) {
if ($slugify === null) { if ($slugify === null) {
$slugify = array(); $slugify = array();
$prev = null; $prev = null;