Skip to content

Commit

Permalink
Merge pull request #19169 from MauricioFauth/flash-messages-statement
Browse files Browse the repository at this point in the history
Add support for statement messages in FlashMessenger class
  • Loading branch information
MauricioFauth committed May 18, 2024
2 parents 6c0ae41 + 1a357c3 commit fefd6d1
Show file tree
Hide file tree
Showing 23 changed files with 267 additions and 214 deletions.
5 changes: 2 additions & 3 deletions app/services.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
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;
Expand Down Expand Up @@ -109,7 +109,7 @@
'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,
Expand Down Expand Up @@ -223,7 +223,6 @@
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']],
Expand Down
7 changes: 4 additions & 3 deletions app/services_controllers.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
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;
Expand Down Expand Up @@ -298,7 +299,7 @@
'$dbi' => '@dbi',
'$relation' => '@relation',
'$relationCleanup' => '@relation_cleanup',
'$flash' => '@flash',
'$flashMessenger' => '@' . FlashMessenger::class,
'$structureController' => '@' . Database\StructureController::class,
],
],
Expand All @@ -321,7 +322,7 @@
],
Database\Structure\ReplacePrefixController::class => [
'class' => Database\Structure\ReplacePrefixController::class,
'arguments' => ['$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class],
'arguments' => ['@dbi', '@' . ResponseFactory::class, '@' . FlashMessenger::class],
],
Database\Structure\ShowCreateController::class => [
'class' => Database\Structure\ShowCreateController::class,
Expand Down Expand Up @@ -976,7 +977,7 @@
'arguments' => [
'$response' => '@response',
'$dbi' => '@dbi',
'$flash' => '@flash',
'$flashMessenger' => '@' . FlashMessenger::class,
'$relationCleanup' => '@relation_cleanup',
],
],
Expand Down
27 changes: 11 additions & 16 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -2005,6 +2005,11 @@ parameters:
count: 1
path: src/Controllers/Database/Structure/ReplacePrefixController.php

-
message: "#^Parameter \\#3 \\$statement of method PhpMyAdmin\\\\FlashMessenger\\:\\:addMessage\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/Structure/ReplacePrefixController.php

-
message: "#^Call to function array_search\\(\\) requires parameter \\#3 to be set\\.$#"
count: 4
Expand Down Expand Up @@ -7448,17 +7453,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
message: "#^Method PhpMyAdmin\\\\FlashMessenger\\:\\:getCurrentMessages\\(\\) should return array\\<int, array\\{context\\: string, message\\: string, statement\\: string\\}\\> but returns mixed\\.$#"
count: 1
path: src/FlashMessenger.php

-
message: "#^Property PhpMyAdmin\\\\FlashMessages\\:\\:\\$previousMessages \\(array\\<string, array\\<string\\>\\>\\) does not accept mixed\\.$#"
message: "#^Property PhpMyAdmin\\\\FlashMessenger\\:\\:\\$previousMessages \\(array\\<int, array\\{context\\: string, message\\: string, statement\\: string\\}\\>\\) does not accept mixed\\.$#"
count: 1
path: src/FlashMessages.php
path: src/FlashMessenger.php

-
message: "#^Cannot access offset 'chars' on mixed\\.$#"
Expand Down Expand Up @@ -15420,16 +15425,6 @@ parameters:
count: 1
path: tests/unit/Export/OptionsTest.php

-
message: "#^Parameter \\#2 \\$array of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayHasKey\\(\\) expects array\\|ArrayAccess, mixed given\\.$#"
count: 1
path: tests/unit/FlashMessagesTest.php

-
message: "#^Parameter \\#2 \\$array of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayNotHasKey\\(\\) expects array\\|ArrayAccess, mixed given\\.$#"
count: 1
path: tests/unit/FlashMessagesTest.php

-
message: "#^Cannot access offset 'queries' on mixed\\.$#"
count: 1
Expand Down
28 changes: 10 additions & 18 deletions psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5942,14 +5942,19 @@
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
</file>
<file src="src/FlashMessages.php">
<file src="src/FlashMessenger.php">
<MixedArrayAssignment>
<code><![CDATA[$this->storage[self::STORAGE_KEY][$key]]]></code>
<code><![CDATA[$this->storage[self::STORAGE_KEY][$key]]]></code>
<code><![CDATA[$this->storage[self::STORAGE_KEY][]]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code><![CDATA[$this->previousMessages]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code><![CDATA[FlashMessageList]]></code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->storage[self::STORAGE_KEY]]]></code>
</MixedReturnStatement>
</file>
<file src="src/Font.php">
<MixedArgument>
Expand Down Expand Up @@ -11657,9 +11662,9 @@
<code><![CDATA[empty($_POST['item_timing'])]]></code>
</RiskyTruthyFalsyComparison>
</file>
<file src="src/Twig/FlashMessagesExtension.php">
<file src="src/Twig/FlashMessengerExtension.php">
<InvalidArgument>
<code><![CDATA[[FlashMessages::class, 'getMessages']]]></code>
<code><![CDATA[[FlashMessenger::class, 'getMessages']]]></code>
</InvalidArgument>
</file>
<file src="src/TwoFactor.php">
Expand Down Expand Up @@ -13639,19 +13644,6 @@
<code><![CDATA[compressedFiles]]></code>
</PossiblyUnusedMethod>
</file>
<file src="tests/unit/FlashMessagesTest.php">
<InvalidScalarArgument>
<code><![CDATA[$_SESSION]]></code>
</InvalidScalarArgument>
<MixedArgument>
<code><![CDATA[$_SESSION[self::STORAGE_KEY]]]></code>
<code><![CDATA[$_SESSION[self::STORAGE_KEY]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$_SESSION[self::STORAGE_KEY]['error']]]></code>
<code><![CDATA[$_SESSION[self::STORAGE_KEY]['error']]]></code>
</MixedArrayAccess>
</file>
<file src="tests/unit/FooterTest.php">
<DeprecatedMethod>
<code><![CDATA[Config::getInstance()]]></code>
Expand Down
9 changes: 9 additions & 0 deletions resources/templates/components/flash_messages.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{% for flash_message in flash_messages() %}
{% if flash_message.statement is empty %}
<div class="alert alert-{{ flash_message.context }}" role="alert">
{{ flash_message.message }}
</div>
{% else %}
{{ statement_message(flash_message.message, flash_message.statement, flash_message.context) }}
{% endif %}
{% endfor %}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<form id="ajax_form" action="{{ url(route) }}" method="post">
<form class="disableAjax" id="ajax_form" action="{{ url(route) }}" method="post">
{{ get_hidden_inputs(url_params) }}
<div class="mb-3">
<label for="initialPrefixInput" class="form-label">{{ t('From') }}</label>
Expand Down
8 changes: 1 addition & 7 deletions resources/templates/database/structure/index.twig
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
{% for flash_key, flash_messages in flash() %}
{% for flash_message in flash_messages %}
<div class="alert alert-{{ flash_key }}" role="alert">
{{ flash_message }}
</div>
{% endfor %}
{% endfor %}
{{ include('components/flash_messages.twig', with_context = false) }}

{% if has_tables %}
<div id="tableslistcontainer">
Expand Down
8 changes: 1 addition & 7 deletions resources/templates/export.twig
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,7 @@
{{ page_settings_error_html|raw }}
{{ page_settings_html|raw }}

{% for flash_key, flash_messages in flash() %}
{% for flash_message in flash_messages %}
<div class="alert alert-{{ flash_key }}" role="alert">
{{ flash_message }}
</div>
{% endfor %}
{% endfor %}
{{ include('components/flash_messages.twig', with_context = false) }}

{% block message %}{% endblock %}

Expand Down
8 changes: 1 addition & 7 deletions resources/templates/table/page_with_secondary_tabs.twig
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,7 @@
</ul>
{% endif %}

{% for flash_key, flash_messages in flash() %}
{% for flash_message in flash_messages %}
<div class="alert alert-{{ flash_key }}" role="alert">
{{ flash_message }}
</div>
{% endfor %}
{% endfor %}
{{ include('components/flash_messages.twig', with_context = false) }}

<div id="structure_content">
{% block content %}{% endblock %}
Expand Down
6 changes: 3 additions & 3 deletions src/Controllers/Database/Structure/EmptyTableController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
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;
Expand All @@ -34,7 +34,7 @@ public function __construct(
private readonly DatabaseInterface $dbi,
private readonly Relation $relation,
private readonly RelationCleanup $relationCleanup,
private readonly FlashMessages $flash,
private readonly FlashMessenger $flashMessenger,
private readonly StructureController $structureController,
) {
}
Expand All @@ -46,7 +46,7 @@ public function __invoke(ServerRequest $request): Response|null
$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;
Expand Down
15 changes: 10 additions & 5 deletions src/Controllers/Database/Structure/ReplacePrefixController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@

namespace PhpMyAdmin\Controllers\Database\Structure;

use PhpMyAdmin\Controllers\Database\StructureController;
use Fig\Http\Message\StatusCodeInterface;
use PhpMyAdmin\Controllers\InvocableController;
use PhpMyAdmin\Current;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\FlashMessenger;
use PhpMyAdmin\Http\Factory\ResponseFactory;
use PhpMyAdmin\Http\Response;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Message;
use PhpMyAdmin\Url;
use PhpMyAdmin\Util;

use function mb_strlen;
Expand All @@ -20,11 +23,12 @@ final class ReplacePrefixController implements InvocableController
{
public function __construct(
private readonly DatabaseInterface $dbi,
private readonly StructureController $structureController,
private readonly ResponseFactory $responseFactory,
private readonly FlashMessenger $flashMessenger,
) {
}

public function __invoke(ServerRequest $request): Response|null
public function __invoke(ServerRequest $request): Response
{
/** @var string[] $selected */
$selected = $request->getParsedBodyParam('selected', []);
Expand Down Expand Up @@ -53,8 +57,9 @@ public function __invoke(ServerRequest $request): Response|null

$GLOBALS['message'] = Message::success();

($this->structureController)($request);
$this->flashMessenger->addMessage('success', $GLOBALS['message']->getMessage(), $GLOBALS['sql_query']);

return null;
return $this->responseFactory->createResponse(StatusCodeInterface::STATUS_FOUND)
->withHeader('Location', Url::getFromRoute('/database/structure', ['db' => Current::$database]));
}
}
6 changes: 3 additions & 3 deletions src/Controllers/Table/DropColumnController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
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;
Expand All @@ -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,
) {
}
Expand Down Expand Up @@ -72,7 +72,7 @@ public function __invoke(ServerRequest $request): Response|null
$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;
Expand Down
4 changes: 2 additions & 2 deletions src/Export/Export.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
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;
Expand Down Expand Up @@ -1045,7 +1045,7 @@ public function exportTable(
*/
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([], '&');
Expand Down

0 comments on commit fefd6d1

Please sign in to comment.