1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-07 23:27:17 +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;
}
function fetch_assoc(): array {
function 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));
}

View File

@@ -132,16 +132,16 @@ if (!defined('Adminer\DRIVER')) {
}
/** 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);
}
/** 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);
}
@@ -623,7 +623,7 @@ if (!defined('Adminer\DRIVER')) {
}
/** Find out if database is information_schema */
function information_schema(string $db): bool {
function information_schema(?string $db): bool {
return ($db == "information_schema")
|| (min_version(5.5) && $db == "performance_schema");
}
@@ -951,7 +951,7 @@ if (!defined('Adminer\DRIVER')) {
}
/** 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);
if (!$auto_increment) {
$return = preg_replace('~ AUTO_INCREMENT=\d+~', '', $return); //! skip comments

View File

@@ -79,11 +79,11 @@ if (isset($_GET["oracle"])) {
return $row;
}
function fetch_assoc(): array {
function fetch_assoc() {
return $this->convert(oci_fetch_assoc($this->result));
}
function fetch_row(): array {
function fetch_row() {
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);
}
function fetch_assoc(): array {
function fetch_assoc() {
return pg_fetch_assoc($this->result);
}
function fetch_row(): array {
function fetch_row() {
return pg_fetch_row($this->result);
}

View File

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

View File

@@ -46,7 +46,7 @@ class Adminer {
}
/** Identifier of selected database */
function database(): string {
function database(): ?string {
// should be used everywhere instead of DB
return DB;
}
@@ -444,7 +444,7 @@ class Adminer {
}
/** 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 {
if ($text_length !== null) {
@@ -600,10 +600,10 @@ class Adminer {
}
/** 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 {
return (isset($_GET["text_length"]) ? $_GET["text_length"] : "100");
return (isset($_GET["text_length"]) ? "$_GET[text_length]" : "100");
}
/** Process extras in select form
@@ -691,11 +691,12 @@ class Adminer {
}
/** Get options to display edit field
* @param ?string $table null in call.inc.php
* @param Field $field
* @param string $attrs attributes to use inside the tag
* @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") {
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> " : "")
@@ -706,9 +707,10 @@ class Adminer {
}
/** Get hint for edit field
* @param ?string $table null in call.inc.php
* @param Field $field
*/
function editHint(string $table, array $field, ?string $value): string {
function editHint(?string $table, array $field, ?string $value): string {
return "";
}

View File

@@ -5,7 +5,7 @@ namespace Adminer;
// interfaces can include properties only since PHP 8.4
abstract class SqlDb {
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 int $affected_rows; // number of affected rows
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
* @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) {
return true;
}

View File

@@ -57,7 +57,7 @@ function escape_string(string $val): string {
/** 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
* @param ?mixed[] $array
* @param string|int $key
* @param array-key $key
* @param mixed $default
* @return mixed
*/
@@ -142,7 +142,7 @@ function sid(): bool {
}
/** 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)
? array(encrypt_string($password, $_COOKIE["adminer_key"]))
: $password
@@ -391,7 +391,7 @@ function set_session(string $key, $val) {
}
/** 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;
$uri = remove_from_uri(implode("|", array_keys($drivers))
. "|username|ext|"
@@ -562,7 +562,7 @@ function repeat_pattern(string $pattern, int $length): string {
}
/** 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
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
* @param string|string[] $val
* @param Field $field
* @param ?numeric-string $text_length
* @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;
if (is_array($val)) {
$return = "";

View File

@@ -191,7 +191,7 @@ function enum_input(string $type, string $attrs, array $field, $value, string $e
* @param Field|RoutineField $field
* @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;
$name = h(bracket_escape($field["field"]));
echo "<td class='function'>";

View File

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

View File

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

View File

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

View File

@@ -23,7 +23,7 @@ foreach ($privileges["Tables"] as $key => $val) {
$new_grants = array();
if ($_POST) {
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();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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