Extract ResponseRenderer dependency from ReplicationGui class

Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
Maurício Meneghini Fauth 2026-02-25 15:46:24 -03:00
parent cc35debd01
commit 7b759b46a2
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
3 changed files with 24 additions and 30 deletions

View File

@ -7307,6 +7307,10 @@
<PossiblyNullArgument>
<code><![CDATA[$srReplicaAction]]></code>
</PossiblyNullArgument>
<PossiblyUnusedReturnValue>
<code><![CDATA[bool]]></code>
<code><![CDATA[bool]]></code>
</PossiblyUnusedReturnValue>
<UnusedFunctionCall>
<code><![CDATA[strtok]]></code>
<code><![CDATA[strtok]]></code>

View File

@ -11,10 +11,12 @@ use PhpMyAdmin\Controllers\InvocableController;
use PhpMyAdmin\Dbal\DatabaseInterface;
use PhpMyAdmin\Http\Response;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Message;
use PhpMyAdmin\Replication\ReplicationGui;
use PhpMyAdmin\Replication\ReplicationInfo;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Routing\Route;
use PhpMyAdmin\Url;
use PhpMyAdmin\UrlParams;
use function is_array;
@ -61,7 +63,7 @@ final class ReplicationController implements InvocableController
$srSkipErrorsCount = $request->getParsedBodyParamAsStringOrNull('sr_skip_errors_count', '1');
$srReplicaControlParam = $request->getParsedBodyParamAsStringOrNull('sr_replica_control_param');
$this->replicationGui->handleControlRequest(
$message = $this->replicationGui->handleControlRequest(
$request->getParsedBodyParam('sr_take_action') !== null,
$request->getParsedBodyParam('replica_changeprimary') !== null,
$request->getParsedBodyParam('sr_replica_server_control') !== null,
@ -74,6 +76,16 @@ final class ReplicationController implements InvocableController
$request->getParsedBodyParamAsString('hostname', ''),
(int) $request->getParsedBodyParamAsStringOrNull('text_port'),
);
if ($message instanceof Message) {
if ($request->isAjax()) {
$this->response->setRequestStatus($message->isSuccess());
$this->response->addJSON('message', $message);
} else {
$this->response->redirect(
'./index.php?route=/server/replication' . Url::getCommonRaw(UrlParams::$params, '&'),
);
}
}
}
$errorMessages = $this->replicationGui->getHtmlForErrorMessage();

View File

@ -12,7 +12,6 @@ use PhpMyAdmin\Dbal\ConnectionType;
use PhpMyAdmin\Dbal\DatabaseInterface;
use PhpMyAdmin\Message;
use PhpMyAdmin\Query\Utilities;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
use PhpMyAdmin\Url;
use PhpMyAdmin\UrlParams;
@ -425,16 +424,11 @@ class ReplicationGui
string $pmaPassword,
string $hostname,
int $port,
): void {
): Message|null {
if (! $srTakeAction) {
return;
return null;
}
$refresh = false;
$result = false;
$messageSuccess = '';
$messageError = '';
if ($replicaChangePrimary && ! Config::getInstance()->settings['AllowArbitraryServer']) {
$_SESSION['replication']['sr_action_status'] = 'error';
$_SESSION['replication']['sr_action_info'] = __(
@ -442,10 +436,9 @@ class ReplicationGui
. ' $cfg[\'AllowArbitraryServer\'] in phpMyAdmin configuration.',
);
} elseif ($replicaChangePrimary) {
$result = $this->handleRequestForReplicaChangePrimary($username, $pmaPassword, $hostname, $port);
$this->handleRequestForReplicaChangePrimary($username, $pmaPassword, $hostname, $port);
} elseif ($srReplicaServerControl) {
$result = $this->handleRequestForReplicaServerControl($srReplicaAction, $srReplicaControlParam);
$refresh = true;
switch ($srReplicaAction) {
case 'start':
@ -465,28 +458,13 @@ class ReplicationGui
$messageError = __('Error.');
break;
}
return $result ? Message::success($messageSuccess) : Message::error($messageError);
} elseif ($srReplicaSkipError) {
$result = $this->handleRequestForReplicaSkipError($srSkipErrorsCount);
$this->handleRequestForReplicaSkipError($srSkipErrorsCount);
}
if ($refresh) {
$response = ResponseRenderer::getInstance();
if ($response->isAjax()) {
$response->setRequestStatus($result);
$response->addJSON(
'message',
$result
? Message::success($messageSuccess)
: Message::error($messageError),
);
} else {
$response->redirect(
'./index.php?route=/server/replication' . Url::getCommonRaw(UrlParams::$params, '&'),
);
}
}
unset($refresh);
return null;
}
public function handleRequestForReplicaChangePrimary(