[core] Dropped AllowAnywhereRecoding configuration variable.
It really does not make sense these days, now the recoding of export/import is available when the necessary extensions are loaded and it is possible to disable it using RecodingEngine directive.
This commit is contained in:
@@ -88,6 +88,7 @@ $Id$
|
|||||||
- bug [password] Generate password only available if JS is enabled
|
- bug [password] Generate password only available if JS is enabled
|
||||||
(fixed for Privileges and Change password)
|
(fixed for Privileges and Change password)
|
||||||
- [core] RecodingEngine now accepts none as valid option.
|
- [core] RecodingEngine now accepts none as valid option.
|
||||||
|
+ [core] Dropped AllowAnywhereRecoding configuration variable.
|
||||||
|
|
||||||
3.3.6.0 (not yet released)
|
3.3.6.0 (not yet released)
|
||||||
|
|
||||||
|
@@ -1683,18 +1683,6 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre>
|
|||||||
expression. For example if you want only Czech and English, you should
|
expression. For example if you want only Czech and English, you should
|
||||||
set filter to <code>'^(cs|en)'</code>.</dd>
|
set filter to <code>'^(cs|en)'</code>.</dd>
|
||||||
|
|
||||||
<dt id="cfg_AllowAnywhereRecoding">$cfg['AllowAnywhereRecoding'] boolean</dt>
|
|
||||||
<dd>Allow character set recoding of MySQL queries. You need recode or iconv
|
|
||||||
support (compiled in or module) in PHP to allow MySQL queries recoding
|
|
||||||
and used language file must have it enabled (by default only these
|
|
||||||
which are in Unicode, just to avoid losing some characters).<br /><br />
|
|
||||||
|
|
||||||
Setting this to <tt>TRUE</tt> also activates a pull-down menu
|
|
||||||
in the Export and Import pages, to choose the character set when
|
|
||||||
exporting a file. The default value in this menu comes from
|
|
||||||
<tt>$cfg['Export']['charset']</tt> and <tt>$cfg['Import']['charset']</tt>.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt id="cfg_RecodingEngine">$cfg['RecodingEngine'] string</dt>
|
<dt id="cfg_RecodingEngine">$cfg['RecodingEngine'] string</dt>
|
||||||
<dd>You can select here which functions will be used for character set
|
<dd>You can select here which functions will be used for character set
|
||||||
conversion. Possible values are:
|
conversion. Possible values are:
|
||||||
@@ -1705,6 +1693,12 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre>
|
|||||||
<li>none - disable encoding conversion</li>
|
<li>none - disable encoding conversion</li>
|
||||||
</ul>
|
</ul>
|
||||||
Default is auto.</dd>
|
Default is auto.</dd>
|
||||||
|
<dd>
|
||||||
|
Enabled charset conversion activates a pull-down menu
|
||||||
|
in the Export and Import pages, to choose the character set when
|
||||||
|
exporting a file. The default value in this menu comes from
|
||||||
|
<tt>$cfg['Export']['charset']</tt> and <tt>$cfg['Import']['charset']</tt>.
|
||||||
|
</dd>
|
||||||
|
|
||||||
<dt id="cfg_IconvExtraParams">$cfg['IconvExtraParams'] string</dt>
|
<dt id="cfg_IconvExtraParams">$cfg['IconvExtraParams'] string</dt>
|
||||||
<dd>Specify some parameters for iconv used in charset conversion. See
|
<dd>Specify some parameters for iconv used in charset conversion. See
|
||||||
|
@@ -207,7 +207,7 @@ if ($what == 'sql') {
|
|||||||
$output_kanji_conversion = function_exists('PMA_kanji_str_conv') && $type != 'xls';
|
$output_kanji_conversion = function_exists('PMA_kanji_str_conv') && $type != 'xls';
|
||||||
|
|
||||||
// Do we need to convert charset?
|
// Do we need to convert charset?
|
||||||
$output_charset_conversion = $asfile && $cfg['AllowAnywhereRecoding']
|
$output_charset_conversion = $asfile && $GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE
|
||||||
&& isset($charset_of_file) && $charset_of_file != $charset
|
&& isset($charset_of_file) && $charset_of_file != $charset
|
||||||
&& $type != 'xls';
|
&& $type != 'xls';
|
||||||
|
|
||||||
|
@@ -343,7 +343,7 @@ if ($import_file != 'none' && !$error) {
|
|||||||
//$_SESSION['Import_message'] = $message->getDisplay();
|
//$_SESSION['Import_message'] = $message->getDisplay();
|
||||||
|
|
||||||
// Convert the file's charset if necessary
|
// Convert the file's charset if necessary
|
||||||
if ($cfg['AllowAnywhereRecoding'] && isset($charset_of_file)) {
|
if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE && isset($charset_of_file)) {
|
||||||
if ($charset_of_file != $charset) {
|
if ($charset_of_file != $charset) {
|
||||||
$charset_conversion = TRUE;
|
$charset_conversion = TRUE;
|
||||||
}
|
}
|
||||||
@@ -451,7 +451,7 @@ if (isset($my_die)) {
|
|||||||
if (! empty($last_query_with_results)) {
|
if (! empty($last_query_with_results)) {
|
||||||
// but we want to show intermediate results too
|
// but we want to show intermediate results too
|
||||||
$disp_query = $sql_query;
|
$disp_query = $sql_query;
|
||||||
$disp_message = __('Your SQL query has been executed successfully');
|
$disp_message = __('Your SQL query has been executed successfully');
|
||||||
$sql_query = $last_query_with_results;
|
$sql_query = $last_query_with_results;
|
||||||
$go_sql = true;
|
$go_sql = true;
|
||||||
}
|
}
|
||||||
|
@@ -20,31 +20,27 @@ function PMA_failRecoding() {
|
|||||||
/**
|
/**
|
||||||
* Loads the recode or iconv extensions if any of it is not loaded yet
|
* Loads the recode or iconv extensions if any of it is not loaded yet
|
||||||
*/
|
*/
|
||||||
if (isset($cfg['AllowAnywhereRecoding'])
|
if ($cfg['RecodingEngine'] == 'recode') {
|
||||||
&& $cfg['AllowAnywhereRecoding']) {
|
if (!@extension_loaded('recode')) {
|
||||||
|
PMA_failRecoding();
|
||||||
if ($cfg['RecodingEngine'] == 'recode') {
|
}
|
||||||
if (!@extension_loaded('recode')) {
|
$PMA_recoding_engine = 'recode';
|
||||||
PMA_failRecoding();
|
} elseif ($cfg['RecodingEngine'] == 'iconv') {
|
||||||
}
|
if (!@extension_loaded('iconv')) {
|
||||||
$PMA_recoding_engine = 'recode';
|
PMA_failRecoding();
|
||||||
} elseif ($cfg['RecodingEngine'] == 'iconv') {
|
}
|
||||||
if (!@extension_loaded('iconv')) {
|
$PMA_recoding_engine = 'iconv';
|
||||||
PMA_failRecoding();
|
} elseif ($cfg['RecodingEngine'] == 'auto') {
|
||||||
}
|
if (@extension_loaded('iconv')) {
|
||||||
$PMA_recoding_engine = 'iconv';
|
$PMA_recoding_engine = 'iconv';
|
||||||
} elseif ($cfg['RecodingEngine'] == 'auto') {
|
} elseif (@extension_loaded('recode')) {
|
||||||
if (@extension_loaded('iconv')) {
|
$PMA_recoding_engine = 'recode';
|
||||||
$PMA_recoding_engine = 'iconv';
|
|
||||||
} elseif (@extension_loaded('recode')) {
|
|
||||||
$PMA_recoding_engine = 'recode';
|
|
||||||
} else {
|
|
||||||
$PMA_recoding_engine = 'none';
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$PMA_recoding_engine = 'none';
|
$PMA_recoding_engine = 'none';
|
||||||
}
|
}
|
||||||
} // end load recode/iconv extension
|
} else {
|
||||||
|
$PMA_recoding_engine = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
define('PMA_CHARSET_NONE', 0);
|
define('PMA_CHARSET_NONE', 0);
|
||||||
define('PMA_CHARSET_ICONV', 1);
|
define('PMA_CHARSET_ICONV', 1);
|
||||||
@@ -57,64 +53,55 @@ if (!isset($cfg['IconvExtraParams'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finally detect which function we will use:
|
// Finally detect which function we will use:
|
||||||
if (isset($cfg['AllowAnywhereRecoding'])
|
if ($PMA_recoding_engine == 'iconv') {
|
||||||
&& $cfg['AllowAnywhereRecoding']) {
|
if (@function_exists('iconv')) {
|
||||||
|
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
|
||||||
if (!isset($PMA_recoding_engine)) {
|
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
|
||||||
$PMA_recoding_engine = $cfg['RecodingEngine'];
|
|
||||||
}
|
|
||||||
if ($PMA_recoding_engine == 'iconv') {
|
|
||||||
if (@function_exists('iconv')) {
|
|
||||||
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
|
|
||||||
} else {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_ICONV;
|
|
||||||
}
|
|
||||||
} elseif (@function_exists('libiconv')) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
|
|
||||||
} else {
|
} else {
|
||||||
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
$PMA_recoding_engine = PMA_CHARSET_ICONV;
|
||||||
|
|
||||||
if (!isset($GLOBALS['is_header_sent'])) {
|
|
||||||
include './libraries/header.inc.php';
|
|
||||||
}
|
|
||||||
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
|
||||||
require_once './libraries/footer.inc.php';
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
} elseif ($PMA_recoding_engine == 'recode') {
|
|
||||||
if (@function_exists('recode_string')) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_RECODE;
|
|
||||||
} else {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
|
||||||
|
|
||||||
require_once './libraries/header.inc.php';
|
|
||||||
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
|
||||||
require_once './libraries/footer.inc.php';
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
} elseif (@function_exists('libiconv')) {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
|
||||||
} else {
|
} else {
|
||||||
if (@function_exists('iconv')) {
|
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
||||||
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
|
|
||||||
} else {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_ICONV;
|
|
||||||
}
|
|
||||||
} elseif (@function_exists('libiconv')) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
|
|
||||||
} elseif (@function_exists('recode_string')) {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_RECODE;
|
|
||||||
} else {
|
|
||||||
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
|
||||||
|
|
||||||
require_once './libraries/header.inc.php';
|
if (!isset($GLOBALS['is_header_sent'])) {
|
||||||
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
include './libraries/header.inc.php';
|
||||||
require_once './libraries/footer.inc.php';
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
||||||
|
require_once './libraries/footer.inc.php';
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
} elseif ($PMA_recoding_engine == 'recode') {
|
||||||
|
if (@function_exists('recode_string')) {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_RECODE;
|
||||||
|
} else {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
||||||
|
|
||||||
|
require_once './libraries/header.inc.php';
|
||||||
|
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
||||||
|
require_once './libraries/footer.inc.php';
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
if (@function_exists('iconv')) {
|
||||||
|
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
|
||||||
|
} else {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_ICONV;
|
||||||
|
}
|
||||||
|
} elseif (@function_exists('libiconv')) {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
|
||||||
|
} elseif (@function_exists('recode_string')) {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_RECODE;
|
||||||
|
} else {
|
||||||
|
$PMA_recoding_engine = PMA_CHARSET_NONE;
|
||||||
|
|
||||||
|
require_once './libraries/header.inc.php';
|
||||||
|
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
|
||||||
|
require_once './libraries/footer.inc.php';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load AIX iconv wrapper if needed */
|
/* Load AIX iconv wrapper if needed */
|
||||||
|
@@ -1950,16 +1950,6 @@ $cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
|
|||||||
*/
|
*/
|
||||||
$cfg['FilterLanguages'] = '';
|
$cfg['FilterLanguages'] = '';
|
||||||
|
|
||||||
/**
|
|
||||||
* Allow character set recoding of MySQL queries, must be also enabled in language
|
|
||||||
* file to make harder using other language files than Unicode.
|
|
||||||
* Default value is false to avoid problems on servers without the iconv
|
|
||||||
* extension
|
|
||||||
*
|
|
||||||
* @global boolean $cfg['AllowAnywhereRecoding']
|
|
||||||
*/
|
|
||||||
$cfg['AllowAnywhereRecoding'] = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* You can select here which functions will be used for character set conversion.
|
* You can select here which functions will be used for character set conversion.
|
||||||
* Possible values are:
|
* Possible values are:
|
||||||
|
@@ -226,7 +226,7 @@ function PMA_fatalError($error_message, $message_args = null)
|
|||||||
if (! isset($GLOBALS['available_languages'])) {
|
if (! isset($GLOBALS['available_languages'])) {
|
||||||
$GLOBALS['cfg'] = array(
|
$GLOBALS['cfg'] = array(
|
||||||
'DefaultLang' => 'en',
|
'DefaultLang' => 'en',
|
||||||
'AllowAnywhereRecoding' => false);
|
);
|
||||||
|
|
||||||
// Loads the language file
|
// Loads the language file
|
||||||
require_once './libraries/select_lang.lib.php';
|
require_once './libraries/select_lang.lib.php';
|
||||||
|
@@ -205,7 +205,7 @@ echo PMA_pluginGetJavascript($export_list);
|
|||||||
<div class="formelementrow">
|
<div class="formelementrow">
|
||||||
<?php
|
<?php
|
||||||
// charset of file
|
// charset of file
|
||||||
if ($cfg['AllowAnywhereRecoding']) {
|
if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) {
|
||||||
echo ' <label for="select_charset_of_file">'
|
echo ' <label for="select_charset_of_file">'
|
||||||
. __('Character set of the file:') . '</label>' . "\n";
|
. __('Character set of the file:') . '</label>' . "\n";
|
||||||
|
|
||||||
|
@@ -173,7 +173,7 @@ if ($_SESSION[$SESSION_KEY]["handler"]!="noplugin") {
|
|||||||
|
|
||||||
// charset of file
|
// charset of file
|
||||||
echo '<div class="formelementrow">' . "\n";
|
echo '<div class="formelementrow">' . "\n";
|
||||||
if ($cfg['AllowAnywhereRecoding']) {
|
if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) {
|
||||||
echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>';
|
echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>';
|
||||||
reset($cfg['AvailableCharsets']);
|
reset($cfg['AvailableCharsets']);
|
||||||
echo '<select id="charset_of_file" name="charset_of_file" size="1">';
|
echo '<select id="charset_of_file" name="charset_of_file" size="1">';
|
||||||
|
@@ -187,7 +187,6 @@ function PMA_exportFooter()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// restore connection settings
|
// restore connection settings
|
||||||
// (not set if $cfg['AllowAnywhereRecoding'] is false)
|
|
||||||
$charset_of_file = isset($GLOBALS['charset_of_file']) ? $GLOBALS['charset_of_file'] : '';
|
$charset_of_file = isset($GLOBALS['charset_of_file']) ? $GLOBALS['charset_of_file'] : '';
|
||||||
if (!empty($GLOBALS['asfile']) && isset($mysql_charset_map[$charset_of_file])) {
|
if (!empty($GLOBALS['asfile']) && isset($mysql_charset_map[$charset_of_file])) {
|
||||||
$foot .= $crlf
|
$foot .= $crlf
|
||||||
@@ -276,8 +275,7 @@ function PMA_exportHeader()
|
|||||||
// so that a utility like the mysql client can interpret
|
// so that a utility like the mysql client can interpret
|
||||||
// the file correctly
|
// the file correctly
|
||||||
if (isset($GLOBALS['charset_of_file']) && isset($mysql_charset_map[$GLOBALS['charset_of_file']])) {
|
if (isset($GLOBALS['charset_of_file']) && isset($mysql_charset_map[$GLOBALS['charset_of_file']])) {
|
||||||
// $cfg['AllowAnywhereRecoding'] was true so we got a charset from
|
// we got a charset from the export dialog
|
||||||
// the export dialog
|
|
||||||
$set_names = $mysql_charset_map[$GLOBALS['charset_of_file']];
|
$set_names = $mysql_charset_map[$GLOBALS['charset_of_file']];
|
||||||
} else {
|
} else {
|
||||||
// by default we use the connection charset
|
// by default we use the connection charset
|
||||||
|
@@ -29,7 +29,7 @@ $gnu_iconv_to_aix_iconv_codepage_map = array (
|
|||||||
// "big5" --> "IBM-eucTW" according to http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
|
// "big5" --> "IBM-eucTW" according to http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
|
||||||
'big5' => 'IBM-eucTW',
|
'big5' => 'IBM-eucTW',
|
||||||
|
|
||||||
// Other mappings corresponding to the phpMyAdmin dropdown box when using the AllowAnywhereRecoding feature
|
// Other mappings corresponding to the phpMyAdmin dropdown box when using the charset conversion feature
|
||||||
'euc-jp' => 'IBM-eucJP',
|
'euc-jp' => 'IBM-eucJP',
|
||||||
'koi8-r' => 'IBM-eucKR',
|
'koi8-r' => 'IBM-eucKR',
|
||||||
'ks_c_5601-1987' => 'KSC5601.1987-0',
|
'ks_c_5601-1987' => 'KSC5601.1987-0',
|
||||||
|
@@ -487,7 +487,6 @@ function PMA_sqlQueryFormBookmark()
|
|||||||
* @uses $GLOBALS['cfg']['BZipDump']
|
* @uses $GLOBALS['cfg']['BZipDump']
|
||||||
* @uses $GLOBALS['cfg']['UploadDir']
|
* @uses $GLOBALS['cfg']['UploadDir']
|
||||||
* @uses $GLOBALS['cfg']['AvailableCharsets']
|
* @uses $GLOBALS['cfg']['AvailableCharsets']
|
||||||
* @uses $GLOBALS['cfg']['AllowAnywhereRecoding']
|
|
||||||
* @uses __('bzipped')
|
* @uses __('bzipped')
|
||||||
* @uses __('Character set of the file:')
|
* @uses __('Character set of the file:')
|
||||||
* @uses __('Compression')
|
* @uses __('Compression')
|
||||||
|
@@ -74,7 +74,6 @@ $forms['Server_tracking'] = array('Servers' => array(1 => array(
|
|||||||
$forms['Import_export'] = array(
|
$forms['Import_export'] = array(
|
||||||
'UploadDir',
|
'UploadDir',
|
||||||
'SaveDir',
|
'SaveDir',
|
||||||
'AllowAnywhereRecoding',
|
|
||||||
'RecodingEngine',
|
'RecodingEngine',
|
||||||
'IconvExtraParams',
|
'IconvExtraParams',
|
||||||
'ZipDump',
|
'ZipDump',
|
||||||
|
@@ -13,7 +13,6 @@ if (!function_exists('__')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$strSetupAllowAnywhereRecoding_name = __('Allow character set conversion');
|
|
||||||
$strSetupAllowArbitraryServer_desc = __('If enabled user can enter any MySQL server in login form for cookie auth');
|
$strSetupAllowArbitraryServer_desc = __('If enabled user can enter any MySQL server in login form for cookie auth');
|
||||||
$strSetupAllowArbitraryServerMsg = __('This [a@?page=form&formset=features#tab_Security]option[/a] should be disabled as it allows attackers to bruteforce login to any MySQL server. If you feel this is necessary, use [a@?page=form&formset=features#tab_Security]trusted proxies list[/a]. However, IP-based protection may not be reliable if your IP belongs to an ISP where thousands of users, including you, are connected to.');
|
$strSetupAllowArbitraryServerMsg = __('This [a@?page=form&formset=features#tab_Security]option[/a] should be disabled as it allows attackers to bruteforce login to any MySQL server. If you feel this is necessary, use [a@?page=form&formset=features#tab_Security]trusted proxies list[/a]. However, IP-based protection may not be reliable if your IP belongs to an ISP where thousands of users, including you, are connected to.');
|
||||||
$strSetupAllowArbitraryServer_name = __('Allow login to any MySQL server');
|
$strSetupAllowArbitraryServer_name = __('Allow login to any MySQL server');
|
||||||
|
Reference in New Issue
Block a user