Server IP : 85.214.239.14 / Your IP : 18.191.44.122 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /var/www/wordpress/phpMyAdmin/libraries/classes/Setup/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Config file generator * * @package PhpMyAdmin-Setup */ declare(strict_types=1); namespace PhpMyAdmin\Setup; use PhpMyAdmin\Config\ConfigFile; /** * Config file generation class * * @package PhpMyAdmin */ class ConfigGenerator { /** * Creates config file * * @param ConfigFile $cf Config file instance * * @return string */ public static function getConfigFile(ConfigFile $cf) { $crlf = (isset($_SESSION['eol']) && $_SESSION['eol'] == 'win') ? "\r\n" : "\n"; $conf = $cf->getConfig(); // header $ret = '<?php' . $crlf . '/*' . $crlf . ' * Generated configuration file' . $crlf . ' * Generated by: phpMyAdmin ' . $GLOBALS['PMA_Config']->get('PMA_VERSION') . ' setup script' . $crlf . ' * Date: ' . gmdate(DATE_RFC1123) . $crlf . ' */' . $crlf . $crlf; //servers if (! empty($conf['Servers'])) { $ret .= self::getServerPart($cf, $crlf, $conf['Servers']); unset($conf['Servers']); } // other settings $persistKeys = $cf->getPersistKeysMap(); foreach ($conf as $k => $v) { $k = preg_replace('/[^A-Za-z0-9_]/', '_', $k); $ret .= self::_getVarExport($k, $v, $crlf); if (isset($persistKeys[$k])) { unset($persistKeys[$k]); } } // keep 1d array keys which are present in $persist_keys (config.values.php) foreach (array_keys($persistKeys) as $k) { if (mb_strpos($k, '/') === false) { $k = preg_replace('/[^A-Za-z0-9_]/', '_', $k); $ret .= self::_getVarExport($k, $cf->getDefault($k), $crlf); } } $ret .= '?' . '>'; return $ret; } /** * Returns exported configuration variable * * @param string $var_name configuration name * @param mixed $var_value configuration value(s) * @param string $crlf line ending * * @return string */ private static function _getVarExport($var_name, $var_value, $crlf) { if (! is_array($var_value) || empty($var_value)) { return "\$cfg['$var_name'] = " . var_export($var_value, true) . ';' . $crlf; } $ret = ''; if (self::_isZeroBasedArray($var_value)) { $ret = "\$cfg['$var_name'] = " . self::_exportZeroBasedArray($var_value, $crlf) . ';' . $crlf; } else { // string keys: $cfg[key][subkey] = value foreach ($var_value as $k => $v) { $k = preg_replace('/[^A-Za-z0-9_]/', '_', $k); $ret .= "\$cfg['$var_name']['$k'] = " . var_export($v, true) . ';' . $crlf; } } return $ret; } /** * Check whether $array is a continuous 0-based array * * @param array $array Array to check * * @return boolean */ private static function _isZeroBasedArray(array $array) { for ($i = 0, $nb = count($array); $i < $nb; $i++) { if (! isset($array[$i])) { return false; } } return true; } /** * Exports continuous 0-based array * * @param array $array Array to export * @param string $crlf Newline string * * @return string */ private static function _exportZeroBasedArray(array $array, $crlf) { $retv = []; foreach ($array as $v) { $retv[] = var_export($v, true); } $ret = "array("; if (count($retv) <= 4) { // up to 4 values - one line $ret .= implode(', ', $retv); } else { // more than 4 values - value per line $imax = count($retv); for ($i = 0; $i < $imax; $i++) { $ret .= ($i > 0 ? ',' : '') . $crlf . ' ' . $retv[$i]; } } $ret .= ')'; return $ret; } /** * Generate server part of config file * * @param ConfigFile $cf Config file * @param string $crlf Carriage return char * @param array $servers Servers list * * @return string|null */ protected static function getServerPart(ConfigFile $cf, $crlf, array $servers) { if ($cf->getServerCount() === 0) { return null; } $ret = "/* Servers configuration */$crlf\$i = 0;" . $crlf . $crlf; foreach ($servers as $id => $server) { $ret .= '/* Server: ' . strtr($cf->getServerName($id) . " [$id] ", '*/', '-') . "*/" . $crlf . '$i++;' . $crlf; foreach ($server as $k => $v) { $k = preg_replace('/[^A-Za-z0-9_]/', '_', $k); $ret .= "\$cfg['Servers'][\$i]['$k'] = " . (is_array($v) && self::_isZeroBasedArray($v) ? self::_exportZeroBasedArray($v, $crlf) : var_export($v, true)) . ';' . $crlf; } $ret .= $crlf; } $ret .= '/* End of servers configuration */' . $crlf . $crlf; return $ret; } }