diff --git a/app/services.php b/app/services.php index 391b9b2620..f68a3734e8 100644 --- a/app/services.php +++ b/app/services.php @@ -24,7 +24,7 @@ use PhpMyAdmin\Export\Export; use PhpMyAdmin\Export\Options; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\FileListing; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Import\Import; use PhpMyAdmin\Import\SimulateDml; @@ -109,7 +109,7 @@ return [ 'export_template_model' => ['class' => TemplateModel::class, 'arguments' => ['@dbi']], 'expression_language' => ['class' => ExpressionLanguage::class], 'file_listing' => ['class' => FileListing::class], - 'flash' => ['class' => FlashMessages::class], + FlashMessenger::class => ['class' => FlashMessenger::class], 'http_request' => ['class' => HttpRequest::class], ResponseFactory::class => [ 'class' => ResponseFactory::class, @@ -223,7 +223,6 @@ return [ UserPrivilegesFactory::class => ['class' => UserPrivilegesFactory::class, 'arguments' => ['@dbi']], 'version_information' => ['class' => VersionInformation::class], DatabaseInterface::class => 'dbi', - PhpMyAdmin\FlashMessages::class => 'flash', PhpMyAdmin\ResponseRenderer::class => 'response', 'bookmarkRepository' => ['class' => BookmarkRepository::class, 'arguments' => ['@dbi', '@relation']], 'console' => ['class' => Console::class, 'arguments' => [ '@relation', '@template', '@bookmarkRepository']], diff --git a/app/services_controllers.php b/app/services_controllers.php index 65a32a24d3..8c71363dc7 100644 --- a/app/services_controllers.php +++ b/app/services_controllers.php @@ -41,6 +41,7 @@ use PhpMyAdmin\Controllers\UserPasswordController; use PhpMyAdmin\Controllers\VersionCheckController; use PhpMyAdmin\Controllers\View; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Plugins\AuthenticationPluginFactory; use PhpMyAdmin\Theme\ThemeManager; @@ -298,7 +299,7 @@ return [ '$dbi' => '@dbi', '$relation' => '@relation', '$relationCleanup' => '@relation_cleanup', - '$flash' => '@flash', + '$flashMessenger' => '@' . FlashMessenger::class, '$structureController' => '@' . Database\StructureController::class, ], ], @@ -321,7 +322,7 @@ return [ ], Database\Structure\ReplacePrefixController::class => [ 'class' => Database\Structure\ReplacePrefixController::class, - 'arguments' => ['@dbi', '@' . ResponseFactory::class, '@flash'], + 'arguments' => ['@dbi', '@' . ResponseFactory::class, '@' . FlashMessenger::class], ], Database\Structure\ShowCreateController::class => [ 'class' => Database\Structure\ShowCreateController::class, @@ -976,7 +977,7 @@ return [ 'arguments' => [ '$response' => '@response', '$dbi' => '@dbi', - '$flash' => '@flash', + '$flashMessenger' => '@' . FlashMessenger::class, '$relationCleanup' => '@relation_cleanup', ], ], diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index c54da370ae..47e243549c 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1996,7 +1996,7 @@ parameters: path: src/Controllers/Database/Structure/ReplacePrefixController.php - - message: "#^Parameter \\#3 \\$statement of method PhpMyAdmin\\\\FlashMessages\\:\\:addMessage\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#3 \\$statement of method PhpMyAdmin\\\\FlashMessenger\\:\\:addMessage\\(\\) expects string, mixed given\\.$#" count: 1 path: src/Controllers/Database/Structure/ReplacePrefixController.php @@ -7468,17 +7468,17 @@ parameters: - message: "#^Cannot access an offset on mixed\\.$#" count: 1 - path: src/FlashMessages.php + path: src/FlashMessenger.php - message: "#^Cannot access offset string on mixed\\.$#" count: 2 - path: src/FlashMessages.php + path: src/FlashMessenger.php - - message: "#^Property PhpMyAdmin\\\\FlashMessages\\:\\:\\$previousMessages \\(array\\\\>\\>\\) does not accept mixed\\.$#" + message: "#^Property PhpMyAdmin\\\\FlashMessenger\\:\\:\\$previousMessages \\(array\\\\>\\>\\) does not accept mixed\\.$#" count: 1 - path: src/FlashMessages.php + path: src/FlashMessenger.php - message: "#^Cannot access offset 'chars' on mixed\\.$#" @@ -15548,12 +15548,12 @@ parameters: - message: "#^Parameter \\#2 \\$array of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayHasKey\\(\\) expects array\\|ArrayAccess, mixed given\\.$#" count: 2 - path: tests/unit/FlashMessagesTest.php + path: tests/unit/FlashMessengerTest.php - message: "#^Parameter \\#2 \\$array of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayNotHasKey\\(\\) expects array\\|ArrayAccess, mixed given\\.$#" count: 2 - path: tests/unit/FlashMessagesTest.php + path: tests/unit/FlashMessengerTest.php - message: "#^Cannot access offset 'queries' on mixed\\.$#" diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 1be63248b9..657a743c9c 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -5942,7 +5942,7 @@ - + storage[self::STORAGE_KEY][$key]]]> storage[self::STORAGE_KEY][$key]]]> @@ -11657,9 +11657,9 @@ - + - + @@ -13639,7 +13639,7 @@ - + diff --git a/src/Controllers/Database/Structure/EmptyTableController.php b/src/Controllers/Database/Structure/EmptyTableController.php index 183b626d4b..a4c82c747b 100644 --- a/src/Controllers/Database/Structure/EmptyTableController.php +++ b/src/Controllers/Database/Structure/EmptyTableController.php @@ -12,7 +12,7 @@ use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; @@ -34,7 +34,7 @@ final class EmptyTableController implements InvocableController private readonly DatabaseInterface $dbi, private readonly Relation $relation, private readonly RelationCleanup $relationCleanup, - private readonly FlashMessages $flash, + private readonly FlashMessenger $flashMessenger, private readonly StructureController $structureController, ) { } @@ -46,7 +46,7 @@ final class EmptyTableController implements InvocableController $selected = $request->getParsedBodyParam('selected', []); if ($multBtn !== __('Yes')) { - $this->flash->addMessage('success', __('No change')); + $this->flashMessenger->addMessage('success', __('No change')); $this->response->redirectToRoute('/database/structure', ['db' => Current::$database]); return null; diff --git a/src/Controllers/Database/Structure/ReplacePrefixController.php b/src/Controllers/Database/Structure/ReplacePrefixController.php index a6cfa17f0b..e969d1acb9 100644 --- a/src/Controllers/Database/Structure/ReplacePrefixController.php +++ b/src/Controllers/Database/Structure/ReplacePrefixController.php @@ -8,7 +8,7 @@ use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -24,7 +24,7 @@ final class ReplacePrefixController implements InvocableController public function __construct( private readonly DatabaseInterface $dbi, private readonly ResponseFactory $responseFactory, - private readonly FlashMessages $flashMessages, + private readonly FlashMessenger $flashMessenger, ) { } @@ -57,7 +57,7 @@ final class ReplacePrefixController implements InvocableController $GLOBALS['message'] = Message::success(); - $this->flashMessages->addMessage('success', $GLOBALS['message']->getMessage(), $GLOBALS['sql_query']); + $this->flashMessenger->addMessage('success', $GLOBALS['message']->getMessage(), $GLOBALS['sql_query']); return $this->responseFactory->createResponse(StatusCodeInterface::STATUS_FOUND) ->withHeader('Location', Url::getFromRoute('/database/structure', ['db' => Current::$database])); diff --git a/src/Controllers/Table/DropColumnController.php b/src/Controllers/Table/DropColumnController.php index 0b99e748e3..2c6803daa8 100644 --- a/src/Controllers/Table/DropColumnController.php +++ b/src/Controllers/Table/DropColumnController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; @@ -24,7 +24,7 @@ final class DropColumnController implements InvocableController public function __construct( private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi, - private readonly FlashMessages $flash, + private readonly FlashMessenger $flashMessenger, private readonly RelationCleanup $relationCleanup, ) { } @@ -72,7 +72,7 @@ final class DropColumnController implements InvocableController $message->addParam($selectedCount); } - $this->flash->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); + $this->flashMessenger->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); $this->response->redirectToRoute('/table/structure', ['db' => Current::$database, 'table' => Current::$table]); return null; diff --git a/src/Export/Export.php b/src/Export/Export.php index e7888ed3a6..a02f988e3b 100644 --- a/src/Export/Export.php +++ b/src/Export/Export.php @@ -12,7 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Encoding; use PhpMyAdmin\Exceptions\ExportException; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\MessageType; @@ -1045,7 +1045,7 @@ class Export */ public function getPageLocationAndSaveMessage(string $exportType, Message $message): string { - (new FlashMessages())->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); + (new FlashMessenger())->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); if ($exportType === 'server') { return 'index.php?route=/server/export' . Url::getCommonRaw([], '&'); diff --git a/src/FlashMessages.php b/src/FlashMessenger.php similarity index 94% rename from src/FlashMessages.php rename to src/FlashMessenger.php index dc35070d1e..e39434d7a8 100644 --- a/src/FlashMessages.php +++ b/src/FlashMessenger.php @@ -8,9 +8,9 @@ use RuntimeException; use function __; -final class FlashMessages +final class FlashMessenger { - private const STORAGE_KEY = 'flashMessages'; + private const STORAGE_KEY = 'FlashMessenger'; /** @var mixed[] */ private array $storage; diff --git a/src/Template.php b/src/Template.php index 41de838bba..2f745ebe3b 100644 --- a/src/Template.php +++ b/src/Template.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin; use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Twig\AssetExtension; use PhpMyAdmin\Twig\CoreExtension; -use PhpMyAdmin\Twig\FlashMessagesExtension; +use PhpMyAdmin\Twig\FlashMessengerExtension; use PhpMyAdmin\Twig\I18nExtension; use PhpMyAdmin\Twig\MessageExtension; use PhpMyAdmin\Twig\SanitizeExtension; @@ -67,7 +67,7 @@ class Template $twig->addExtension(new AssetExtension()); $twig->addExtension(new CoreExtension()); - $twig->addExtension(new FlashMessagesExtension()); + $twig->addExtension(new FlashMessengerExtension()); $twig->addExtension(new I18nExtension()); $twig->addExtension(new MessageExtension()); $twig->addExtension(new SanitizeExtension()); diff --git a/src/Twig/FlashMessagesExtension.php b/src/Twig/FlashMessengerExtension.php similarity index 54% rename from src/Twig/FlashMessagesExtension.php rename to src/Twig/FlashMessengerExtension.php index f94c5a3e8f..f54413211d 100644 --- a/src/Twig/FlashMessagesExtension.php +++ b/src/Twig/FlashMessengerExtension.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Twig; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; -final class FlashMessagesExtension extends AbstractExtension +final class FlashMessengerExtension extends AbstractExtension { /** @return TwigFunction[] */ public function getFunctions(): array { - return [new TwigFunction('flash', [FlashMessages::class, 'getMessages'])]; + return [new TwigFunction('flash', [FlashMessenger::class, 'getMessages'])]; } } diff --git a/tests/unit/Controllers/Table/DropColumnControllerTest.php b/tests/unit/Controllers/Table/DropColumnControllerTest.php index 4480f16b0a..c04e05fb36 100644 --- a/tests/unit/Controllers/Table/DropColumnControllerTest.php +++ b/tests/unit/Controllers/Table/DropColumnControllerTest.php @@ -9,7 +9,7 @@ use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\Table\DropColumnController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -42,20 +42,20 @@ class DropColumnControllerTest extends AbstractTestCase $dummyDbi->addResult('ALTER TABLE `test_table` DROP `name`, DROP `datetimefield`;', true); $dbi = $this->createDatabaseInterface($dummyDbi); - self::assertArrayNotHasKey('flashMessages', $_SESSION); + self::assertArrayNotHasKey('FlashMessenger', $_SESSION); (new DropColumnController( new ResponseRenderer(), $dbi, - new FlashMessages(), + new FlashMessenger(), new RelationCleanup($dbi, new Relation($dbi)), ))(self::createStub(ServerRequest::class)); - self::assertArrayHasKey('flashMessages', $_SESSION); + self::assertArrayHasKey('FlashMessenger', $_SESSION); /** @psalm-suppress InvalidArrayOffset */ self::assertSame( ['success' => [['message' => '2 columns have been dropped successfully.', 'statement' => '']]], - $_SESSION['flashMessages'], + $_SESSION['FlashMessenger'], ); } } diff --git a/tests/unit/Export/ExportTest.php b/tests/unit/Export/ExportTest.php index 003600b464..53fda1eaf7 100644 --- a/tests/unit/Export/ExportTest.php +++ b/tests/unit/Export/ExportTest.php @@ -9,7 +9,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\Export; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins\Export\ExportPhparray; @@ -244,7 +244,7 @@ SQL; self::assertSame('index.php?route=/server/export&server=2&lang=en', $location); self::assertSame( ['danger' => [['message' => 'Error message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } @@ -259,7 +259,7 @@ SQL; self::assertSame('index.php?route=/server/export&server=2&lang=en', $location); self::assertSame( ['success' => [['message' => 'Success message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } @@ -275,7 +275,7 @@ SQL; self::assertSame('index.php?route=/database/export&db=test_db&server=2&lang=en', $location); self::assertSame( ['danger' => [['message' => 'Error message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } @@ -291,7 +291,7 @@ SQL; self::assertSame('index.php?route=/database/export&db=test_db&server=2&lang=en', $location); self::assertSame( ['success' => [['message' => 'Success message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } @@ -311,7 +311,7 @@ SQL; ); self::assertSame( ['danger' => [['message' => 'Error message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } @@ -331,7 +331,7 @@ SQL; ); self::assertSame( ['success' => [['message' => 'Success message!', 'statement' => '']]], - (new FlashMessages())->getMessages(), + (new FlashMessenger())->getMessages(), ); } } diff --git a/tests/unit/FlashMessagesTest.php b/tests/unit/FlashMessengerTest.php similarity index 72% rename from tests/unit/FlashMessagesTest.php rename to tests/unit/FlashMessengerTest.php index e7d5dad54d..9e108688ba 100644 --- a/tests/unit/FlashMessagesTest.php +++ b/tests/unit/FlashMessengerTest.php @@ -4,21 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; -use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\FlashMessenger; use PHPUnit\Framework\Attributes\CoversClass; use RuntimeException; -#[CoversClass(FlashMessages::class)] -class FlashMessagesTest extends AbstractTestCase +#[CoversClass(FlashMessenger::class)] +final class FlashMessengerTest extends AbstractTestCase { - private const STORAGE_KEY = 'flashMessages'; + private const STORAGE_KEY = 'FlashMessenger'; public function testConstructor(): void { self::assertArrayNotHasKey(self::STORAGE_KEY, $_SESSION); - $flash = new FlashMessages(); + $flashMessenger = new FlashMessenger(); self::assertIsArray($_SESSION[self::STORAGE_KEY]); - self::assertSame([], $flash->getMessages()); + self::assertSame([], $flashMessenger->getMessages()); } public function testConstructorSessionNotFound(): void @@ -26,14 +26,14 @@ class FlashMessagesTest extends AbstractTestCase $_SESSION = null; $this->expectException(RuntimeException::class); $this->expectExceptionMessage('Session not found.'); - new FlashMessages(); + new FlashMessenger(); } public function testAddMessage(): void { - $flash = new FlashMessages(); + $flashMessenger = new FlashMessenger(); self::assertArrayNotHasKey('error', $_SESSION[self::STORAGE_KEY]); - $flash->addMessage('error', 'Error'); + $flashMessenger->addMessage('error', 'Error'); self::assertArrayHasKey('error', $_SESSION[self::STORAGE_KEY]); self::assertIsArray($_SESSION[self::STORAGE_KEY]['error']); self::assertSame([['message' => 'Error', 'statement' => '']], $_SESSION[self::STORAGE_KEY]['error']); @@ -41,9 +41,9 @@ class FlashMessagesTest extends AbstractTestCase public function testAddMessageWithStatement(): void { - $flash = new FlashMessages(); + $flashMessenger = new FlashMessenger(); self::assertArrayNotHasKey('success', $_SESSION[self::STORAGE_KEY]); - $flash->addMessage('success', 'Your SQL query has been executed successfully.', 'SELECT 1;'); + $flashMessenger->addMessage('success', 'Your SQL query has been executed successfully.', 'SELECT 1;'); self::assertArrayHasKey('success', $_SESSION[self::STORAGE_KEY]); self::assertIsArray($_SESSION[self::STORAGE_KEY]['success']); self::assertSame( @@ -55,10 +55,10 @@ class FlashMessagesTest extends AbstractTestCase public function testGetMessage(): void { $_SESSION[self::STORAGE_KEY] = ['warning' => [['message' => 'Warning', 'statement' => '']]]; - $flash = new FlashMessages(); - $message = $flash->getMessage('error'); + $flashMessenger = new FlashMessenger(); + $message = $flashMessenger->getMessage('error'); self::assertNull($message); - $message = $flash->getMessage('warning'); + $message = $flashMessenger->getMessage('warning'); self::assertSame([['message' => 'Warning', 'statement' => '']], $message); } @@ -71,9 +71,9 @@ class FlashMessagesTest extends AbstractTestCase ], 'warning' => [['message' => 'Warning', 'statement' => '']], ]; - $flash = new FlashMessages(); - $flash->addMessage('notice', 'Notice'); - $messages = $flash->getMessages(); + $flashMessenger = new FlashMessenger(); + $flashMessenger->addMessage('notice', 'Notice'); + $messages = $flashMessenger->getMessages(); self::assertSame( [ 'error' => [