-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Expand file tree
/
Copy pathShowConfigController.php
More file actions
81 lines (65 loc) · 2.77 KB
/
ShowConfigController.php
File metadata and controls
81 lines (65 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use Fig\Http\Message\StatusCodeInterface;
use PhpMyAdmin\Config;
use PhpMyAdmin\Config\Forms\Setup\ConfigForm;
use PhpMyAdmin\Controllers\InvocableController;
use PhpMyAdmin\Core;
use PhpMyAdmin\Current;
use PhpMyAdmin\Http\Factory\ResponseFactory;
use PhpMyAdmin\Http\Response;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Setup\ConfigGenerator;
use PhpMyAdmin\Setup\SetupHelper;
use PhpMyAdmin\Template;
use PhpMyAdmin\Url;
use function __;
use function file_exists;
use function is_string;
use const CONFIG_FILE;
final readonly class ShowConfigController implements InvocableController
{
public function __construct(
private ResponseFactory $responseFactory,
private Template $template,
private Config $config,
) {
}
public function __invoke(ServerRequest $request): Response
{
if (@file_exists(CONFIG_FILE) && ! $this->config->config->debug->demo) {
$response = $this->responseFactory->createResponse(StatusCodeInterface::STATUS_NOT_FOUND);
return $response->write($this->template->render('error/generic', [
'lang' => Current::$lang,
'error_message' => __('Configuration already exists, setup is disabled!'),
]));
}
$configFile = SetupHelper::createConfigFile();
$formDisplay = new ConfigForm($configFile);
$formDisplay->save(['Config']);
$eol = $request->getParsedBodyParamAsStringOrNull('eol');
if ($eol !== null) {
$_SESSION['eol'] = $eol === 'unix' ? 'unix' : 'win';
}
$submitClear = $request->getParsedBodyParamAsStringOrNull('submit_clear');
if (is_string($submitClear) && $submitClear !== '') {
// Clear current config and return to main page
$configFile->resetConfigData();
return $this->responseFactory->createResponse(StatusCodeInterface::STATUS_FOUND)
->withHeader('Location', '../setup/index.php' . Url::getCommonRaw(['route' => '/setup']));
}
$submitDownload = $request->getParsedBodyParamAsStringOrNull('submit_download');
if (is_string($submitDownload) && $submitDownload !== '') {
$response = $this->responseFactory->createResponse();
// Output generated config file
Core::downloadHeader('config.inc.php', 'text/plain');
return $response->write(ConfigGenerator::getConfigFile($configFile));
}
// Show generated config file in a <textarea>
return $this->responseFactory->createResponse(StatusCodeInterface::STATUS_FOUND)->withHeader(
'Location',
'../setup/index.php' . Url::getCommonRaw(['route' => '/setup', 'page' => 'config']),
);
}
}