-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Commit
The Config::getCurrentServer() method returns the current server configuration. It's an VO that is equivalent to $GLOBALS['cfg']['Server'] setting. Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ | |
namespace PhpMyAdmin; | ||
|
||
use PhpMyAdmin\Config\Settings; | ||
use PhpMyAdmin\Config\Settings\Server; | ||
use PhpMyAdmin\Dbal\Connection; | ||
use PhpMyAdmin\Exceptions\ConfigException; | ||
use PhpMyAdmin\Theme\ThemeManager; | ||
|
@@ -88,7 +89,9 @@ class Config | |
|
||
private bool $isHttps = false; | ||
|
||
private Settings $config; | ||
public Settings $config; | ||
/** @var int<0, max> */ | ||
public int $server = 0; | ||
|
||
public function __construct() | ||
{ | ||
|
@@ -1059,34 +1062,27 @@ public function getUploadTempDir(): string|null | |
return null; | ||
} | ||
|
||
/** | ||
* Selects server based on request parameters. | ||
*/ | ||
public function selectServer(): int | ||
/** @return int<0, max> */ | ||
public function selectServer(mixed $serverParamFromRequest): int | ||
{ | ||
$request = empty($_REQUEST['server']) ? 0 : $_REQUEST['server']; | ||
|
||
/** | ||
* Lookup server by name | ||
* (see FAQ 4.8) | ||
*/ | ||
if (! is_numeric($request)) { | ||
foreach ($this->settings['Servers'] as $i => $server) { | ||
$verboseToLower = mb_strtolower($server['verbose']); | ||
$serverToLower = mb_strtolower($request); | ||
if ( | ||
$server['host'] == $request | ||
|| $server['verbose'] == $request | ||
|| $verboseToLower === $serverToLower | ||
|| md5($verboseToLower) === $serverToLower | ||
) { | ||
$request = $i; | ||
$serverNumber = 0; | ||
Check warning on line 1068 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
|
||
if (is_numeric($serverParamFromRequest)) { | ||
$serverNumber = (int) $serverParamFromRequest; | ||
$serverNumber = $serverNumber >= 1 ? $serverNumber : 0; | ||
Check warning on line 1071 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
Check warning on line 1071 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
Check warning on line 1071 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
Check warning on line 1071 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
Check warning on line 1071 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
|
||
} elseif (is_string($serverParamFromRequest) && $serverParamFromRequest !== '') { | ||
/** Lookup server by name (see FAQ 4.8) */ | ||
foreach ($this->config->Servers as $i => $server) { | ||
if ($server->host === $serverParamFromRequest || $server->verbose === $serverParamFromRequest) { | ||
$serverNumber = $i; | ||
break; | ||
} | ||
} | ||
|
||
if (is_string($request)) { | ||
$request = 0; | ||
$verboseToLower = mb_strtolower($server->verbose); | ||
Check warning on line 1080 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
|
||
$serverToLower = mb_strtolower($serverParamFromRequest); | ||
Check warning on line 1081 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
|
||
if ($verboseToLower === $serverToLower || md5($verboseToLower) === $serverToLower) { | ||
$serverNumber = $i; | ||
break; | ||
Check warning on line 1084 in libraries/classes/Config.php GitHub Actions / Infection (8.1, ubuntu-latest)
|
||
} | ||
} | ||
} | ||
|
||
|
@@ -1098,21 +1094,19 @@ public function selectServer(): int | |
* present a choice of servers in the case that there are multiple servers | ||
* and '$this->settings['ServerDefault'] = 0' is set. | ||
*/ | ||
|
||
if (is_numeric($request) && ! empty($request) && ! empty($this->settings['Servers'][$request])) { | ||
$server = $request; | ||
$this->settings['Server'] = $this->settings['Servers'][$server]; | ||
if (isset($this->config->Servers[$serverNumber])) { | ||
$this->settings['Server'] = $this->config->Servers[$serverNumber]->asArray(); | ||
} elseif (isset($this->config->Servers[$this->config->ServerDefault])) { | ||
$serverNumber = $this->config->ServerDefault; | ||
$this->settings['Server'] = $this->config->Servers[$this->config->ServerDefault]->asArray(); | ||
} else { | ||
if (! empty($this->settings['Servers'][$this->settings['ServerDefault']])) { | ||
$server = $this->settings['ServerDefault']; | ||
$this->settings['Server'] = $this->settings['Servers'][$server]; | ||
} else { | ||
$server = 0; | ||
$this->settings['Server'] = []; | ||
} | ||
$serverNumber = 0; | ||
$this->settings['Server'] = []; | ||
} | ||
|
||
return (int) $server; | ||
$this->server = $serverNumber; | ||
|
||
return $this->server; | ||
} | ||
|
||
/** | ||
|
@@ -1248,4 +1242,9 @@ public function getSettings(): Settings | |
{ | ||
return $this->config; | ||
} | ||
|
||
public function getCurrentServer(): Server|null | ||
{ | ||
return $this->config->Servers[$this->server] ?? null; | ||
} | ||
} |