Merge branch 'phpmyadmin:master' into master

This commit is contained in:
Satyam 2026-04-21 15:04:06 +05:30 committed by GitHub
commit dafce8a1aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
162 changed files with 66919 additions and 66866 deletions

20
composer.lock generated
View File

@ -5420,11 +5420,11 @@
},
{
"name": "phpstan/phpstan",
"version": "2.1.41",
"version": "2.1.47",
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/a2eae8f20856b3afe74bf1f9726ce8c11438e300",
"reference": "a2eae8f20856b3afe74bf1f9726ce8c11438e300",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/79015445d8bd79e62b29140f12e5bfced1dcca65",
"reference": "79015445d8bd79e62b29140f12e5bfced1dcca65",
"shasum": ""
},
"require": {
@ -5469,7 +5469,7 @@
"type": "github"
}
],
"time": "2026-03-16T18:24:10+00:00"
"time": "2026-04-13T15:49:08+00:00"
},
{
"name": "phpstan/phpstan-deprecation-rules",
@ -8612,16 +8612,16 @@
},
{
"name": "vimeo/psalm",
"version": "6.15.0",
"version": "6.16.1",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
"reference": "204d06619833a297b402cbc66be7f2df74437db4"
"reference": "f1f5de594dc76faf8784e02d3dc4716c91c6f6ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/204d06619833a297b402cbc66be7f2df74437db4",
"reference": "204d06619833a297b402cbc66be7f2df74437db4",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/f1f5de594dc76faf8784e02d3dc4716c91c6f6ac",
"reference": "f1f5de594dc76faf8784e02d3dc4716c91c6f6ac",
"shasum": ""
},
"require": {
@ -8645,7 +8645,7 @@
"netresearch/jsonmapper": "^5.0",
"nikic/php-parser": "^5.0.0",
"php": "~8.1.31 || ~8.2.27 || ~8.3.16 || ~8.4.3 || ~8.5.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
"symfony/console": "^6.0 || ^7.0 || ^8.0",
"symfony/filesystem": "~6.3.12 || ~6.4.3 || ^7.0.3 || ^8.0",
@ -8726,7 +8726,7 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
"time": "2026-01-30T13:53:17+00:00"
"time": "2026-03-19T10:56:09+00:00"
},
{
"name": "web-auth/cose-lib",

View File

@ -1020,6 +1020,12 @@ parameters:
count: 1
path: src/Config/Validator.php
-
message: '#^Offset ''Servers/1…'' on non\-empty\-array\<mixed\> in empty\(\) always exists and is not falsy\.$#'
identifier: empty.offset
count: 1
path: src/Config/Validator.php
-
message: '#^Only booleans are allowed in a negated boolean, mysqli\|false given\.$#'
identifier: booleanNot.exprNotBoolean
@ -4788,6 +4794,12 @@ parameters:
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Cannot assign new offset to array\<string\|null\>\|string\|null\.$#'
identifier: offsetAssign.dimType
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Cannot cast mixed to string\.$#'
identifier: cast.string
@ -4806,6 +4818,12 @@ parameters:
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Method PhpMyAdmin\\Dbal\\DatabaseInterface\:\:fetchResultMultidimensional\(\) should return array\<mixed\> but returns array\<string\|null\>\|string\|null\.$#'
identifier: return.type
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Method PhpMyAdmin\\Dbal\\DatabaseInterface\:\:getColumnNames\(\) should return list\<string\> but returns list\<string\|null\>\.$#'
identifier: return.type
@ -4836,12 +4854,6 @@ parameters:
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Offset string\|null on array\{\} in isset\(\) does not exist\.$#'
identifier: isset.offset
count: 1
path: src/Dbal/DatabaseInterface.php
-
message: '#^Only booleans are allowed in &&, int\|false given on the left side\.$#'
identifier: booleanAnd.leftNotBoolean
@ -6438,7 +6450,13 @@ parameters:
-
message: '#^Cannot access offset int\<0, max\> on mixed\.$#'
identifier: offsetAccess.nonOffsetAccessible
count: 8
count: 6
path: src/Gis/GisMultiPolygon.php
-
message: '#^Cannot access offset int\<0, max\> on non\-empty\-array\<''data_length''\|int\<0, max\>, array\{x\: float, y\: float\}\|int\<0, max\>\>\|int\<1, max\>\.$#'
identifier: offsetAccess.nonOffsetAccessible
count: 1
path: src/Gis/GisMultiPolygon.php
-
@ -13824,7 +13842,7 @@ parameters:
Use dependency injection instead\.$#
'''
identifier: staticMethod.deprecated
count: 3
count: 2
path: tests/unit/Bookmarks/BookmarkTest.php
-
@ -15696,7 +15714,7 @@ parameters:
Use dependency injection instead\.$#
'''
identifier: staticMethod.deprecated
count: 12
count: 9
path: tests/unit/Html/GeneratorTest.php
-
@ -16563,7 +16581,7 @@ parameters:
Use dependency injection instead\.$#
'''
identifier: staticMethod.deprecated
count: 4
count: 3
path: tests/unit/SqlTest.php
-
@ -16722,7 +16740,7 @@ parameters:
Use dependency injection instead\.$#
'''
identifier: staticMethod.deprecated
count: 6
count: 5
path: tests/unit/TwoFactorTest.php
-

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="6.15.0@204d06619833a297b402cbc66be7f2df74437db4">
<files psalm-version="6.16.1@f1f5de594dc76faf8784e02d3dc4716c91c6f6ac">
<file src="src/Advisory/Advisor.php">
<ArgumentTypeCoercion>
<code><![CDATA[$pattern]]></code>
@ -8042,12 +8042,12 @@
<code><![CDATA[$statement->altered]]></code>
<code><![CDATA[$statement->altered]]></code>
</PossiblyNullIterator>
<PossiblyUndefinedVariable>
<code><![CDATA[$maintainRelations]]></code>
</PossiblyUndefinedVariable>
<RiskyTruthyFalsyComparison>
<code><![CDATA[! $relationParams[$work]]]></code>
</RiskyTruthyFalsyComparison>
<UnusedVariable>
<code><![CDATA[$maintainRelations]]></code>
</UnusedVariable>
</file>
<file src="src/Theme/Theme.php">
<MixedArgument>
@ -8634,7 +8634,6 @@
</file>
<file src="tests/unit/Bookmarks/BookmarkTest.php">
<DeprecatedMethod>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
@ -9847,9 +9846,6 @@
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
<InvalidPropertyAssignmentValue>
<code><![CDATA[[
@ -10381,7 +10377,6 @@
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
<MixedArrayAssignment>
<code><![CDATA[$_SESSION['tmpval']['max_rows']]]></code>
@ -10513,7 +10508,6 @@
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
<InaccessibleProperty>
<code><![CDATA[$config->config->debug->simple2fa]]></code>

View File

@ -116,11 +116,11 @@ const DatabaseEvents = {
eventsExportModal.querySelector('.modal-body').innerHTML = eventsExportTextarea;
document.getElementById('eventsExportTextarea').textContent = data.message;
getSqlEditor($('#eventsExportTextarea'));
});
}, { once: true });
eventsExportModal.addEventListener('hidden.bs.modal', function () {
eventsExportModal.querySelector('.modal-body').innerHTML = eventsExportTextarea;
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(eventsExportModal).show();
}
@ -325,14 +325,14 @@ const DatabaseEvents = {
};
that.syntaxHiglighter = getSqlEditor($elm, {}, 'vertical', linterOptions);
window.codeMirrorEditor = that.syntaxHiglighter;
});
}, { once: true });
eventsEditorModal.addEventListener('hidden.bs.modal', function () {
const eventsEditorModalSaveButton = document.getElementById('eventsEditorModalSaveButton');
eventsEditorModalSaveButton?.removeEventListener('click', eventsEditorModalSaveEventHandler);
document.getElementById('eventsEditorModal').querySelector('.modal-body').innerHTML = '<div class="spinner-border" role="status">' +
'<span class="visually-hidden">' + window.Messages.strLoading + '</span></div>';
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(eventsEditorModal).show();
});

View File

@ -132,11 +132,11 @@ const DatabaseRoutines = {
routinesExportModal.querySelector('.modal-body').innerHTML = routinesExportTextarea;
document.getElementById('routinesExportTextarea').textContent = data.message;
getSqlEditor($('#routinesExportTextarea'));
});
}, { once: true });
routinesExportModal.addEventListener('hidden.bs.modal', function () {
routinesExportModal.querySelector('.modal-body').innerHTML = routinesExportTextarea;
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(routinesExportModal).show();
}
@ -348,14 +348,14 @@ const DatabaseRoutines = {
// Execute item-specific code
that.postDialogShow(data);
});
}, { once: true });
routinesEditorModal.addEventListener('hidden.bs.modal', function () {
const routinesEditorModalSaveButton = document.getElementById('routinesEditorModalSaveButton');
routinesEditorModalSaveButton?.removeEventListener('click', routinesEditorModalSaveEventHandler);
document.getElementById('routinesEditorModal').querySelector('.modal-body').innerHTML = '<div class="spinner-border" role="status">' +
'<span class="visually-hidden">' + window.Messages.strLoading + '</span></div>';
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(routinesEditorModal).show();
});
@ -840,7 +840,7 @@ const DatabaseRoutines = {
const routinesExecuteModalExecuteButton = document.getElementById('routinesExecuteModalExecuteButton');
routinesExecuteModalExecuteButton?.removeEventListener('click', routinesExecuteButtonEventHandler);
});
}, { once: true });
routinesExecuteModal.addEventListener('shown.bs.modal', function () {
routinesExecuteModal.querySelector('.modal-title').textContent = data.title;
@ -890,7 +890,7 @@ const DatabaseRoutines = {
modal.hide();
});
});
});
}, { once: true });
modal.show();
});

View File

@ -123,11 +123,11 @@ const DatabaseTriggers = {
triggersExportModal.querySelector('.modal-body').innerHTML = triggersExportTextarea;
document.getElementById('triggersExportTextarea').textContent = data.message;
getSqlEditor($('#triggersExportTextarea'));
});
}, { once: true });
triggersExportModal.addEventListener('hidden.bs.modal', function () {
triggersExportModal.querySelector('.modal-body').innerHTML = triggersExportTextarea;
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(triggersExportModal).show();
}
@ -334,14 +334,14 @@ const DatabaseTriggers = {
};
that.syntaxHiglighter = getSqlEditor($elm, {}, 'vertical', linterOptions);
window.codeMirrorEditor = that.syntaxHiglighter;
});
}, { once: true });
triggersEditorModal.addEventListener('hidden.bs.modal', function () {
const triggersEditorModalSaveButton = document.getElementById('triggersEditorModalSaveButton');
triggersEditorModalSaveButton?.removeEventListener('click', triggersEditorModalSaveEventHandler);
document.getElementById('triggersEditorModal').querySelector('.modal-body').innerHTML = '<div class="spinner-border" role="status">' +
'<span class="visually-hidden">' + window.Messages.strLoading + '</span></div>';
});
}, { once: true });
bootstrap.Modal.getOrCreateInstance(triggersEditorModal).show();
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More