Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Foellmann <foellmann@foe-services.de>2014-07-28 14:13:10 +0400
committerChristian Foellmann <foellmann@foe-services.de>2014-07-28 14:13:10 +0400
commit276394119dfbe117acd411a3862de597ba35a2ad (patch)
tree3dc394a15f459d6324e3452e15e9446e47fe3bd0 /libraries/config
parentc8c2e72886de1b71f5abcaa295075da9666096b5 (diff)
UPDATE phpmyadmin 4.2.6 multilanguage
Diffstat (limited to 'libraries/config')
-rw-r--r--libraries/config/ConfigFile.class.php86
-rw-r--r--libraries/config/Form.class.php63
-rw-r--r--libraries/config/FormDisplay.class.php132
-rw-r--r--libraries/config/FormDisplay.tpl.php2
-rw-r--r--libraries/config/ServerConfigChecks.class.php573
-rw-r--r--libraries/config/Validator.class.php142
-rw-r--r--libraries/config/messages.inc.php675
-rw-r--r--libraries/config/setup.forms.php18
-rw-r--r--libraries/config/user_preferences.forms.php10
9 files changed, 1278 insertions, 423 deletions
diff --git a/libraries/config/ConfigFile.class.php b/libraries/config/ConfigFile.class.php
index 7f2c22a7d2..368aacd927 100644
--- a/libraries/config/ConfigFile.class.php
+++ b/libraries/config/ConfigFile.class.php
@@ -28,7 +28,7 @@ class ConfigFile
/**
* Stores original PMA config, not modified by user preferences
- * @var PMA_Config
+ * @var array
*/
private $_baseCfg;
@@ -187,9 +187,9 @@ class ConfigFile
/**
* Sets config value
*
- * @param string $path
- * @param mixed $value
- * @param string $canonical_path
+ * @param string $path Path
+ * @param mixed $value Value
+ * @param string $canonical_path Canonical path
*
* @return void
*/
@@ -205,31 +205,35 @@ class ConfigFile
return;
}
// if the path isn't protected it may be removed
- if (!isset($this->_persistKeys[$canonical_path])) {
- $default_value = $this->getDefault($canonical_path);
- $remove_path = $value === $default_value;
- if ($this->_isInSetup) {
- // remove if it has a default value or is empty
- $remove_path = $remove_path
- || (empty($value) && empty($default_value));
- } else {
- // get original config values not overwritten by user
- // preferences to allow for overwriting options set in
- // config.inc.php with default values
- $instance_default_value = PMA_arrayRead(
- $canonical_path,
- $this->_baseCfg
- );
- // remove if it has a default value and base config (config.inc.php)
- // uses default value
- $remove_path = $remove_path
- && ($instance_default_value === $default_value);
- }
- if ($remove_path) {
- PMA_arrayRemove($path, $_SESSION[$this->_id]);
- return;
- }
+ if (isset($this->_persistKeys[$canonical_path])) {
+ PMA_arrayWrite($path, $_SESSION[$this->_id], $value);
+ return;
+ }
+
+ $default_value = $this->getDefault($canonical_path);
+ $remove_path = $value === $default_value;
+ if ($this->_isInSetup) {
+ // remove if it has a default value or is empty
+ $remove_path = $remove_path
+ || (empty($value) && empty($default_value));
+ } else {
+ // get original config values not overwritten by user
+ // preferences to allow for overwriting options set in
+ // config.inc.php with default values
+ $instance_default_value = PMA_arrayRead(
+ $canonical_path,
+ $this->_baseCfg
+ );
+ // remove if it has a default value and base config (config.inc.php)
+ // uses default value
+ $remove_path = $remove_path
+ && ($instance_default_value === $default_value);
}
+ if ($remove_path) {
+ PMA_arrayRemove($path, $_SESSION[$this->_id]);
+ return;
+ }
+
PMA_arrayWrite($path, $_SESSION[$this->_id], $value);
}
@@ -238,9 +242,9 @@ class ConfigFile
* (eg. 'key/subkey').
* Used as array_walk() callback.
*
- * @param mixed $value
- * @param mixed $key
- * @param mixed $prefix
+ * @param mixed $value Value
+ * @param mixed $key Key
+ * @param mixed $prefix Prefix
*
* @return void
*/
@@ -265,7 +269,7 @@ class ConfigFile
$this->_flattenArrayResult = array();
array_walk($this->_defaultCfg, array($this, '_flattenArray'), '');
$flat_cfg = $this->_flattenArrayResult;
- $this->_flattenArrayResult = null;
+ $this->_flattenArrayResult = array();
return $flat_cfg;
}
@@ -273,7 +277,7 @@ class ConfigFile
* Updates config with values read from given array
* (config will contain differences to defaults from config.defaults.php).
*
- * @param array $cfg
+ * @param array $cfg Configuration
*
* @return void
*/
@@ -283,7 +287,7 @@ class ConfigFile
$this->_flattenArrayResult = array();
array_walk($cfg, array($this, '_flattenArray'), '');
$flat_cfg = $this->_flattenArrayResult;
- $this->_flattenArrayResult = null;
+ $this->_flattenArrayResult = array();
// save values map for translating a few user preferences paths,
// should be complemented by code reading from generated config
@@ -314,8 +318,8 @@ class ConfigFile
* exist in config.default.php ($cfg) and config.values.php
* ($_cfg_db['_overrides'])
*
- * @param string $canonical_path
- * @param mixed $default
+ * @param string $canonical_path Canonical path
+ * @param mixed $default Default value
*
* @return mixed
*/
@@ -328,8 +332,8 @@ class ConfigFile
* Returns config value, if it's not set uses the default one; returns
* $default if the path isn't set and doesn't contain a default value
*
- * @param string $path
- * @param mixed $default
+ * @param string $path Path
+ * @param mixed $default Default value
*
* @return mixed
*/
@@ -346,7 +350,7 @@ class ConfigFile
/**
* Returns canonical path
*
- * @param string $path
+ * @param string $path Path
*
* @return string
*/
@@ -406,7 +410,7 @@ class ConfigFile
}
$path = 'Servers/' . $server;
- $dsn = $this->getValue("$path/extension") . '://';
+ $dsn = 'mysqli://';
if ($this->getValue("$path/auth_type") == 'config') {
$dsn .= $this->getValue("$path/user");
if (! $this->getValue("$path/nopassword")) {
@@ -515,7 +519,7 @@ class ConfigFile
$this->_flattenArrayResult = array();
array_walk($_SESSION[$this->_id], array($this, '_flattenArray'), '');
$c = $this->_flattenArrayResult;
- $this->_flattenArrayResult = null;
+ $this->_flattenArrayResult = array();
$persistKeys = array_diff(
array_keys($this->_persistKeys),
diff --git a/libraries/config/Form.class.php b/libraries/config/Form.class.php
index b8b55bcc8a..23413bf0a8 100644
--- a/libraries/config/Form.class.php
+++ b/libraries/config/Form.class.php
@@ -84,7 +84,7 @@ class Form
/**
* Returns allowed values for select fields
*
- * @param string $option_path
+ * @param string $option_path Option path
*
* @return array
*/
@@ -103,20 +103,22 @@ class Form
if (isset($value[0]) && $value[0] === '#') {
// remove first element ('#')
array_shift($value);
- } else {
- // convert value list array('a', 'b') to array('a' => 'a', 'b' => 'b')
- $has_string_keys = false;
- $keys = array();
- for ($i = 0; $i < count($value); $i++) {
- if (!isset($value[$i])) {
- $has_string_keys = true;
- break;
- }
- $keys[] = is_bool($value[$i]) ? (int)$value[$i] : $value[$i];
- }
- if (! $has_string_keys) {
- $value = array_combine($keys, $value);
+ // $value has keys and value names, return it
+ return $value;
+ }
+
+ // convert value list array('a', 'b') to array('a' => 'a', 'b' => 'b')
+ $has_string_keys = false;
+ $keys = array();
+ for ($i = 0, $nb = count($value); $i < $nb; $i++) {
+ if (!isset($value[$i])) {
+ $has_string_keys = true;
+ break;
}
+ $keys[] = is_bool($value[$i]) ? (int)$value[$i] : $value[$i];
+ }
+ if (! $has_string_keys) {
+ $value = array_combine($keys, $value);
}
// $value has keys and value names, return it
@@ -127,9 +129,9 @@ class Form
* array_walk callback function, reads path of form fields from
* array (see file comment in setup.forms.php or user_preferences.forms.inc)
*
- * @param mixed $value
- * @param mixed $key
- * @param mixed $prefix
+ * @param mixed $value Value
+ * @param mixed $key Key
+ * @param mixed $prefix Prefix
*
* @return void
*/
@@ -140,23 +142,24 @@ class Form
if (is_array($value)) {
$prefix .= $key . '/';
array_walk($value, array($this, '_readFormPathsCallback'), $prefix);
- } else {
- if (!is_int($key)) {
- $this->default[$prefix . $key] = $value;
- $value = $key;
- }
- // add unique id to group ends
- if ($value == ':group:end') {
- $value .= ':' . $group_counter++;
- }
- $this->fields[] = $prefix . $value;
+ return;
+ }
+
+ if (!is_int($key)) {
+ $this->default[$prefix . $key] = $value;
+ $value = $key;
+ }
+ // add unique id to group ends
+ if ($value == ':group:end') {
+ $value .= ':' . $group_counter++;
}
+ $this->fields[] = $prefix . $value;
}
/**
* Reads form paths to {@link $fields}
*
- * @param array $form
+ * @param array $form Form
*
* @return void
*/
@@ -204,8 +207,8 @@ class Form
* Reads form settings and prepares class to work with given subset of
* config file
*
- * @param string $form_name
- * @param array $form
+ * @param string $form_name Form name
+ * @param array $form Form
*
* @return void
*/
diff --git a/libraries/config/FormDisplay.class.php b/libraries/config/FormDisplay.class.php
index 74e326a2f5..3bd0f3eaee 100644
--- a/libraries/config/FormDisplay.class.php
+++ b/libraries/config/FormDisplay.class.php
@@ -93,11 +93,11 @@ class FormDisplay
public function __construct(ConfigFile $cf)
{
$this->_jsLangStrings = array(
- 'error_nan_p' => __('Not a positive number'),
- 'error_nan_nneg' => __('Not a non-negative number'),
- 'error_incorrect_port' => __('Not a valid port number'),
- 'error_invalid_value' => __('Incorrect value'),
- 'error_value_lte' => __('Value must be equal or lower than %s'));
+ 'error_nan_p' => __('Not a positive number!'),
+ 'error_nan_nneg' => __('Not a non-negative number!'),
+ 'error_incorrect_port' => __('Not a valid port number!'),
+ 'error_invalid_value' => __('Incorrect value!'),
+ 'error_value_lte' => __('Value must be equal or lower than %s!'));
$this->_configFile = $cf;
// initialize validators
PMA_Validator::getValidators($this->_configFile);
@@ -605,7 +605,7 @@ class FormDisplay
$form->getOptionValueList($system_path)
);
if (! $successfully_validated) {
- $this->_errors[$work_path][] = __('Incorrect value');
+ $this->_errors[$work_path][] = __('Incorrect value!');
$result = false;
continue;
}
@@ -620,12 +620,7 @@ class FormDisplay
? $_POST[$key]
: explode("\n", $_POST[$key]);
$_POST[$key] = array();
- foreach ($post_values as $v) {
- $v = trim($v);
- if ($v !== '') {
- $_POST[$key][] = $v;
- }
- }
+ $this->_fillPostArrayParameters($post_values, $key);
break;
}
@@ -642,37 +637,41 @@ class FormDisplay
}
// save forms
- if ($allow_partial_save || empty($this->_errors)) {
- foreach ($to_save as $work_path => $path) {
- // TrustedProxies requires changes before saving
- if ($path == 'TrustedProxies') {
- $proxies = array();
- $i = 0;
- foreach ($values[$path] as $value) {
- $matches = array();
- $match = preg_match(
- "/^(.+):(?:[ ]?)(\\w+)$/", $value, $matches
- );
- if ($match) {
- // correct 'IP: HTTP header' pair
- $ip = trim($matches[1]);
- $proxies[$ip] = trim($matches[2]);
- } else {
- // save also incorrect values
- $proxies["-$i"] = $value;
- $i++;
- }
+ if (!$allow_partial_save && !empty($this->_errors)) {
+ // don't look for non-critical errors
+ $this->_validate();
+ return $result;
+ }
+
+ foreach ($to_save as $work_path => $path) {
+ // TrustedProxies requires changes before saving
+ if ($path == 'TrustedProxies') {
+ $proxies = array();
+ $i = 0;
+ foreach ($values[$path] as $value) {
+ $matches = array();
+ $match = preg_match(
+ "/^(.+):(?:[ ]?)(\\w+)$/", $value, $matches
+ );
+ if ($match) {
+ // correct 'IP: HTTP header' pair
+ $ip = trim($matches[1]);
+ $proxies[$ip] = trim($matches[2]);
+ } else {
+ // save also incorrect values
+ $proxies["-$i"] = $value;
+ $i++;
}
- $values[$path] = $proxies;
}
- $this->_configFile->set($work_path, $values[$path], $path);
- }
- if ($is_setup_script) {
- $this->_configFile->set(
- 'UserprefsDisallow',
- array_keys($this->_userprefsDisallow)
- );
+ $values[$path] = $proxies;
}
+ $this->_configFile->set($work_path, $values[$path], $path);
+ }
+ if ($is_setup_script) {
+ $this->_configFile->set(
+ 'UserprefsDisallow',
+ array_keys($this->_userprefsDisallow)
+ );
}
// don't look for non-critical errors
@@ -730,14 +729,16 @@ class FormDisplay
*/
private function _loadUserprefsInfo()
{
- if ($this->_userprefsKeys === null) {
- $this->_userprefsKeys = array_flip(PMA_readUserprefsFieldNames());
- // read real config for user preferences display
- $userprefs_disallow = defined('PMA_SETUP')
- ? $this->_configFile->get('UserprefsDisallow', array())
- : $GLOBALS['cfg']['UserprefsDisallow'];
- $this->_userprefsDisallow = array_flip($userprefs_disallow);
+ if ($this->_userprefsKeys !== null) {
+ return;
}
+
+ $this->_userprefsKeys = array_flip(PMA_readUserprefsFieldNames());
+ // read real config for user preferences display
+ $userprefs_disallow = defined('PMA_SETUP')
+ ? $this->_configFile->get('UserprefsDisallow', array())
+ : $GLOBALS['cfg']['UserprefsDisallow'];
+ $this->_userprefsDisallow = array_flip($userprefs_disallow);
}
/**
@@ -794,28 +795,15 @@ class FormDisplay
}
if (!function_exists($funcs[$system_path][1])) {
$comment .= ($comment ? '; ' : '') . sprintf(
- __('Compressed export will not work due to missing function %s.'),
+ __(
+ 'Compressed export will not work due to missing function %s.'
+ ),
$funcs[$system_path][1]
);
}
$opts['comment'] = $comment;
$opts['comment_warning'] = true;
}
- if ($system_path == 'SQLQuery/Validate'
- && ! $GLOBALS['cfg']['SQLValidator']['use']
- ) {
- $opts['comment'] = __('SQL Validator is disabled');
- $opts['comment_warning'] = true;
- }
- if ($system_path == 'SQLValidator/use') {
- if (!class_exists('SOAPClient')) {
- @include_once 'SOAP/Client.php';
- if (!class_exists('SOAP_Client')) {
- $opts['comment'] = __('SOAP extension not found');
- $opts['comment_warning'] = true;
- }
- }
- }
if (!defined('PMA_SETUP')) {
if (($system_path == 'MaxDbList' || $system_path == 'MaxTableList'
|| $system_path == 'QueryHistoryMax')
@@ -826,5 +814,23 @@ class FormDisplay
}
}
}
+
+ /**
+ * Copy items of an array to $_POST variable
+ *
+ * @param array $post_values List of parameters
+ * @param string $key Array key
+ *
+ * @return void
+ */
+ private function _fillPostArrayParameters($post_values, $key)
+ {
+ foreach ($post_values as $v) {
+ $v = trim($v);
+ if ($v !== '') {
+ $_POST[$key][] = $v;
+ }
+ }
+ }
}
?>
diff --git a/libraries/config/FormDisplay.tpl.php b/libraries/config/FormDisplay.tpl.php
index 07d82bf415..b355511f1c 100644
--- a/libraries/config/FormDisplay.tpl.php
+++ b/libraries/config/FormDisplay.tpl.php
@@ -239,7 +239,7 @@ function PMA_displayInput($path, $name, $type, $value, $description = '',
. ' value="' . htmlspecialchars($value) . '" />';
break;
case 'number_text':
- echo '<input type="number" size="15" ' . $name_id . $field_class
+ echo '<input type="number" ' . $name_id . $field_class
. ' value="' . htmlspecialchars($value) . '" />';
break;
case 'checkbox':
diff --git a/libraries/config/ServerConfigChecks.class.php b/libraries/config/ServerConfigChecks.class.php
new file mode 100644
index 0000000000..8872bf6ad5
--- /dev/null
+++ b/libraries/config/ServerConfigChecks.class.php
@@ -0,0 +1,573 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Server config checks management
+ *
+ * @package PhpMyAdmin
+ */
+
+/**
+ * Performs various compatibility, security and consistency checks on current config
+ *
+ * Outputs results to message list, must be called between PMA_messagesBegin()
+ * and PMA_messagesEnd()
+ *
+ * @package PhpMyAdmin
+ */
+class ServerConfigChecks
+{
+ /**
+ * @var ConfigFile configurations being checked
+ */
+ protected $cfg;
+
+ /**
+ * Constructor.
+ *
+ * @param ConfigFile $cfg Configuration
+ */
+ public function __construct(ConfigFile $cfg)
+ {
+ $this->cfg = $cfg;
+ }
+
+ /**
+ * Perform config checks
+ *
+ * @return void
+ */
+ public function performConfigChecks()
+ {
+ $blowfishSecret = $this->cfg->get('blowfish_secret');
+ $blowfishSecretSet = false;
+ $cookieAuthUsed = false;
+
+ list(
+ $sAllowArbitraryServerWarn, $sBlowfishSecretMsg,
+ $sBZipDumpWarn, $sDirectoryNotice, $sForceSSLNotice,
+ $sGZipDumpWarn, $sLoginCookieValidityWarn,
+ $sLoginCookieValidityWarn2, $sLoginCookieValidityWarn3,
+ $sSecurityInfoMsg, $sSrvAuthCfgMsg, $sZipDumpExportWarn,
+ $sZipDumpImportWarn
+ ) = self::defineMessages();
+
+ list($cookieAuthUsed, $blowfishSecret, $blowfishSecretSet)
+ = $this->performConfigChecksServers(
+ $cookieAuthUsed, $blowfishSecret, $sSrvAuthCfgMsg,
+ $sSecurityInfoMsg, $blowfishSecretSet
+ );
+
+ $this->performConfigChecksCookieAuthUsed(
+ $cookieAuthUsed, $blowfishSecretSet, $sBlowfishSecretMsg,
+ $blowfishSecret
+ );
+
+ //
+ // $cfg['ForceSSL']
+ // should be enabled if possible
+ //
+ if (!$this->cfg->getValue('ForceSSL')) {
+ PMA_messagesSet(
+ 'notice',
+ 'ForceSSL',
+ PMA_lang(PMA_langName('ForceSSL')),
+ PMA_lang($sForceSSLNotice)
+ );
+ }
+
+ //
+ // $cfg['AllowArbitraryServer']
+ // should be disabled
+ //
+ if ($this->cfg->getValue('AllowArbitraryServer')) {
+ PMA_messagesSet(
+ 'notice',
+ 'AllowArbitraryServer',
+ PMA_lang(PMA_langName('AllowArbitraryServer')),
+ PMA_lang($sAllowArbitraryServerWarn)
+ );
+ }
+
+ $this->performConfigChecksLoginCookie(
+ $sLoginCookieValidityWarn, $sLoginCookieValidityWarn2,
+ $sLoginCookieValidityWarn3
+ );
+
+ //
+ // $cfg['SaveDir']
+ // should not be world-accessible
+ //
+ if ($this->cfg->getValue('SaveDir') != '') {
+ PMA_messagesSet(
+ 'notice',
+ 'SaveDir',
+ PMA_lang(PMA_langName('SaveDir')),
+ PMA_lang($sDirectoryNotice)
+ );
+ }
+
+ //
+ // $cfg['TempDir']
+ // should not be world-accessible
+ //
+ if ($this->cfg->getValue('TempDir') != '') {
+ PMA_messagesSet(
+ 'notice',
+ 'TempDir',
+ PMA_lang(PMA_langName('TempDir')),
+ PMA_lang($sDirectoryNotice)
+ );
+ }
+
+ $this->performConfigChecksZips(
+ $sGZipDumpWarn, $sBZipDumpWarn, $sZipDumpImportWarn,
+ $sZipDumpExportWarn
+ );
+ }
+
+ /**
+ * Check config of servers
+ *
+ * @param boolean $cookieAuthUsed Cookie auth is used
+ * @param string $blowfishSecret Blowfish secret
+ * @param string $sServerAuthCfgMsg Message for server auth config
+ * @param string $sSecurityInfoMsg Message for security information
+ * @param boolean $blowfishSecretSet Blowfish secret set
+ *
+ * @return array
+ */
+ protected function performConfigChecksServers(
+ $cookieAuthUsed, $blowfishSecret, $sServerAuthCfgMsg,
+ $sSecurityInfoMsg, $blowfishSecretSet
+ ) {
+ $serverCnt = $this->cfg->getServerCount();
+ for ($i = 1; $i <= $serverCnt; $i++) {
+ $cookieAuthServer
+ = ($this->cfg->getValue("Servers/$i/auth_type") == 'cookie');
+ $cookieAuthUsed |= $cookieAuthServer;
+ $serverName = $this->performConfigChecksServersGetServerName(
+ $this->cfg->getServerName($i), $i
+ );
+ $serverName = htmlspecialchars($serverName);
+
+ list($blowfishSecret, $blowfishSecretSet)
+ = $this->performConfigChecksServersSetBlowfishSecret(
+ $blowfishSecret, $cookieAuthServer, $blowfishSecretSet
+ );
+
+ //
+ // $cfg['Servers'][$i]['ssl']
+ // should be enabled if possible
+ //
+ if (!$this->cfg->getValue("Servers/$i/ssl")) {
+ $title = PMA_lang(PMA_langName('Servers/1/ssl')) . " ($serverName)";
+ PMA_messagesSet(
+ 'notice',
+ "Servers/$i/ssl",
+ $title,
+ __('You should use SSL connections if your database server supports it.')
+ );
+ }
+
+ //
+ // $cfg['Servers'][$i]['auth_type']
+ // warn about full user credentials if 'auth_type' is 'config'
+ //
+ if ($this->cfg->getValue("Servers/$i/auth_type") == 'config'
+ && $this->cfg->getValue("Servers/$i/user") != ''
+ && $this->cfg->getValue("Servers/$i/password") != ''
+ ) {
+ $title = PMA_lang(PMA_langName('Servers/1/auth_type'))
+ . " ($serverName)";
+ PMA_messagesSet(
+ 'notice',
+ "Servers/$i/auth_type",
+ $title,
+ PMA_lang($sServerAuthCfgMsg, $i) . ' '
+ . PMA_lang($sSecurityInfoMsg, $i)
+ );
+ }
+
+ //
+ // $cfg['Servers'][$i]['AllowRoot']
+ // $cfg['Servers'][$i]['AllowNoPassword']
+ // serious security flaw
+ //
+ if ($this->cfg->getValue("Servers/$i/AllowRoot")
+ && $this->cfg->getValue("Servers/$i/AllowNoPassword")
+ ) {
+ $title = PMA_lang(PMA_langName('Servers/1/AllowNoPassword'))
+ . " ($serverName)";
+ PMA_messagesSet(
+ 'notice',
+ "Servers/$i/AllowNoPassword",
+ $title,
+ __('You allow for connecting to the server without a password.') . ' '
+ . PMA_lang($sSecurityInfoMsg, $i)
+ );
+ }
+ }
+ return array($cookieAuthUsed, $blowfishSecret, $blowfishSecretSet);
+ }
+
+ /**
+ * Set blowfish secret
+ *
+ * @param string $blowfishSecret Blowfish secret
+ * @param boolean $cookieAuthServer Cookie auth is used
+ * @param boolean $blowfishSecretSet Blowfish secret set
+ *
+ * @return array
+ */
+ protected function performConfigChecksServersSetBlowfishSecret(
+ $blowfishSecret, $cookieAuthServer, $blowfishSecretSet
+ ) {
+ if ($cookieAuthServer && $blowfishSecret === null) {
+ $blowfishSecret = uniqid('', true);
+ $blowfishSecretSet = true;
+ $this->cfg->set('blowfish_secret', $blowfishSecret);
+ return array($blowfishSecret, $blowfishSecretSet);
+ }
+ return array($blowfishSecret, $blowfishSecretSet);
+ }
+
+ /**
+ * Define server name
+ *
+ * @param string $serverName Server name
+ * @param int $serverId Server id
+ *
+ * @return string Server name
+ */
+ protected function performConfigChecksServersGetServerName(
+ $serverName, $serverId
+ ) {
+ if ($serverName == 'localhost') {
+ $serverName .= " [$serverId]";
+ return $serverName;
+ }
+ return $serverName;
+ }
+
+ /**
+ * Perform config checks for zip part.
+ *
+ * @param string $sGZipDumpWarning Gzip dump warning
+ * @param string $sBZipDumpWarning Bzip dump warning
+ * @param string $sZipDumpImportWarn Zip dump import warning
+ * @param string $sZipDumpExportWarn Zip dump export warning
+ *
+ * @return void
+ */
+ protected function performConfigChecksZips(
+ $sGZipDumpWarning, $sBZipDumpWarning, $sZipDumpImportWarn,
+ $sZipDumpExportWarn
+ ) {
+ $this->performConfigChecksServerGZipdump($sGZipDumpWarning);
+ $this->performConfigChecksServerBZipdump($sBZipDumpWarning);
+ $this->performConfigChecksServersZipdump(
+ $sZipDumpImportWarn, $sZipDumpExportWarn
+ );
+ }
+
+ /**
+ * Perform config checks for zip part.
+ *
+ * @param string $sZipDumpImportWarn Zip dump import warning
+ * @param string $sZipDumpExportWarn Zip dump export warning
+ *
+ * @return void
+ */
+ protected function performConfigChecksServersZipdump(
+ $sZipDumpImportWarn, $sZipDumpExportWarn
+ ) {
+ //
+ // $cfg['ZipDump']
+ // requires zip_open in import
+ //
+ if ($this->cfg->getValue('ZipDump') && !@function_exists('zip_open')) {
+ PMA_messagesSet(
+ 'error',
+ 'ZipDump_import',
+ PMA_lang(PMA_langName('ZipDump')),
+ PMA_lang($sZipDumpImportWarn, 'zip_open')
+ );
+ }
+
+ //
+ // $cfg['ZipDump']
+ // requires gzcompress in export
+ //
+ if ($this->cfg->getValue('ZipDump') && !@function_exists('gzcompress')) {
+ PMA_messagesSet(
+ 'error',
+ 'ZipDump_export',
+ PMA_lang(PMA_langName('ZipDump')),
+ PMA_lang($sZipDumpExportWarn, 'gzcompress')
+ );
+ }
+ }
+
+ /**
+ * Check config of servers
+ *
+ * @param boolean $cookieAuthUsed Cookie auth is used
+ * @param boolean $blowfishSecretSet Blowfish secret set
+ * @param string $sBlowfishSecretMsg Blowfish secret message
+ * @param string $blowfishSecret Blowfish secret
+ *
+ * @return array
+ */
+ protected function performConfigChecksCookieAuthUsed(
+ $cookieAuthUsed, $blowfishSecretSet, $sBlowfishSecretMsg,
+ $blowfishSecret
+ ) {
+ //
+ // $cfg['blowfish_secret']
+ // it's required for 'cookie' authentication
+ //
+ if ($cookieAuthUsed) {
+ if ($blowfishSecretSet) {
+ // 'cookie' auth used, blowfish_secret was generated
+ PMA_messagesSet(
+ 'notice',
+ 'blowfish_secret_created',
+ PMA_lang(PMA_langName('blowfish_secret')),
+ PMA_lang($sBlowfishSecretMsg)
+ );
+ } else {
+ $blowfishWarnings = array();
+ // check length
+ if (strlen($blowfishSecret) < 8) {
+ // too short key
+ $blowfishWarnings[] = __('Key is too short, it should have at least 8 characters.');
+ }
+ // check used characters
+ $hasDigits = (bool)preg_match('/\d/', $blowfishSecret);
+ $hasChars = (bool)preg_match('/\S/', $blowfishSecret);
+ $hasNonword = (bool)preg_match('/\W/', $blowfishSecret);
+ if (!$hasDigits || !$hasChars || !$hasNonword) {
+ $blowfishWarnings[] = PMA_lang(__('Key should contain letters, numbers [em]and[/em] special characters.'));
+ }
+ if (!empty($blowfishWarnings)) {
+ PMA_messagesSet(
+ 'error',
+ 'blowfish_warnings' . count($blowfishWarnings),
+ PMA_lang(PMA_langName('blowfish_secret')),
+ implode('<br />', $blowfishWarnings)
+ );
+ }
+ }
+ }
+ }
+
+ /**
+ * Define all messages
+ *
+ * @return array
+ */
+ protected static function defineMessages()
+ {
+ $sAllowArbitraryServerWarn = __('This %soption%s should be disabled as it allows attackers to bruteforce login to any MySQL server. If you feel this is necessary, use %strusted proxies list%s. However, IP-based protection may not be reliable if your IP belongs to an ISP where thousands of users, including you, are connected to.');
+ $sAllowArbitraryServerWarn = sprintf(
+ $sAllowArbitraryServerWarn,
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]', '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]'
+ );
+ $sBlowfishSecretMsg = __('You didn\'t have blowfish secret set and have enabled [kbd]cookie[/kbd] authentication, so a key was automatically generated for you. It is used to encrypt cookies; you don\'t need to remember it.');
+ $sBZipDumpWarning = __('%sBzip2 compression and decompression%s requires functions (%s) which are unavailable on this system.');
+ $sBZipDumpWarning = sprintf(
+ $sBZipDumpWarning,
+ '[a@?page=form&amp;formset=Features#tab_Import_export]',
+ '[/a]', '%s'
+ );
+ $sDirectoryNotice = __('This value should be double checked to ensure that this directory is neither world accessible nor readable or writable by other users on your server.');
+ $sForceSSLNotice = __('This %soption%s should be enabled if your web server supports it.');
+ $sForceSSLNotice = sprintf(
+ $sForceSSLNotice,
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]'
+ );
+ $sGZipDumpWarning = __('%sGZip compression and decompression%s requires functions (%s) which are unavailable on this system.');
+ $sGZipDumpWarning = sprintf(
+ $sGZipDumpWarning,
+ '[a@?page=form&amp;formset=Features#tab_Import_export]',
+ '[/a]',
+ '%s'
+ );
+ $sLoginCookieValidityWarn = __('%sLogin cookie validity%s greater than %ssession.gc_maxlifetime%s may cause random session invalidation (currently session.gc_maxlifetime is %d).');
+ $sLoginCookieValidityWarn = sprintf(
+ $sLoginCookieValidityWarn,
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]',
+ '[a@' . PMA_getPHPDocLink(
+ 'session.configuration.php#ini.session.gc-maxlifetime'
+ ) . ']',
+ '[/a]',
+ ini_get('session.gc_maxlifetime')
+ );
+ $sLoginCookieValidityWarn2 = __('%sLogin cookie validity%s should be set to 1800 seconds (30 minutes) at most. Values larger than 1800 may pose a security risk such as impersonation.');
+ $sLoginCookieValidityWarn2 = sprintf(
+ $sLoginCookieValidityWarn2,
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]'
+ );
+ $sLoginCookieValidityWarn3 = __('If using [kbd]cookie[/kbd] authentication and %sLogin cookie store%s is not 0, %sLogin cookie validity%s must be set to a value less or equal to it.');
+ $sLoginCookieValidityWarn3 = sprintf(
+ $sLoginCookieValidityWarn3,
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]', '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]'
+ );
+ $sSecurityInfoMsg = __('If you feel this is necessary, use additional protection settings - %shost authentication%s settings and %strusted proxies list%s. However, IP-based protection may not be reliable if your IP belongs to an ISP where thousands of users, including you, are connected to.');
+ $sSecurityInfoMsg = sprintf(
+ $sSecurityInfoMsg,
+ '[a@?page=servers&amp;mode=edit&amp;id=%1$d#tab_Server_config]',
+ '[/a]',
+ '[a@?page=form&amp;formset=Features#tab_Security]',
+ '[/a]'
+ );
+ $sServerAuthConfigMsg = __('You set the [kbd]config[/kbd] authentication type and included username and password for auto-login, which is not a desirable option for live hosts. Anyone who knows or guesses your phpMyAdmin URL can directly access your phpMyAdmin panel. Set %sauthentication type%s to [kbd]cookie[/kbd] or [kbd]http[/kbd].');
+ $sServerAuthConfigMsg = sprintf(
+ $sServerAuthConfigMsg,
+ '[a@?page=servers&amp;mode=edit&amp;id=%1$d#tab_Server]',
+ '[/a]'
+ );
+ $sZipDumpExportWarn = __('%sZip compression%s requires functions (%s) which are unavailable on this system.');
+ $sZipDumpExportWarn = sprintf(
+ $sZipDumpExportWarn,
+ '[a@?page=form&amp;formset=Features#tab_Import_export]',
+ '[/a]',
+ '%s'
+ );
+ $sZipDumpImportWarn = __('%sZip decompression%s requires functions (%s) which are unavailable on this system.');
+ $sZipDumpImportWarn = sprintf(
+ $sZipDumpImportWarn,
+ '[a@?page=form&amp;formset=Features#tab_Import_export]',
+ '[/a]',
+ '%s'
+ );
+ return array(
+ $sAllowArbitraryServerWarn, $sBlowfishSecretMsg, $sBZipDumpWarning,
+ $sDirectoryNotice, $sForceSSLNotice, $sGZipDumpWarning,
+ $sLoginCookieValidityWarn, $sLoginCookieValidityWarn2,
+ $sLoginCookieValidityWarn3, $sSecurityInfoMsg, $sServerAuthConfigMsg,
+ $sZipDumpExportWarn, $sZipDumpImportWarn
+ );
+ }
+
+ /**
+ * Check configuration for login cookie
+ *
+ * @param string $sLoginCookieValidityWarn Warning 1 for login cookie validity
+ * @param string $sLoginCookieValidityWarn2 Warning 2 for login cookie validity
+ * @param string $sLoginCookieValidityWarn3 Warning 3 for login cookie validity
+ *
+ * @return void
+ */
+ protected function performConfigChecksLoginCookie(
+ $sLoginCookieValidityWarn, $sLoginCookieValidityWarn2,
+ $sLoginCookieValidityWarn3
+ ) {
+ //
+ // $cfg['LoginCookieValidity']
+ // value greater than session.gc_maxlifetime will cause
+ // random session invalidation after that time
+ $loginCookieValidity = $this->cfg->getValue('LoginCookieValidity');
+ if ($loginCookieValidity > ini_get('session.gc_maxlifetime')
+ ) {
+ PMA_messagesSet(
+ 'error',
+ 'LoginCookieValidity',
+ PMA_lang(PMA_langName('LoginCookieValidity')),
+ PMA_lang($sLoginCookieValidityWarn)
+ );
+ }
+
+ //
+ // $cfg['LoginCookieValidity']
+ // should be at most 1800 (30 min)
+ //
+ if ($loginCookieValidity > 1800) {
+ PMA_messagesSet(
+ 'notice',
+ 'LoginCookieValidity',
+ PMA_lang(PMA_langName('LoginCookieValidity')),
+ PMA_lang($sLoginCookieValidityWarn2)
+ );
+ }
+
+ //
+ // $cfg['LoginCookieValidity']
+ // $cfg['LoginCookieStore']
+ // LoginCookieValidity must be less or equal to LoginCookieStore
+ //
+ if (($this->cfg->getValue('LoginCookieStore') != 0)
+ && ($loginCookieValidity > $this->cfg->getValue('LoginCookieStore'))
+ ) {
+ PMA_messagesSet(
+ 'error',
+ 'LoginCookieValidity',
+ PMA_lang(PMA_langName('LoginCookieValidity')),
+ PMA_lang($sLoginCookieValidityWarn3)
+ );
+ }
+ }
+
+ /**
+ * Check GZipDump configuration
+ *
+ * @param string $sBZipDumpWarn Warning for BZipDumpWarning
+ *
+ * @return void
+ */
+ protected function performConfigChecksServerBZipdump($sBZipDumpWarn)
+ {
+ //
+ // $cfg['BZipDump']
+ // requires bzip2 functions
+ //
+ if ($this->cfg->getValue('BZipDump')
+ && (!@function_exists('bzopen') || !@function_exists('bzcompress'))
+ ) {
+ $functions = @function_exists('bzopen')
+ ? '' :
+ 'bzopen';
+ $functions .= @function_exists('bzcompress')
+ ? ''
+ : ($functions ? ', ' : '') . 'bzcompress';
+ PMA_messagesSet(
+ 'error',
+ 'BZipDump',
+ PMA_lang(PMA_langName('BZipDump')),
+ PMA_lang($sBZipDumpWarn, $functions)
+ );
+ }
+ }
+
+ /**
+ * Check GZipDump configuration
+ *
+ * @param string $sGZipDumpWarn Warning for GZipDumpWarning
+ *
+ * @return void
+ */
+ protected function performConfigChecksServerGZipdump($sGZipDumpWarn)
+ {
+ //
+ // $cfg['GZipDump']
+ // requires zlib functions
+ //
+ if ($this->cfg->getValue('GZipDump')
+ && (@!function_exists('gzopen') || @!function_exists('gzencode'))
+ ) {
+ PMA_messagesSet(
+ 'error',
+ 'GZipDump',
+ PMA_lang(PMA_langName('GZipDump')),
+ PMA_lang($sGZipDumpWarn, 'gzencode')
+ );
+ }
+ }
+}
diff --git a/libraries/config/Validator.class.php b/libraries/config/Validator.class.php
index e6a958880f..af3281b542 100644
--- a/libraries/config/Validator.class.php
+++ b/libraries/config/Validator.class.php
@@ -7,6 +7,11 @@
*/
/**
+ * Core libraries.
+ */
+require_once './libraries/DatabaseInterface.class.php';
+
+/**
* Validation class for various validation functions
*
* Validation function takes two argument: id for which it is called
@@ -33,34 +38,38 @@ class PMA_Validator
{
static $validators = null;
- if ($validators === null) {
- $validators = $cf->getDbEntry('_validators', array());
- if (!defined('PMA_SETUP')) {
- // not in setup script: load additional validators for user
- // preferences we need original config values not overwritten
- // by user preferences, creating a new PMA_Config instance is a
- // better idea than hacking into its code
- $uvs = $cf->getDbEntry('_userValidators', array());
- foreach ($uvs as $field => $uv_list) {
- $uv_list = (array)$uv_list;
- foreach ($uv_list as &$uv) {
- if (!is_array($uv)) {
- continue;
- }
- for ($i = 1; $i < count($uv); $i++) {
- if (substr($uv[$i], 0, 6) == 'value:') {
- $uv[$i] = PMA_arrayRead(
- substr($uv[$i], 6),
- $GLOBALS['PMA_Config']->base_settings
- );
- }
- }
+ if ($validators !== null) {
+ return $validators;
+ }
+
+ $validators = $cf->getDbEntry('_validators', array());
+ if (defined('PMA_SETUP')) {
+ return $validators;
+ }
+
+ // not in setup script: load additional validators for user
+ // preferences we need original config values not overwritten
+ // by user preferences, creating a new PMA_Config instance is a
+ // better idea than hacking into its code
+ $uvs = $cf->getDbEntry('_userValidators', array());
+ foreach ($uvs as $field => $uv_list) {
+ $uv_list = (array)$uv_list;
+ foreach ($uv_list as &$uv) {
+ if (!is_array($uv)) {
+ continue;
+ }
+ for ($i = 1, $nb = count($uv); $i < $nb; $i++) {
+ if (substr($uv[$i], 0, 6) == 'value:') {
+ $uv[$i] = PMA_arrayRead(
+ substr($uv[$i], 6),
+ $GLOBALS['PMA_Config']->base_settings
+ );
}
- $validators[$field] = isset($validators[$field])
- ? array_merge((array)$validators[$field], $uv_list)
- : $uv_list;
}
}
+ $validators[$field] = isset($validators[$field])
+ ? array_merge((array)$validators[$field], $uv_list)
+ : $uv_list;
}
return $validators;
}
@@ -121,19 +130,21 @@ class PMA_Validator
$r = call_user_func_array($vname, $args);
// merge results
- if (is_array($r)) {
- foreach ($r as $key => $error_list) {
- // skip empty values if $isPostSource is false
- if (! $isPostSource && empty($error_list)) {
- continue;
- }
- if (! isset($result[$key])) {
- $result[$key] = array();
- }
- $result[$key] = array_merge(
- $result[$key], (array)$error_list
- );
+ if (!is_array($r)) {
+ continue;
+ }
+
+ foreach ($r as $key => $error_list) {
+ // skip empty values if $isPostSource is false
+ if (! $isPostSource && empty($error_list)) {
+ continue;
+ }
+ if (! isset($result[$key])) {
+ $result[$key] = array();
}
+ $result[$key] = array_merge(
+ $result[$key], (array)$error_list
+ );
}
}
}
@@ -176,9 +187,9 @@ class PMA_Validator
$old_track_errors = ini_get('track_errors');
$old_display_errors = ini_get('display_errors');
$old_error_reporting = error_reporting(E_ALL);
- ini_set('html_errors', false);
- ini_set('track_errors', true);
- ini_set('display_errors', true);
+ ini_set('html_errors', '0');
+ ini_set('track_errors', '1');
+ ini_set('display_errors', '1');
set_error_handler(array("PMA_Validator", "nullErrorHandler"));
ob_start();
} else {
@@ -194,7 +205,6 @@ class PMA_Validator
/**
* Test database connection
*
- * @param string $extension 'drizzle', 'mysql' or 'mysqli'
* @param string $connect_type 'tcp' or 'socket'
* @param string $host host name
* @param string $port tcp port to use
@@ -206,7 +216,6 @@ class PMA_Validator
* @return bool|array
*/
public static function testDBConnection(
- $extension,
$connect_type,
$host,
$port,
@@ -216,14 +225,24 @@ class PMA_Validator
$error_key = 'Server'
) {
// static::testPHPErrorMsg();
- $socket = empty($socket) || $connect_type == 'tcp' ? null : $socket;
- $port = empty($port) || $connect_type == 'socket' ? null : ':' . $port;
$error = null;
+
+ if (PMA_DatabaseInterface::checkDbExtension('mysqli')) {
+ $socket = empty($socket) || $connect_type == 'tcp' ? null : $socket;
+ $port = empty($port) || $connect_type == 'socket' ? null : $port;
+ $extension = 'mysqli';
+ } else {
+ $socket = empty($socket) || $connect_type == 'tcp' ? null : ':' . ($socket[0] == '/' ? '' : '/') . $socket;
+ $port = empty($port) || $connect_type == 'socket' ? null : ':' . $port;
+ $extension = 'mysql';
+ }
+
+ // dead code (drizzle extension)
if ($extension == 'drizzle') {
while (1) {
$drizzle = @drizzle_create();
if (! $drizzle) {
- $error = __('Could not initialize Drizzle connection library');
+ $error = __('Could not initialize Drizzle connection library!');
break;
}
$conn = $socket
@@ -232,7 +251,7 @@ class PMA_Validator
$drizzle, $host, $port, $user, $pass, null, 0
);
if (! $conn) {
- $error = __('Could not connect to Drizzle server');
+ $error = __('Could not connect to the database server!');
drizzle_free($drizzle);
break;
}
@@ -240,7 +259,7 @@ class PMA_Validator
// to actually connect
$res = @drizzle_query($conn, 'SELECT 1');
if (! $res) {
- $error = __('Could not connect to Drizzle server');
+ $error = __('Could not connect to the database server!');
} else {
drizzle_result_free($res);
}
@@ -249,16 +268,16 @@ class PMA_Validator
break;
}
} else if ($extension == 'mysql') {
- $conn = @mysql_connect($host . $socket . $port, $user, $pass);
+ $conn = @mysql_connect($host . $port . $socket, $user, $pass);
if (! $conn) {
- $error = __('Could not connect to MySQL server');
+ $error = __('Could not connect to the database server!');
} else {
mysql_close($conn);
}
} else {
$conn = @mysqli_connect($host, $user, $pass, null, $port, $socket);
if (! $conn) {
- $error = __('Could not connect to MySQL server');
+ $error = __('Could not connect to the database server!');
} else {
mysqli_close($conn);
}
@@ -291,7 +310,7 @@ class PMA_Validator
&& empty($values['Servers/1/user'])
) {
$result['Servers/1/user']
- = __('Empty username while using config authentication method');
+ = __('Empty username while using [kbd]config[/kbd] authentication method!');
$error = true;
}
if ($values['Servers/1/auth_type'] == 'signon'
@@ -299,7 +318,7 @@ class PMA_Validator
) {
$result['Servers/1/SignonSession'] = __(
'Empty signon session name '
- . 'while using signon authentication method'
+ . 'while using [kbd]signon[/kbd] authentication method!'
);
$error = true;
}
@@ -307,7 +326,7 @@ class PMA_Validator
&& empty($values['Servers/1/SignonURL'])
) {
$result['Servers/1/SignonURL']
- = __('Empty signon URL while using signon authentication method');
+ = __('Empty signon URL while using [kbd]signon[/kbd] authentication method!');
$error = true;
}
@@ -315,7 +334,6 @@ class PMA_Validator
$password = $values['Servers/1/nopassword'] ? null
: $values['Servers/1/password'];
$test = static::testDBConnection(
- $values['Servers/1/extension'],
$values['Servers/1/connect_type'],
$values['Servers/1/host'],
$values['Servers/1/port'],
@@ -355,17 +373,17 @@ class PMA_Validator
$result = array();
if ($values['Servers/1/controluser'] == '') {
$result['Servers/1/controluser']
- = __('Empty phpMyAdmin control user while using pmadb');
+ = __('Empty phpMyAdmin control user while using phpMyAdmin configuration storage!');
$error = true;
}
if ($values['Servers/1/controlpass'] == '') {
$result['Servers/1/controlpass']
- = __('Empty phpMyAdmin control user password while using pmadb');
+ = __('Empty phpMyAdmin control user password while using phpMyAdmin configuration storage!');
$error = true;
}
if (! $error) {
$test = static::testDBConnection(
- $values['Servers/1/extension'], $values['Servers/1/connect_type'],
+ $values['Servers/1/connect_type'],
$values['Servers/1/host'], $values['Servers/1/port'],
$values['Servers/1/socket'], $values['Servers/1/controluser'],
$values['Servers/1/controlpass'], 'Server_pmadb'
@@ -514,7 +532,7 @@ class PMA_Validator
false,
false,
65535,
- __('Not a valid port number')
+ __('Not a valid port number!')
)
);
}
@@ -536,7 +554,7 @@ class PMA_Validator
false,
false,
PHP_INT_MAX,
- __('Not a positive number')
+ __('Not a positive number!')
)
);
}
@@ -558,7 +576,7 @@ class PMA_Validator
false,
true,
PHP_INT_MAX,
- __('Not a non-negative number')
+ __('Not a non-negative number!')
)
);
}
@@ -576,7 +594,7 @@ class PMA_Validator
public static function validateByRegex($path, $values, $regex)
{
$result = preg_match($regex, $values[$path]);
- return array($path => ($result ? '' : __('Incorrect value')));
+ return array($path => ($result ? '' : __('Incorrect value!')));
}
/**
@@ -592,7 +610,7 @@ class PMA_Validator
{
$result = $values[$path] <= $max_value;
return array($path => ($result ? ''
- : sprintf(__('Value must be equal or lower than %s'), $max_value)));
+ : sprintf(__('Value must be equal or lower than %s!'), $max_value)));
}
}
?>
diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php
index 34382552a6..1a2269f05d 100644
--- a/libraries/config/messages.inc.php
+++ b/libraries/config/messages.inc.php
@@ -14,57 +14,98 @@ if (!function_exists('__')) {
PMA_fatalError('Bad invocation!');
}
-$strConfigAllowArbitraryServer_desc = __('If enabled user can enter any MySQL server in login form for cookie auth');
+$strConfigAllowArbitraryServer_desc
+ = __('If enabled, user can enter any MySQL server in login form for cookie auth.');
$strConfigAllowArbitraryServer_name = __('Allow login to any MySQL server');
-$strConfigAllowThirdPartyFraming_desc = __('Enabling this allows a page located on a different domain to call phpMyAdmin inside a frame, and is a potential [strong]security hole[/strong] allowing cross-frame scripting attacks');
+$strConfigAllowThirdPartyFraming_desc = __(
+ 'Enabling this allows a page located on a different domain to call phpMyAdmin '
+ . 'inside a frame, and is a potential [strong]security hole[/strong] allowing '
+ . 'cross-frame scripting (XSS) attacks.'
+);
$strConfigAllowThirdPartyFraming_name = __('Allow third party framing');
-$strConfigAllowUserDropDatabase_name = __('Show &quot;Drop database&quot; link to normal users');
-$strConfigblowfish_secret_desc = __('Secret passphrase used for encrypting cookies in [kbd]cookie[/kbd] authentication');
+$strConfigAllowUserDropDatabase_name
+ = __('Show "Drop database" link to normal users');
+$strConfigblowfish_secret_desc = __(
+ 'Secret passphrase used for encrypting cookies in [kbd]cookie[/kbd] '
+ . 'authentication.'
+);
$strConfigblowfish_secret_name = __('Blowfish secret');
-$strConfigBrowseMarkerEnable_desc = __('Highlight selected rows');
+$strConfigBrowseMarkerEnable_desc = __('Highlight selected rows.');
$strConfigBrowseMarkerEnable_name = __('Row marker');
-$strConfigBrowsePointerEnable_desc = __('Highlight row pointed by the mouse cursor');
+$strConfigBrowsePointerEnable_desc = __('Highlight row pointed by the mouse cursor.');
$strConfigBrowsePointerEnable_name = __('Highlight pointer');
-$strConfigBZipDump_desc = __('Enable [a@http://en.wikipedia.org/wiki/Bzip2]bzip2[/a] compression for import operations');
+$strConfigBZipDump_desc = __(
+ 'Enable [a@http://en.wikipedia.org/wiki/Bzip2]bzip2[/a] compression for'
+ . ' import operations.'
+);
$strConfigBZipDump_name = __('Bzip2');
-$strConfigCharEditing_desc = __('Defines which type of editing controls should be used for CHAR and VARCHAR columns; [kbd]input[/kbd] - allows limiting of input length, [kbd]textarea[/kbd] - allows newlines in columns');
+$strConfigCharEditing_desc = __(
+ 'Defines which type of editing controls should be used for CHAR and VARCHAR '
+ . 'columns; [kbd]input[/kbd] - allows limiting of input length, '
+ . '[kbd]textarea[/kbd] - allows newlines in columns.'
+);
$strConfigCharEditing_name = __('CHAR columns editing');
-$strConfigCodemirrorEnable_desc = __('Use user-friendly editor for editing SQL queries ([a@http://codemirror.net/]CodeMirror[/a]) with syntax highlighting and line numbers');
+$strConfigCodemirrorEnable_desc = __(
+ 'Use user-friendly editor for editing SQL queries '
+ . '([a@http://codemirror.net/]CodeMirror[/a]) with syntax highlighting and '
+ . 'line numbers.'
+);
$strConfigCodemirrorEnable_name = __('Enable CodeMirror');
-$strConfigMinSizeForInputField_desc = __('Defines the minimum size for input fields generated for CHAR and VARCHAR columns');
+$strConfigMinSizeForInputField_desc = __(
+ 'Defines the minimum size for input fields generated for CHAR and VARCHAR '
+ . 'columns.'
+);
$strConfigMinSizeForInputField_name = __('Minimum size for input field');
-$strConfigMaxSizeForInputField_desc = __('Defines the maximum size for input fields generated for CHAR and VARCHAR columns');
+$strConfigMaxSizeForInputField_desc = __(
+ 'Defines the maximum size for input fields generated for CHAR and VARCHAR '
+ . 'columns.'
+);
$strConfigMaxSizeForInputField_name = __('Maximum size for input field');
-$strConfigCharTextareaCols_desc = __('Number of columns for CHAR/VARCHAR textareas');
+$strConfigCharTextareaCols_desc = __('Number of columns for CHAR/VARCHAR textareas.');
$strConfigCharTextareaCols_name = __('CHAR textarea columns');
-$strConfigCharTextareaRows_desc = __('Number of rows for CHAR/VARCHAR textareas');
+$strConfigCharTextareaRows_desc = __('Number of rows for CHAR/VARCHAR textareas.');
$strConfigCharTextareaRows_name = __('CHAR textarea rows');
$strConfigCheckConfigurationPermissions_name = __('Check config file permissions');
-$strConfigCompressOnFly_desc = __('Compress gzip exports on the fly without the need for much memory; if you encounter problems with created gzip files disable this feature');
+$strConfigCompressOnFly_desc = __(
+ 'Compress gzip exports on the fly without the need for much memory; if '
+ . 'you encounter problems with created gzip files disable this feature.'
+);
$strConfigCompressOnFly_name = __('Compress on the fly');
$strConfigConfigurationFile = __('Configuration file');
-$strConfigConfirm_desc = __('Whether a warning (&quot;Are your really sure…&quot;) should be displayed when you\'re about to lose data');
+$strConfigConfirm_desc = __(
+ 'Whether a warning ("Are your really sure…") should be displayed '
+ . 'when you\'re about to lose data.'
+);
$strConfigConfirm_name = __('Confirm DROP queries');
$strConfigDBG_sql_name = __('Debug SQL');
$strConfigDefaultDisplay_name = __('Default display direction');
-$strConfigDefaultTabDatabase_desc = __('Tab that is displayed when entering a database');
+$strConfigDefaultTabDatabase_desc
+ = __('Tab that is displayed when entering a database.');
$strConfigDefaultTabDatabase_name = __('Default database tab');
-$strConfigDefaultTabServer_desc = __('Tab that is displayed when entering a server');
+$strConfigDefaultTabServer_desc = __('Tab that is displayed when entering a server.');
$strConfigDefaultTabServer_name = __('Default server tab');
-$strConfigDefaultTabTable_desc = __('Tab that is displayed when entering a table');
+$strConfigDefaultTabTable_desc = __('Tab that is displayed when entering a table.');
$strConfigDefaultTabTable_name = __('Default table tab');
-$strConfigHideStructureActions_desc = __('Whether the table structure actions should be hidden');
+$strConfigHideStructureActions_desc
+ = __('Whether the table structure actions should be hidden.');
$strConfigHideStructureActions_name = __('Hide table structure actions');
-$strConfigDisplayBinaryAsHex_desc = __('Show binary contents as HEX by default');
+$strConfigDisplayBinaryAsHex_desc = __('Show binary contents as HEX by default.');
$strConfigDisplayBinaryAsHex_name = __('Show binary contents as HEX');
-$strConfigDisplayServersList_desc = __('Show server listing as a list instead of a drop down');
+$strConfigDisplayServersList_desc
+ = __('Show server listing as a list instead of a drop down.');
$strConfigDisplayServersList_name = __('Display servers as a list');
-$strConfigDisableMultiTableMaintenance_desc = __('Disable the table maintenance mass operations, like optimizing or repairing the selected tables of a database.');
+$strConfigDisableMultiTableMaintenance_desc = __(
+ 'Disable the table maintenance mass operations, like optimizing or repairing '
+ . 'the selected tables of a database.'
+);
$strConfigDisableMultiTableMaintenance_name = __('Disable multi table maintenance');
-$strConfigEditInWindow_desc = __('Edit SQL queries in popup window');
+$strConfigEditInWindow_desc = __('Edit SQL queries in popup window.');
$strConfigEditInWindow_name = __('Edit in window');
$strConfigError_Handler_display_name = __('Display errors');
-$strConfigExecTimeLimit_desc = __('Set the number of seconds a script is allowed to run ([kbd]0[/kbd] for no limit)');
+$strConfigExecTimeLimit_desc = __(
+ 'Set the number of seconds a script is allowed to run ([kbd]0[/kbd] for no '
+ . 'limit).'
+);
$strConfigExecTimeLimit_name = __('Maximum execution time');
$strConfigExport_asfile_name = __('Save as file');
$strConfigExport_charset_name = __('Character set of the file');
@@ -98,7 +139,8 @@ $strConfigExport_latex_mime_name = __('MIME type');
$strConfigExport_latex_null_name = __('Replace NULL with');
$strConfigExport_latex_relation_name = __('Relations');
$strConfigExport_latex_structure_caption_name = __('Table caption');
-$strConfigExport_latex_structure_continued_caption_name = __('Continued table caption');
+$strConfigExport_latex_structure_continued_caption_name
+ = __('Continued table caption');
$strConfigExport_latex_structure_label_name = __('Label key');
$strConfigExport_latex_structure_or_data_name = __('Dump table');
$strConfigExport_method_name = __('Export method');
@@ -113,26 +155,35 @@ $strConfigExport_odt_structure_or_data_name = __('Dump table');
$strConfigExport_onserver_name = __('Save on server');
$strConfigExport_onserver_overwrite_name = __('Overwrite existing file(s)');
$strConfigExport_quick_export_onserver_name = __('Save on server');
-$strConfigExport_quick_export_onserver_overwrite_name = __('Overwrite existing file(s)');
+$strConfigExport_quick_export_onserver_overwrite_name
+ = __('Overwrite existing file(s)');
$strConfigExport_remember_file_template_name = __('Remember file name template');
$strConfigExport_sql_auto_increment_name = __('Add AUTO_INCREMENT value');
-$strConfigExport_sql_backquotes_name = __('Enclose table and column names with backquotes');
+$strConfigExport_sql_backquotes_name
+ = __('Enclose table and column names with backquotes');
$strConfigExport_sql_compatibility_name = __('SQL compatibility mode');
-$strConfigExport_sql_create_table_statements_name = __('<code>CREATE TABLE</code> options:');
+$strConfigExport_sql_create_table_statements_name
+ = __('<code>CREATE TABLE</code> options:');
$strConfigExport_sql_dates_name = __('Creation/Update/Check dates');
$strConfigExport_sql_delayed_name = __('Use delayed inserts');
$strConfigExport_sql_disable_fk_name = __('Disable foreign key checks');
$strConfigExport_sql_views_as_tables_name = __('Export views as tables');
$strConfigExport_sql_drop_database_name = sprintf(__('Add %s'), 'DROP DATABASE');
-$strConfigExport_sql_drop_table_name = sprintf(__('Add %s'), 'DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT');
-$strConfigExport_sql_hex_for_blob_name = __('Use hexadecimal for BLOB');
+$strConfigExport_sql_drop_table_name
+ = sprintf(__('Add %s'), 'DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER');
+$strConfigExport_sql_create_table_name = sprintf(__('Add %s'), 'CREATE TABLE');
+$strConfigExport_sql_create_view_name = sprintf(__('Add %s'), 'CREATE VIEW');
+$strConfigExport_sql_create_trigger_name
+ = sprintf(__('Add %s'), 'CREATE TRIGGER');
+$strConfigExport_sql_hex_for_binary_name = __('Use hexadecimal for BINARY & BLOB');
$strConfigExport_sql_if_not_exists_name = sprintf(__('Add %s'), 'IF NOT EXISTS');
$strConfigExport_sql_ignore_name = __('Use ignore inserts');
$strConfigExport_sql_include_comments_name = __('Comments');
$strConfigExport_sql_insert_syntax_name = __('Syntax to use when inserting data');
$strConfigExport_sql_max_query_size_name = __('Maximal length of created query');
$strConfigExport_sql_mime_name = __('MIME type');
-$strConfigExport_sql_procedure_function_name = sprintf(__('Add %s'), 'CREATE PROCEDURE / FUNCTION / EVENT');
+$strConfigExport_sql_procedure_function_name
+ = sprintf(__('Add %s'), 'CREATE PROCEDURE / FUNCTION / EVENT');
$strConfigExport_sql_relation_name = __('Relations');
$strConfigExport_sql_structure_or_data_name = __('Dump table');
$strConfigExport_sql_type_name = __('Export type');
@@ -145,66 +196,89 @@ $strConfigExport_xls_columns_name = __('Put columns names in the first row');
$strConfigExport_xls_null_name = __('Replace NULL with');
$strConfigExport_xlsx_columns_name = __('Put columns names in the first row');
$strConfigExport_xlsx_null_name = __('Replace NULL with');
-$strConfigForceSSL_desc = __('Force secured connection while using phpMyAdmin');
+$strConfigForceSSL_desc = __('Force secured connection while using phpMyAdmin.');
$strConfigForceSSL_name = __('Force SSL connection');
-$strConfigForeignKeyDropdownOrder_desc = __('Sort order for items in a foreign-key dropdown box; [kbd]content[/kbd] is the referenced data, [kbd]id[/kbd] is the key value');
+$strConfigForeignKeyDropdownOrder_desc = __(
+ 'Sort order for items in a foreign-key dropdown box; [kbd]content[/kbd] is '
+ . 'the referenced data, [kbd]id[/kbd] is the key value.'
+);
$strConfigForeignKeyDropdownOrder_name = __('Foreign key dropdown order');
-$strConfigForeignKeyMaxLimit_desc = __('A dropdown will be used if fewer items are present');
+$strConfigForeignKeyMaxLimit_desc
+ = __('A dropdown will be used if fewer items are present.');
$strConfigForeignKeyMaxLimit_name = __('Foreign key limit');
$strConfigForm_Browse = __('Browse mode');
-$strConfigForm_Browse_desc = __('Customize browse mode');
+$strConfigForm_Browse_desc = __('Customize browse mode.');
$strConfigForm_CodeGen = 'CodeGen';
-$strConfigForm_CodeGen_desc = __('Customize default options');
+$strConfigForm_CodeGen_desc = __('Customize default options.');
$strConfigForm_Csv = __('CSV');
-$strConfigForm_Csv_desc = __('Customize default options');
+$strConfigForm_Csv_desc = __('Customize default options.');
$strConfigForm_Developer = __('Developer');
-$strConfigForm_Developer_desc = __('Settings for phpMyAdmin developers');
+$strConfigForm_Developer_desc = __('Settings for phpMyAdmin developers.');
$strConfigForm_Edit = __('Edit mode');
-$strConfigForm_Edit_desc = __('Customize edit mode');
+$strConfigForm_Edit_desc = __('Customize edit mode.');
$strConfigForm_Export = __('Export');
$strConfigForm_Export_defaults = __('Export defaults');
-$strConfigForm_Export_defaults_desc = __('Customize default export options');
+$strConfigForm_Export_defaults_desc = __('Customize default export options.');
$strConfigForm_Features = __('Features');
$strConfigForm_General = __('General');
-$strConfigForm_General_desc = __('Set some commonly used options');
+$strConfigForm_General_desc = __('Set some commonly used options.');
$strConfigForm_Import = __('Import');
$strConfigForm_Import_defaults = __('Import defaults');
-$strConfigForm_Import_defaults_desc = __('Customize default common import options');
+$strConfigForm_Import_defaults_desc = __('Customize default common import options.');
$strConfigForm_Import_export = __('Import / export');
-$strConfigForm_Import_export_desc = __('Set import and export directories and compression options');
+$strConfigForm_Import_export_desc
+ = __('Set import and export directories and compression options.');
$strConfigForm_Latex = __('LaTeX');
-$strConfigForm_Latex_desc = __('Customize default options');
+$strConfigForm_Latex_desc = __('Customize default options.');
$strConfigForm_Navi_databases = __('Databases');
-$strConfigForm_Navi_databases_desc = __('Databases display options');
+$strConfigForm_Navi_databases_desc = __('Databases display options.');
$strConfigForm_Navi_panel = __('Navigation panel');
-$strConfigForm_Navi_panel_desc = __('Customize appearance of the navigation panel');
+$strConfigForm_Navi_panel_desc = __('Customize appearance of the navigation panel.');
$strConfigForm_Navi_servers = __('Servers');
-$strConfigForm_Navi_servers_desc = __('Servers display options');
+$strConfigForm_Navi_servers_desc = __('Servers display options.');
$strConfigForm_Navi_tables = __('Tables');
-$strConfigForm_Navi_tables_desc = __('Tables display options');
+$strConfigForm_Navi_tables_desc = __('Tables display options.');
$strConfigForm_Main_panel = __('Main panel');
$strConfigForm_Microsoft_Office = __('Microsoft Office');
-$strConfigForm_Microsoft_Office_desc = __('Customize default options');
+$strConfigForm_Microsoft_Office_desc = __('Customize default options.');
$strConfigForm_Open_Document = 'OpenDocument';
-$strConfigForm_Open_Document_desc = __('Customize default options');
+$strConfigForm_Open_Document_desc = __('Customize default options.');
$strConfigForm_Other_core_settings = __('Other core settings');
-$strConfigForm_Other_core_settings_desc = __('Settings that didn\'t fit anywhere else');
+$strConfigForm_Other_core_settings_desc
+ = __('Settings that didn\'t fit anywhere else.');
$strConfigForm_Page_titles = __('Page titles');
-$strConfigForm_Page_titles_desc = __('Specify browser\'s title bar text. Refer to [doc@cfg_TitleTable]documentation[/doc] for magic strings that can be used to get special values.');
+$strConfigForm_Page_titles_desc = __(
+ 'Specify browser\'s title bar text. Refer to '
+ . '[doc@cfg_TitleTable]documentation[/doc] for magic strings that can be used '
+ . 'to get special values.'
+);
$strConfigForm_Query_window = __('Query window');
$strConfigForm_Query_window_desc = __('Customize query window options');
$strConfigForm_Security = __('Security');
-$strConfigForm_Security_desc = __('Please note that phpMyAdmin is just a user interface and its features do not limit MySQL');
+$strConfigForm_Security_desc = __(
+ 'Please note that phpMyAdmin is just a user interface and its features do not '
+ . 'limit MySQL.'
+);
$strConfigForm_Server = __('Basic settings');
$strConfigForm_Server_auth = __('Authentication');
-$strConfigForm_Server_auth_desc = __('Authentication settings');
+$strConfigForm_Server_auth_desc = __('Authentication settings.');
$strConfigForm_Server_config = __('Server configuration');
-$strConfigForm_Server_config_desc = __('Advanced server configuration, do not change these options unless you know what they are for');
-$strConfigForm_Server_desc = __('Enter server connection parameters');
+$strConfigForm_Server_config_desc = __(
+ 'Advanced server configuration, do not change these options unless you know '
+ . 'what they are for.'
+);
+$strConfigForm_Server_desc = __('Enter server connection parameters.');
$strConfigForm_Server_pmadb = __('Configuration storage');
-$strConfigForm_Server_pmadb_desc = __('Configure phpMyAdmin configuration storage to gain access to additional features, see [doc@linked-tables]phpMyAdmin configuration storage[/doc] in documentation');
+$strConfigForm_Server_pmadb_desc = __(
+ 'Configure phpMyAdmin configuration storage to gain access to additional '
+ . 'features, see [doc@linked-tables]phpMyAdmin configuration storage[/doc] in '
+ . 'documentation.'
+);
$strConfigForm_Server_tracking = __('Changes tracking');
-$strConfigForm_Server_tracking_desc = __('Tracking of changes made in database. Requires the phpMyAdmin configuration storage.');
+$strConfigForm_Server_tracking_desc = __(
+ 'Tracking of changes made in database. Requires the phpMyAdmin configuration '
+ . 'storage.'
+);
$strConfigFormset_Export = __('Customize export options');
$strConfigFormset_Features = __('Features');
$strConfigFormset_Import = __('Customize import defaults');
@@ -213,36 +287,47 @@ $strConfigFormset_Main_panel = __('Customize main panel');
$strConfigFormset_Sql_queries = __('SQL queries');
$strConfigForm_Sql = __('SQL');
$strConfigForm_Sql_box = __('SQL Query box');
-$strConfigForm_Sql_box_desc = __('Customize links shown in SQL Query boxes');
-$strConfigForm_Sql_desc = __('Customize default options');
+$strConfigForm_Sql_box_desc = __('Customize links shown in SQL Query boxes.');
+$strConfigForm_Sql_desc = __('Customize default options.');
$strConfigForm_Sql_queries = __('SQL queries');
-$strConfigForm_Sql_queries_desc = __('SQL queries settings');
-$strConfigForm_Sql_validator = __('SQL Validator');
-$strConfigForm_Sql_validator_desc = __('If you wish to use the SQL Validator service, you should be aware that [strong]all SQL statements are stored anonymously for statistical purposes[/strong].[br][em][a@http://sqlvalidator.mimer.com/]Mimer SQL Validator[/a], Copyright 2002 Upright Database Technology. All rights reserved.[/em]');
+$strConfigForm_Sql_queries_desc = __('SQL queries settings.');
$strConfigForm_Startup = __('Startup');
-$strConfigForm_Startup_desc = __('Customize startup page');
+$strConfigForm_Startup_desc = __('Customize startup page.');
$strConfigForm_DbStructure = __('Database structure');
-$strConfigForm_DbStructure_desc = __('Choose which details to show in the database structure (list of tables)');
+$strConfigForm_DbStructure_desc
+ = __('Choose which details to show in the database structure (list of tables).');
$strConfigForm_TableStructure = __('Table structure');
-$strConfigForm_TableStructure_desc = __('Settings for the table structure (list of columns)');
+$strConfigForm_TableStructure_desc
+ = __('Settings for the table structure (list of columns).');
$strConfigForm_Tabs = __('Tabs');
-$strConfigForm_Tabs_desc = __('Choose how you want tabs to work');
+$strConfigForm_Tabs_desc = __('Choose how you want tabs to work.');
$strConfigForm_DisplayRelationalSchema = __('Display relational schema');
-$strConfigForm_DisplayRelationalSchema_desc = '';
+$strConfigForm_DisplayRelationalSchema_desc = '';
$strConfigPDFDefaultPageSize_name = __('Paper size');
-$strConfigPDFDefaultPageSize_desc = '';
+$strConfigPDFDefaultPageSize_desc = '';
$strConfigForm_Text_fields = __('Text fields');
-$strConfigForm_Text_fields_desc = __('Customize text input fields');
+$strConfigForm_Text_fields_desc = __('Customize text input fields.');
$strConfigForm_Texy = __('Texy! text');
$strConfigForm_Texy_desc = __('Customize default options');
$strConfigForm_Warnings = __('Warnings');
-$strConfigForm_Warnings_desc = __('Disable some of the warnings shown by phpMyAdmin');
-$strConfigGZipDump_desc = __('Enable [a@http://en.wikipedia.org/wiki/Gzip]gzip[/a] compression for import and export operations');
+$strConfigForm_Warnings_desc
+ = __('Disable some of the warnings shown by phpMyAdmin.');
+$strConfigGZipDump_desc = __(
+ 'Enable [a@http://en.wikipedia.org/wiki/Gzip]gzip[/a] compression for import '
+ . 'and export operations.'
+);
$strConfigGZipDump_name = __('GZip');
$strConfigIconvExtraParams_name = __('Extra parameters for iconv');
-$strConfigIgnoreMultiSubmitErrors_desc = __('If enabled, phpMyAdmin continues computing multiple-statement queries even if one of the queries failed');
+$strConfigIgnoreMultiSubmitErrors_desc = __(
+ 'If enabled, phpMyAdmin continues computing multiple-statement queries even if '
+ . 'one of the queries failed.'
+);
$strConfigIgnoreMultiSubmitErrors_name = __('Ignore multiple statement errors');
-$strConfigImport_allow_interrupt_desc = __('Allow interrupt of import in case script detects it is close to time limit. This might be a good way to import large files, however it can break transactions.');
+$strConfigImport_allow_interrupt_desc = __(
+ 'Allow interrupt of import in case script detects it is close to time limit. '
+ . 'This might be a good way to import large files, however it can break '
+ . 'transactions.'
+);
$strConfigImport_allow_interrupt_name = __('Partial import: allow interrupt');
$strConfigImport_charset_name = __('Character set of the file');
$strConfigImport_csv_col_names_name = __('Lines terminated with');
@@ -251,7 +336,10 @@ $strConfigImport_csv_escaped_name = __('Columns escaped with');
$strConfigImport_csv_ignore_name = __('Do not abort on INSERT error');
$strConfigImport_csv_replace_name = __('Replace table data with file');
$strConfigImport_csv_terminated_name = __('Columns terminated with');
-$strConfigImport_format_desc = __('Default format; be aware that this list depends on location (database, table) and only SQL is always available');
+$strConfigImport_format_desc = __(
+ 'Default format; be aware that this list depends on location (database, table) '
+ . 'and only SQL is always available.'
+);
$strConfigImport_format_name = __('Format of imported file');
$strConfigImport_ldi_enclosed_name = __('Columns enclosed with');
$strConfigImport_ldi_escaped_name = __('Columns escaped with');
@@ -261,288 +349,447 @@ $strConfigImport_ldi_replace_name = __('Replace table data with file');
$strConfigImport_ldi_terminated_name = __('Columns terminated with');
$strConfigImport_ods_col_names_name = __('Column names in first row');
$strConfigImport_ods_empty_rows_name = __('Do not import empty rows');
-$strConfigImport_ods_recognize_currency_name = __('Import currencies ($5.00 to 5.00)');
-$strConfigImport_ods_recognize_percentages_name = __('Import percentages as proper decimals (12.00% to .12)');
-$strConfigImport_skip_queries_desc = __('Number of queries to skip from start');
+$strConfigImport_ods_recognize_currency_name
+ = __('Import currencies ($5.00 to 5.00)');
+$strConfigImport_ods_recognize_percentages_name
+ = __('Import percentages as proper decimals (12.00% to .12)');
+$strConfigImport_skip_queries_desc = __('Number of queries to skip from start.');
$strConfigImport_skip_queries_name = __('Partial import: skip queries');
$strConfigImport_sql_compatibility_name = __('SQL compatibility mode');
-$strConfigImport_sql_no_auto_value_on_zero_name = __('Do not use AUTO_INCREMENT for zero values');
+$strConfigImport_sql_no_auto_value_on_zero_name
+ = __('Do not use AUTO_INCREMENT for zero values');
$strConfigImport_xls_col_names_name = __('Column names in first row');
$strConfigImport_xlsx_col_names_name = __('Column names in first row');
$strConfigInitialSlidersState_name = __('Initial state for sliders');
-$strConfigInsertRows_desc = __('How many rows can be inserted at one time');
+$strConfigInsertRows_desc = __('How many rows can be inserted at one time.');
$strConfigInsertRows_name = __('Number of inserted rows');
-$strConfigLimitChars_desc = __('Maximum number of characters shown in any non-numeric column on browse view');
+$strConfigLimitChars_desc = __(
+ 'Maximum number of characters shown in any non-numeric column on browse view.'
+);
$strConfigLimitChars_name = __('Limit column characters');
-$strConfigLoginCookieDeleteAll_desc = __('If TRUE, logout deletes cookies for all servers; when set to FALSE, logout only occurs for the current server. Setting this to FALSE makes it easy to forget to log out from other servers when connected to multiple servers.');
+$strConfigLoginCookieDeleteAll_desc = __(
+ 'If TRUE, logout deletes cookies for all servers; when set to FALSE, logout '
+ . 'only occurs for the current server. Setting this to FALSE makes it easy to '
+ . 'forget to log out from other servers when connected to multiple servers.'
+);
$strConfigLoginCookieDeleteAll_name = __('Delete all cookies on logout');
-$strConfigLoginCookieRecall_desc = __('Define whether the previous login should be recalled or not in cookie authentication mode');
+$strConfigLoginCookieRecall_desc = __(
+ 'Define whether the previous login should be recalled or not in '
+ . '[kbd]cookie[/kbd] authentication mode.'
+);
$strConfigLoginCookieRecall_name = __('Recall user name');
-$strConfigLoginCookieStore_desc = __('Defines how long (in seconds) a login cookie should be stored in browser. The default of 0 means that it will be kept for the existing session only, and will be deleted as soon as you close the browser window. This is recommended for non-trusted environments.');
+$strConfigLoginCookieStore_desc = __(
+ 'Defines how long (in seconds) a login cookie should be stored in browser. '
+ . 'The default of 0 means that it will be kept for the existing session only, '
+ . 'and will be deleted as soon as you close the browser window. This is '
+ . 'recommended for non-trusted environments.'
+);
$strConfigLoginCookieStore_name = __('Login cookie store');
-$strConfigLoginCookieValidity_desc = __('Define how long (in seconds) a login cookie is valid');
+$strConfigLoginCookieValidity_desc
+ = __('Define how long (in seconds) a login cookie is valid.');
$strConfigLoginCookieValidity_name = __('Login cookie validity');
-$strConfigLongtextDoubleTextarea_desc = __('Double size of textarea for LONGTEXT columns');
+$strConfigLongtextDoubleTextarea_desc
+ = __('Double size of textarea for LONGTEXT columns.');
$strConfigLongtextDoubleTextarea_name = __('Bigger textarea for LONGTEXT');
-$strConfigMaxCharactersInDisplayedSQL_desc = __('Maximum number of characters used when a SQL query is displayed');
+$strConfigMaxCharactersInDisplayedSQL_desc
+ = __('Maximum number of characters used when a SQL query is displayed.');
$strConfigMaxCharactersInDisplayedSQL_name = __('Maximum displayed SQL length');
$strConfigMaxDbList_cmt = __('Users cannot set a higher value');
-$strConfigMaxDbList_desc = __('Maximum number of databases displayed in database list');
+$strConfigMaxDbList_desc
+ = __('Maximum number of databases displayed in database list.');
$strConfigMaxDbList_name = __('Maximum databases');
-$strConfigMaxNavigationItems_desc = __('The number of items that can be displayed on each page of the navigation tree');
+$strConfigFirstLevelNavigationItems_desc = __(
+ 'The number of items that can be displayed on each page on the first level'
+ . ' of the navigation tree.'
+);
+$strConfigFirstLevelNavigationItems_name = __('Maximum items on first level');
+$strConfigMaxNavigationItems_desc = __(
+ 'The number of items that can be displayed on each page of the navigation tree.'
+);
$strConfigMaxNavigationItems_name = __('Maximum items in branch');
-$strConfigMaxRows_desc = __('Number of rows displayed when browsing a result set. If the result set contains more rows, &quot;Previous&quot; and &quot;Next&quot; links will be shown.');
+$strConfigMaxRows_desc = __(
+ 'Number of rows displayed when browsing a result set. If the result set '
+ . 'contains more rows, "Previous" and "Next" links will be '
+ . 'shown.'
+);
$strConfigMaxRows_name = __('Maximum number of rows to display');
$strConfigMaxTableList_cmt = __('Users cannot set a higher value');
-$strConfigMaxTableList_desc = __('Maximum number of tables displayed in table list');
+$strConfigMaxTableList_desc = __('Maximum number of tables displayed in table list.');
$strConfigMaxTableList_name = __('Maximum tables');
-$strConfigMcryptDisableWarning_desc = __('Disable the default warning that is displayed if mcrypt is missing for cookie authentication');
-$strConfigMcryptDisableWarning_name = __('mcrypt warning');
-$strConfigMemoryLimit_desc = __('The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] ([kbd]0[/kbd] for no limit)');
+$strConfigMemoryLimit_desc = __(
+ 'The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] '
+ . '([kbd]0[/kbd] for no limit).'
+);
$strConfigMemoryLimit_name = __('Memory limit');
-$strConfigNavigationDisplayLogo_desc = __('Show logo in navigation panel');
+$strConfigNavigationDisplayLogo_desc = __('Show logo in navigation panel.');
$strConfigNavigationDisplayLogo_name = __('Display logo');
-$strConfigNavigationLogoLink_desc = __('URL where logo in the navigation panel will point to');
+$strConfigNavigationLogoLink_desc
+ = __('URL where logo in the navigation panel will point to.');
$strConfigNavigationLogoLink_name = __('Logo link URL');
-$strConfigNavigationLogoLinkWindow_desc = __('Open the linked page in the main window ([kbd]main[/kbd]) or in a new one ([kbd]new[/kbd])');
+$strConfigNavigationLogoLinkWindow_desc = __(
+ 'Open the linked page in the main window ([kbd]main[/kbd]) or in a new one '
+ . '([kbd]new[/kbd]).'
+);
$strConfigNavigationLogoLinkWindow_name = __('Logo link target');
-$strConfigNavigationDisplayServers_desc = __('Display server choice at the top of the navigation panel');
+$strConfigNavigationDisplayServers_desc
+ = __('Display server choice at the top of the navigation panel.');
$strConfigNavigationDisplayServers_name = __('Display servers selection');
$strConfigNavigationTreeDefaultTabTable_name = __('Target for quick access icon');
-$strConfigNavigationTreeDisplayItemFilterMinimum_desc = __('Defines the minimum number of items (tables, views, routines and events) to display a filter box.');
-$strConfigNavigationTreeDisplayItemFilterMinimum_name = __('Minimum number of items to display the filter box');
-$strConfigNavigationTreeDisplayDbFilterMinimum_name = __('Minimum number of databases to display the database filter box');
-$strConfigNavigationTreeEnableGrouping_desc = __('Group items in the navigation tree (determined by the separator defined below)');
+$strConfigNavigationTreeDisplayItemFilterMinimum_desc = __(
+ 'Defines the minimum number of items (tables, views, routines and events) to '
+ . 'display a filter box.'
+);
+$strConfigNavigationTreeDisplayItemFilterMinimum_name
+ = __('Minimum number of items to display the filter box');
+$strConfigNavigationTreeDisplayDbFilterMinimum_name
+ = __('Minimum number of databases to display the database filter box');
+$strConfigNavigationTreeEnableGrouping_desc = __(
+ 'Group items in the navigation tree (determined by the separator defined below).'
+);
$strConfigNavigationTreeEnableGrouping_name = __('Group items in the tree');
-$strConfigNavigationTreeDbSeparator_desc = __('String that separates databases into different tree levels');
+$strConfigNavigationTreeDbSeparator_desc
+ = __('String that separates databases into different tree levels.');
$strConfigNavigationTreeDbSeparator_name = __('Database tree separator');
-$strConfigNavigationTreeTableSeparator_desc = __('String that separates tables into different tree levels');
+$strConfigNavigationTreeTableSeparator_desc
+ = __('String that separates tables into different tree levels.');
$strConfigNavigationTreeTableSeparator_name = __('Table tree separator');
$strConfigNavigationTreeTableLevel_name = __('Maximum table tree depth');
-$strConfigNavigationTreePointerEnable_desc = __('Highlight server under the mouse cursor');
+$strConfigNavigationTreePointerEnable_desc
+ = __('Highlight server under the mouse cursor.');
$strConfigNavigationTreePointerEnable_name = __('Enable highlighting');
-$strConfigNumRecentTables_desc = __('Maximum number of recently used tables; set 0 to disable');
+$strConfigNavigationTreeDisableDatabaseExpansion_desc
+ = __('Whether to disable the possibility of database expansion or not.');
+$strConfigNavigationTreeDisableDatabaseExpansion_name
+ = __('Disable database expansion');
+$strConfigNumRecentTables_desc
+ = __('Maximum number of recently used tables; set 0 to disable.');
+$strConfigNumFavoriteTables_desc
+ = __('Maximum number of favorite tables; set 0 to disable.');
$strConfigNumRecentTables_name = __('Recently used tables');
-$strConfigRowActionLinks_desc = __('These are Edit, Copy and Delete links');
+$strConfigNumFavoriteTables_name = __('Favorite tables');
+$strConfigRowActionLinks_desc = __('These are Edit, Copy and Delete links.');
$strConfigRowActionLinks_name = __('Where to show the table row links');
-$strConfigNaturalOrder_desc = __('Use natural order for sorting table and database names');
+$strConfigNaturalOrder_desc
+ = __('Use natural order for sorting table and database names.');
$strConfigNaturalOrder_name = __('Natural order');
-$strConfigTableNavigationLinksMode_desc = __('Use only icons, only text or both');
+$strConfigTableNavigationLinksMode_desc = __('Use only icons, only text or both.');
$strConfigTableNavigationLinksMode_name = __('Table navigation bar');
-$strConfigOBGzip_desc = __('use GZip output buffering for increased speed in HTTP transfers');
+$strConfigOBGzip_desc
+ = __('Use GZip output buffering for increased speed in HTTP transfers.');
$strConfigOBGzip_name = __('GZip output buffering');
-$strConfigOrder_desc = __('[kbd]SMART[/kbd] - i.e. descending order for columns of type TIME, DATE, DATETIME and TIMESTAMP, ascending order otherwise');
+$strConfigOrder_desc = __(
+ '[kbd]SMART[/kbd] - i.e. descending order for columns of type TIME, DATE, '
+ . 'DATETIME and TIMESTAMP, ascending order otherwise.'
+);
$strConfigOrder_name = __('Default sorting order');
-$strConfigPersistentConnections_desc = __('Use persistent connections to MySQL databases');
+$strConfigPersistentConnections_desc
+ = __('Use persistent connections to MySQL databases.');
$strConfigPersistentConnections_name = __('Persistent connections');
-$strConfigPmaNoRelation_DisableWarning_desc = __('Disable the default warning that is displayed on the database details Structure page if any of the required tables for the phpMyAdmin configuration storage could not be found');
-$strConfigPmaNoRelation_DisableWarning_name = __('Missing phpMyAdmin configuration storage tables');
-$strConfigServerLibraryDifference_DisableWarning_desc = __('Disable the default warning that is displayed if a difference between the MySQL library and server is detected');
-$strConfigServerLibraryDifference_DisableWarning_name = __('Server/library difference warning');
-$strConfigReservedWordDisableWarning_desc = __('Disable the default warning that is displayed on the Structure page if column names in a table are reserved MySQL words');
+$strConfigPmaNoRelation_DisableWarning_desc = __(
+ 'Disable the default warning that is displayed on the database details '
+ . 'Structure page if any of the required tables for the phpMyAdmin '
+ . 'configuration storage could not be found.'
+);
+$strConfigPmaNoRelation_DisableWarning_name
+ = __('Missing phpMyAdmin configuration storage tables');
+$strConfigServerLibraryDifference_DisableWarning_desc = __(
+ 'Disable the default warning that is displayed if a difference between the '
+ . 'MySQL library and server is detected.'
+);
+$strConfigServerLibraryDifference_DisableWarning_name
+ = __('Server/library difference warning');
+$strConfigReservedWordDisableWarning_desc = __(
+ 'Disable the default warning that is displayed on the Structure page if column '
+ . 'names in a table are reserved MySQL words.'
+);
$strConfigReservedWordDisableWarning_name = __('MySQL reserved word warning');
-$strConfigTabsMode_desc = __('Use only icons, only text or both');
+$strConfigTabsMode_desc = __('Use only icons, only text or both.');
$strConfigTabsMode_name = __('How to display the menu tabs');
-$strConfigActionLinksMode_desc = __('Use only icons, only text or both');
+$strConfigActionLinksMode_desc = __('Use only icons, only text or both.');
$strConfigActionLinksMode_name = __('How to display various action links');
-$strConfigProtectBinary_desc = __('Disallow BLOB and BINARY columns from editing');
+$strConfigProtectBinary_desc = __('Disallow BLOB and BINARY columns from editing.');
$strConfigProtectBinary_name = __('Protect binary columns');
-$strConfigQueryHistoryDB_desc = __('Enable if you want DB-based query history (requires phpMyAdmin configuration storage). If disabled, this utilizes JS-routines to display query history (lost by window close).');
+$strConfigQueryHistoryDB_desc = __(
+ 'Enable if you want DB-based query history (requires phpMyAdmin configuration '
+ . 'storage). If disabled, this utilizes JS-routines to display query history '
+ . '(lost by window close).'
+);
$strConfigQueryHistoryDB_name = __('Permanent query history');
$strConfigQueryHistoryMax_cmt = __('Users cannot set a higher value');
-$strConfigQueryHistoryMax_desc = __('How many queries are kept in history');
+$strConfigQueryHistoryMax_desc = __('How many queries are kept in history.');
$strConfigQueryHistoryMax_name = __('Query history length');
-$strConfigQueryWindowDefTab_desc = __('Tab displayed when opening a new query window');
+$strConfigQueryWindowDefTab_desc
+ = __('Tab displayed when opening a new query window.');
$strConfigQueryWindowDefTab_name = __('Default query window tab');
-$strConfigQueryWindowHeight_desc = __('Query window height (in pixels)');
+$strConfigQueryWindowHeight_desc = __('Query window height (in pixels).');
$strConfigQueryWindowHeight_name = __('Query window height');
-$strConfigQueryWindowWidth_desc = __('Query window width (in pixels)');
+$strConfigQueryWindowWidth_desc = __('Query window width (in pixels).');
$strConfigQueryWindowWidth_name = __('Query window width');
-$strConfigRecodingEngine_desc = __('Select which functions will be used for character set conversion');
+$strConfigRecodingEngine_desc
+ = __('Select which functions will be used for character set conversion.');
$strConfigRecodingEngine_name = __('Recoding engine');
-$strConfigRememberSorting_desc = __('When browsing tables, the sorting of each table is remembered');
+$strConfigRememberSorting_desc
+ = __('When browsing tables, the sorting of each table is remembered.');
$strConfigRememberSorting_name = __('Remember table\'s sorting');
-$strConfigRepeatCells_desc = __('Repeat the headers every X cells, [kbd]0[/kbd] deactivates this feature');
+$strConfigRepeatCells_desc
+ = __('Repeat the headers every X cells, [kbd]0[/kbd] deactivates this feature.');
$strConfigRepeatCells_name = __('Repeat headers');
$strConfigRestoreDefaultValue = __('Restore default value');
$strConfigGridEditing_name = __('Grid editing: trigger action');
$strConfigSaveCellsAtOnce_name = __('Grid editing: save all edited cells at once');
-$strConfigSaveDir_desc = __('Directory where exports can be saved on server');
+$strConfigSaveDir_desc = __('Directory where exports can be saved on server.');
$strConfigSaveDir_name = __('Save directory');
-$strConfigServers_AllowDeny_order_desc = __('Leave blank if not used');
+$strConfigServers_AllowDeny_order_desc = __('Leave blank if not used.');
$strConfigServers_AllowDeny_order_name = __('Host authorization order');
-$strConfigServers_AllowDeny_rules_desc = __('Leave blank for defaults');
+$strConfigServers_AllowDeny_rules_desc = __('Leave blank for defaults.');
$strConfigServers_AllowDeny_rules_name = __('Host authorization rules');
$strConfigServers_AllowNoPassword_name = __('Allow logins without a password');
$strConfigServers_AllowRoot_name = __('Allow root login');
-$strConfigServers_auth_http_realm_desc = __('HTTP Basic Auth Realm name to display when doing HTTP Auth');
+$strConfigServers_auth_http_realm_desc
+ = __('HTTP Basic Auth Realm name to display when doing HTTP Auth.');
$strConfigServers_auth_http_realm_name = __('HTTP Realm');
-$strConfigServers_auth_swekey_config_desc = __('The path for the config file for [a@http://swekey.com]SweKey hardware authentication[/a] (not located in your document root; suggested: /etc/swekey.conf)');
+$strConfigServers_auth_swekey_config_desc = __(
+ 'The path for the config file for [a@http://swekey.com]SweKey hardware '
+ . 'authentication[/a] (not located in your document root; suggested: '
+ . '/etc/swekey.conf).'
+);
$strConfigServers_auth_swekey_config_name = __('SweKey config file');
-$strConfigServers_auth_type_desc = __('Authentication method to use');
+$strConfigServers_auth_type_desc = __('Authentication method to use.');
$strConfigServers_auth_type_name = __('Authentication type');
-$strConfigServers_bookmarktable_desc = __('Leave blank for no [a@http://wiki.phpmyadmin.net/pma/bookmark]bookmark[/a] support, suggested: [kbd]pma__bookmark[/kbd]');
+$strConfigServers_bookmarktable_desc = __(
+ 'Leave blank for no [a@http://wiki.phpmyadmin.net/pma/bookmark]bookmark[/a] '
+ . 'support, suggested: [kbd]pma__bookmark[/kbd]'
+);
$strConfigServers_bookmarktable_name = __('Bookmark table');
-$strConfigServers_column_info_desc = __('Leave blank for no column comments/mime types, suggested: [kbd]pma__column_info[/kbd]');
+$strConfigServers_column_info_desc = __(
+ 'Leave blank for no column comments/mime types, suggested: '
+ . '[kbd]pma__column_info[/kbd].'
+);
$strConfigServers_column_info_name = __('Column information table');
-$strConfigServers_compress_desc = __('Compress connection to MySQL server');
+$strConfigServers_compress_desc = __('Compress connection to MySQL server.');
$strConfigServers_compress_name = __('Compress connection');
-$strConfigServers_connect_type_desc = __('How to connect to server, keep [kbd]tcp[/kbd] if unsure');
+$strConfigServers_connect_type_desc
+ = __('How to connect to server, keep [kbd]tcp[/kbd] if unsure.');
$strConfigServers_connect_type_name = __('Connection type');
$strConfigServers_controlpass_name = __('Control user password');
-$strConfigServers_controluser_desc = __('A special MySQL user configured with limited permissions, more information available on [a@http://wiki.phpmyadmin.net/pma/controluser]wiki[/a]');
+$strConfigServers_controluser_desc = __(
+ 'A special MySQL user configured with limited permissions, more information '
+ . 'available on [a@http://wiki.phpmyadmin.net/pma/controluser]wiki[/a].'
+);
$strConfigServers_controluser_name = __('Control user');
-$strConfigServers_controlhost_desc = __('An alternate host to hold the configuration storage; leave blank to use the already defined host');
+$strConfigServers_controlhost_desc = __(
+ 'An alternate host to hold the configuration storage; leave blank to use the '
+ . 'already defined host.'
+);
$strConfigServers_controlhost_name = __('Control host');
-$strConfigServers_controlport_desc = __('An alternate port to connect to the host that holds the configuration storage; leave blank to use the default port, or the already defined port, if the controlhost equals host');
+$strConfigServers_controlport_desc = __(
+ 'An alternate port to connect to the host that holds the configuration storage; '
+ . 'leave blank to use the default port, or the already defined port, if the '
+ . 'controlhost equals host.'
+);
$strConfigServers_controlport_name = __('Control port');
-$strConfigServers_designer_coords_desc = __('Leave blank for no Designer support, suggested: [kbd]pma__designer_coords[/kbd]');
+$strConfigServers_designer_coords_desc = __(
+ 'Leave blank for no Designer support, suggested: '
+ . '[kbd]pma__designer_coords[/kbd].'
+);
$strConfigServers_designer_coords_name = __('Designer table');
-$strConfigServers_extension_desc = __('What PHP extension to use; you should use mysqli if supported');
-$strConfigServers_extension_name = __('PHP extension to use');
-$strConfigServers_hide_db_desc = __('Hide databases matching regular expression (PCRE)');
+$strConfigServers_hide_db_desc
+ = __('Hide databases matching regular expression (PCRE).');
$strConfigServers_hide_db_name = __('Hide databases');
-$strConfigServers_history_desc = __('Leave blank for no SQL query history support, suggested: [kbd]pma__history[/kbd]');
+$strConfigServers_history_desc = __(
+ 'Leave blank for no SQL query history support, suggested: '
+ . '[kbd]pma__history[/kbd].'
+);
$strConfigServers_history_name = __('SQL query history table');
-$strConfigServers_host_desc = __('Hostname where MySQL server is running');
+$strConfigServers_host_desc = __('Hostname where MySQL server is running.');
$strConfigServers_host_name = __('Server hostname');
$strConfigServers_LogoutURL_name = __('Logout URL');
-$strConfigServers_MaxTableUiprefs_desc = __('Limits number of table preferences which are stored in database, the oldest records are automatically removed');
-$strConfigServers_MaxTableUiprefs_name = __('Maximal number of table preferences to store');
-$strConfigServers_nopassword_desc = __('Try to connect without password');
+$strConfigServers_MaxTableUiprefs_desc = __(
+ 'Limits number of table preferences which are stored in database, the oldest '
+ . 'records are automatically removed.'
+);
+$strConfigServers_MaxTableUiprefs_name
+ = __('Maximal number of table preferences to store');
+$strConfigServers_savedsearches_name = __('QBE saved searches table');
+$strConfigServers_savedsearches_desc = __(
+ 'Leave blank for no QBE saved searches support, suggested: '
+ . '[kbd]pma__savedsearches[/kbd].'
+);
+
+$strConfigServers_nopassword_desc = __('Try to connect without password.');
$strConfigServers_nopassword_name = __('Connect without password');
-$strConfigServers_only_db_desc = __('You can use MySQL wildcard characters (% and _), escape them if you want to use their literal instances, i.e. use [kbd]\'my\_db\'[/kbd] and not [kbd]\'my_db\'[/kbd].');
+$strConfigServers_only_db_desc = __(
+ 'You can use MySQL wildcard characters (% and _), escape them if you want to '
+ . 'use their literal instances, i.e. use [kbd]\'my\_db\'[/kbd] and not '
+ . '[kbd]\'my_db\'[/kbd].'
+);
$strConfigServers_only_db_name = __('Show only listed databases');
-$strConfigServers_password_desc = __('Leave empty if not using config auth');
+$strConfigServers_password_desc = __('Leave empty if not using config auth.');
$strConfigServers_password_name = __('Password for config auth');
-$strConfigServers_pdf_pages_desc = __('Leave blank for no PDF schema support, suggested: [kbd]pma__pdf_pages[/kbd]');
+$strConfigServers_pdf_pages_desc = __(
+ 'Leave blank for no PDF schema support, suggested: [kbd]pma__pdf_pages[/kbd].'
+);
$strConfigServers_pdf_pages_name = __('PDF schema: pages table');
-$strConfigServers_pmadb_desc = __('Database used for relations, bookmarks, and PDF features. See [a@http://wiki.phpmyadmin.net/pma/pmadb]pmadb[/a] for complete information. Leave blank for no support. Suggested: [kbd]phpmyadmin[/kbd]');
+$strConfigServers_pmadb_desc = __(
+ 'Database used for relations, bookmarks, and PDF features. See '
+ . '[a@http://wiki.phpmyadmin.net/pma/pmadb]pmadb[/a] for complete information. '
+ . 'Leave blank for no support. Suggested: [kbd]phpmyadmin[/kbd].'
+);
$strConfigServers_pmadb_name = __('Database name');
-$strConfigServers_port_desc = __('Port on which MySQL server is listening, leave empty for default');
+$strConfigServers_port_desc
+ = __('Port on which MySQL server is listening, leave empty for default.');
$strConfigServers_port_name = __('Server port');
-$strConfigServers_recent_desc = __('Leave blank for no "persistent" recently used tables across sessions, suggested: [kbd]pma__recent[/kbd]');
+$strConfigServers_recent_desc = __(
+ 'Leave blank for no "persistent" recently used tables across sessions, '
+ . 'suggested: [kbd]pma__recent[/kbd].'
+);
$strConfigServers_recent_name = __('Recently used table');
-$strConfigServers_relation_desc = __('Leave blank for no [a@http://wiki.phpmyadmin.net/pma/relation]relation-links[/a] support, suggested: [kbd]pma__relation[/kbd]');
+$strConfigServers_relation_desc = __(
+ 'Leave blank for no '
+ . '[a@http://wiki.phpmyadmin.net/pma/relation]relation-links[/a] support, '
+ . 'suggested: [kbd]pma__relation[/kbd].'
+);
$strConfigServers_relation_name = __('Relation table');
-$strConfigServers_SignonSession_desc = __('See [a@http://wiki.phpmyadmin.net/pma/auth_types#signon]authentication types[/a] for an example');
+$strConfigServers_SignonSession_desc = __(
+ 'See [a@http://wiki.phpmyadmin.net/pma/auth_types#signon]authentication '
+ . 'types[/a] for an example.'
+);
$strConfigServers_SignonSession_name = __('Signon session name');
$strConfigServers_SignonURL_name = __('Signon URL');
-$strConfigServers_socket_desc = __('Socket on which MySQL server is listening, leave empty for default');
+$strConfigServers_socket_desc
+ = __('Socket on which MySQL server is listening, leave empty for default.');
$strConfigServers_socket_name = __('Server socket');
-$strConfigServers_ssl_desc = __('Enable SSL for connection to MySQL server');
+$strConfigServers_ssl_desc = __('Enable SSL for connection to MySQL server.');
$strConfigServers_ssl_name = __('Use SSL');
-$strConfigServers_table_coords_desc = __('Leave blank for no PDF schema support, suggested: [kbd]pma__table_coords[/kbd]');
+$strConfigServers_table_coords_desc = __(
+ 'Leave blank for no PDF schema support, suggested: [kbd]pma__table_coords[/kbd].'
+);
$strConfigServers_table_coords_name = __('PDF schema: table coordinates');
-$strConfigServers_table_info_desc = __('Table to describe the display columns, leave blank for no support; suggested: [kbd]pma__table_info[/kbd]');
+$strConfigServers_table_info_desc = __(
+ 'Table to describe the display columns, leave blank for no support; '
+ . 'suggested: [kbd]pma__table_info[/kbd].'
+);
$strConfigServers_table_info_name = __('Display columns table');
-$strConfigServers_table_uiprefs_desc = __('Leave blank for no "persistent" tables\' UI preferences across sessions, suggested: [kbd]pma__table_uiprefs[/kbd]');
+$strConfigServers_table_uiprefs_desc = __(
+ 'Leave blank for no "persistent" tables\' UI preferences across sessions, '
+ . 'suggested: [kbd]pma__table_uiprefs[/kbd].'
+);
$strConfigServers_table_uiprefs_name = __('UI preferences table');
-$strConfigServers_tracking_add_drop_database_desc = __('Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database.');
+$strConfigServers_tracking_add_drop_database_desc = __(
+ 'Whether a DROP DATABASE IF EXISTS statement will be added as first line to '
+ . 'the log when creating a database.'
+);
$strConfigServers_tracking_add_drop_database_name = __('Add DROP DATABASE');
-$strConfigServers_tracking_add_drop_table_desc = __('Whether a DROP TABLE IF EXISTS statement will be added as first line to the log when creating a table.');
+$strConfigServers_tracking_add_drop_table_desc = __(
+ 'Whether a DROP TABLE IF EXISTS statement will be added as first line to the '
+ . 'log when creating a table.'
+);
$strConfigServers_tracking_add_drop_table_name = __('Add DROP TABLE');
-$strConfigServers_tracking_add_drop_view_desc = __('Whether a DROP VIEW IF EXISTS statement will be added as first line to the log when creating a view.');
+$strConfigServers_tracking_add_drop_view_desc = __(
+ 'Whether a DROP VIEW IF EXISTS statement will be added as first line to the '
+ . 'log when creating a view.'
+);
$strConfigServers_tracking_add_drop_view_name = __('Add DROP VIEW');
-$strConfigServers_tracking_default_statements_desc = __('Defines the list of statements the auto-creation uses for new versions.');
+$strConfigServers_tracking_default_statements_desc
+ = __('Defines the list of statements the auto-creation uses for new versions.');
$strConfigServers_tracking_default_statements_name = __('Statements to track');
-$strConfigServers_tracking_desc = __('Leave blank for no SQL query tracking support, suggested: [kbd]pma__tracking[/kbd]');
+$strConfigServers_tracking_desc = __(
+ 'Leave blank for no SQL query tracking support, suggested: '
+ . '[kbd]pma__tracking[/kbd].'
+);
$strConfigServers_tracking_name = __('SQL query tracking table');
-$strConfigServers_tracking_version_auto_create_desc = __('Whether the tracking mechanism creates versions for tables and views automatically.');
-$strConfigServers_tracking_version_auto_create_name = __('Automatically create versions');
-$strConfigServers_userconfig_desc = __('Leave blank for no user preferences storage in database, suggested: [kbd]pma__userconfig[/kbd]');
+$strConfigServers_tracking_version_auto_create_desc = __(
+ 'Whether the tracking mechanism creates versions for tables and views '
+ . 'automatically.'
+);
+$strConfigServers_tracking_version_auto_create_name
+ = __('Automatically create versions');
+$strConfigServers_userconfig_desc = __('Leave blank for no user preferences storage in database, suggested: [kbd]pma__userconfig[/kbd].');
$strConfigServers_userconfig_name = __('User preferences storage table');
-$strConfigServers_users_desc = __('Leave blank to disable configurable menus feature, suggested: [kbd]pma__users[/kbd]');
+$strConfigServers_users_desc = __('Both this table and the user groups table are required to enable the configurable menus feature; leaving either one of them blank will disable this feature, suggested: [kbd]pma__users[/kbd].');
$strConfigServers_users_name = __('Users table');
-$strConfigServers_usergroups_desc = __('Leave blank to disable configurable menus feature, suggested: [kbd]pma__usergroups[/kbd]');
+$strConfigServers_usergroups_desc = __('Both this table and the users table are required to enable the configurable menus feature; leaving either one of them blank will disable this feature, suggested: [kbd]pma__usergroups[/kbd].');
$strConfigServers_usergroups_name = __('User groups table');
-$strConfigServers_navigationhiding_desc = __('Leave blank to disable the feature to hide and show navigation items, suggested: [kbd]pma__navigationhiding[/kbd]');
+$strConfigServers_navigationhiding_desc = __('Leave blank to disable the feature to hide and show navigation items, suggested: [kbd]pma__navigationhiding[/kbd].');
$strConfigServers_navigationhiding_name = __('Hidden navigation items table');
-$strConfigServers_user_desc = __('Leave empty if not using config auth');
+$strConfigServers_user_desc = __('Leave empty if not using config auth.');
$strConfigServers_user_name = __('User for config auth');
$strConfigServers_verbose_desc = __('A user-friendly description of this server. Leave blank to display the hostname instead.');
$strConfigServers_verbose_name = __('Verbose name of this server');
-$strConfigShowAll_desc = __('Whether a user should be displayed a &quot;show all (rows)&quot; button');
+$strConfigShowAll_desc = __('Whether a user should be displayed a "show all (rows)" button.');
$strConfigShowAll_name = __('Allow to display all the rows');
-$strConfigShowChgPassword_desc = __('Please note that enabling this has no effect with [kbd]config[/kbd] authentication mode because the password is hard coded in the configuration file; this does not limit the ability to execute the same command directly');
+$strConfigShowChgPassword_desc = __('Please note that enabling this has no effect with [kbd]config[/kbd] authentication mode because the password is hard coded in the configuration file; this does not limit the ability to execute the same command directly.');
$strConfigShowChgPassword_name = __('Show password change form');
$strConfigShowCreateDb_name = __('Show create database form');
-$strConfigShowDbStructureCreation_desc = __('Show or hide a column displaying the Creation timestamp for all tables');
+$strConfigShowDbStructureCreation_desc = __('Show or hide a column displaying the Creation timestamp for all tables.');
$strConfigShowDbStructureCreation_name = __('Show Creation timestamp');
-$strConfigShowDbStructureLastUpdate_desc = __('Show or hide a column displaying the Last update timestamp for all tables');
+$strConfigShowDbStructureLastUpdate_desc = __('Show or hide a column displaying the Last update timestamp for all tables.');
$strConfigShowDbStructureLastUpdate_name = __('Show Last update timestamp');
-$strConfigShowDbStructureLastCheck_desc = __('Show or hide a column displaying the Last check timestamp for all tables');
+$strConfigShowDbStructureLastCheck_desc = __('Show or hide a column displaying the Last check timestamp for all tables.');
$strConfigShowDbStructureLastCheck_name = __('Show Last check timestamp');
-$strConfigShowDisplayDirection_desc = __('Defines whether or not type display direction option is shown when browsing a table');
+$strConfigShowDisplayDirection_desc = __('Defines whether or not type display direction option is shown when browsing a table.');
$strConfigShowDisplayDirection_name = __('Show display direction');
-$strConfigShowFieldTypesInDataEditView_desc = __('Defines whether or not type fields should be initially displayed in edit/insert mode');
+$strConfigShowFieldTypesInDataEditView_desc = __('Defines whether or not type fields should be initially displayed in edit/insert mode.');
$strConfigShowFieldTypesInDataEditView_name = __('Show field types');
-$strConfigShowFunctionFields_desc = __('Display the function fields in edit/insert mode');
+$strConfigShowFunctionFields_desc = __('Display the function fields in edit/insert mode.');
$strConfigShowFunctionFields_name = __('Show function fields');
-$strConfigShowHint_desc = __('Whether to show hint or not');
+$strConfigShowHint_desc = __('Whether to show hint or not.');
$strConfigShowHint_name = __('Show hint');
-$strConfigShowPhpInfo_desc = __('Shows link to [a@http://php.net/manual/function.phpinfo.php]phpinfo()[/a] output');
+$strConfigShowPhpInfo_desc = __('Shows link to [a@http://php.net/manual/function.phpinfo.php]phpinfo()[/a] output.');
$strConfigShowPhpInfo_name = __('Show phpinfo() link');
$strConfigShowServerInfo_name = __('Show detailed MySQL server information');
-$strConfigShowSQL_desc = __('Defines whether SQL queries generated by phpMyAdmin should be displayed');
+$strConfigShowSQL_desc = __('Defines whether SQL queries generated by phpMyAdmin should be displayed.');
$strConfigShowSQL_name = __('Show SQL queries');
-$strConfigRetainQueryBox_desc = __('Defines whether the query box should stay on-screen after its submission');
+$strConfigRetainQueryBox_desc = __('Defines whether the query box should stay on-screen after its submission.');
$strConfigRetainQueryBox_name = __('Retain query box');
-$strConfigShowStats_desc = __('Allow to display database and table statistics (eg. space usage)');
+$strConfigShowStats_desc = __('Allow to display database and table statistics (eg. space usage).');
$strConfigShowStats_name = __('Show statistics');
-$strConfigSkipLockedTables_desc = __('Mark used tables and make it possible to show databases with locked tables');
+$strConfigSkipLockedTables_desc = __('Mark used tables and make it possible to show databases with locked tables.');
$strConfigSkipLockedTables_name = __('Skip locked tables');
$strConfigSQLQuery_Edit_name = __('Edit');
$strConfigSQLQuery_Explain_name = __('Explain SQL');
$strConfigSQLQuery_Refresh_name = __('Refresh');
$strConfigSQLQuery_ShowAsPHP_name = __('Create PHP Code');
-$strConfigSQLQuery_Validate_desc = __('Requires SQL Validator to be enabled');
-$strConfigSQLQuery_Validate_name = __('Validate SQL');
-$strConfigSQLValidator_password_name = __('Password');
-$strConfigSQLValidator_use_desc = __('[strong]Warning:[/strong] requires PHP SOAP extension or PEAR SOAP to be installed');
-$strConfigSQLValidator_use_name = __('Enable SQL Validator');
-$strConfigSQLValidator_username_desc = __('If you have a custom username, specify it here (defaults to [kbd]anonymous[/kbd])');
-$strConfigSQLValidator_username_name = __('Username');
-$strConfigSuhosinDisableWarning_desc = __('A warning is displayed on the main page if Suhosin is detected');
+$strConfigSuhosinDisableWarning_desc = __('A warning is displayed on the main page if Suhosin is detected.');
$strConfigSuhosinDisableWarning_name = __('Suhosin warning');
-$strConfigTextareaCols_desc = __('Textarea size (columns) in edit mode, this value will be emphasized for SQL query textareas (*2) and for query window (*1.25)');
+$strConfigTextareaCols_desc = __('Textarea size (columns) in edit mode, this value will be emphasized for SQL query textareas (*2) and for query window (*1.25).');
$strConfigTextareaCols_name = __('Textarea columns');
-$strConfigTextareaRows_desc = __('Textarea size (rows) in edit mode, this value will be emphasized for SQL query textareas (*2) and for query window (*1.25)');
+$strConfigTextareaRows_desc = __('Textarea size (rows) in edit mode, this value will be emphasized for SQL query textareas (*2) and for query window (*1.25).');
$strConfigTextareaRows_name = __('Textarea rows');
-$strConfigTitleDatabase_desc = __('Title of browser window when a database is selected');
+$strConfigTitleDatabase_desc = __('Title of browser window when a database is selected.');
$strConfigTitleDatabase_name = __('Database');
-$strConfigTitleDefault_desc = __('Title of browser window when nothing is selected');
+$strConfigTitleDefault_desc = __('Title of browser window when nothing is selected.');
$strConfigTitleDefault_name = __('Default title');
-$strConfigTitleServer_desc = __('Title of browser window when a server is selected');
+$strConfigTitleServer_desc = __('Title of browser window when a server is selected.');
$strConfigTitleServer_name = __('Server');
-$strConfigTitleTable_desc = __('Title of browser window when a table is selected');
+$strConfigTitleTable_desc = __('Title of browser window when a table is selected.');
$strConfigTitleTable_name = __('Table');
-$strConfigTrustedProxies_desc = __('Input proxies as [kbd]IP: trusted HTTP header[/kbd]. The following example specifies that phpMyAdmin should trust a HTTP_X_FORWARDED_FOR (X-Forwarded-For) header coming from the proxy 1.2.3.4:[br][kbd]1.2.3.4: HTTP_X_FORWARDED_FOR[/kbd]');
+$strConfigTrustedProxies_desc = __('Input proxies as [kbd]IP: trusted HTTP header[/kbd]. The following example specifies that phpMyAdmin should trust a HTTP_X_FORWARDED_FOR (X-Forwarded-For) header coming from the proxy 1.2.3.4:[br][kbd]1.2.3.4: HTTP_X_FORWARDED_FOR[/kbd].');
$strConfigTrustedProxies_name = __('List of trusted proxies for IP allow/deny');
-$strConfigUploadDir_desc = __('Directory on server where you can upload files for import');
+$strConfigUploadDir_desc = __('Directory on server where you can upload files for import.');
$strConfigUploadDir_name = __('Upload directory');
-$strConfigUseDbSearch_desc = __('Allow for searching inside the entire database');
+$strConfigUseDbSearch_desc = __('Allow for searching inside the entire database.');
$strConfigUseDbSearch_name = __('Use database search');
-$strConfigUserprefsDeveloperTab_desc = __('When disabled, users cannot set any of the options below, regardless of the checkbox on the right');
+$strConfigUserprefsDeveloperTab_desc = __('When disabled, users cannot set any of the options below, regardless of the checkbox on the right.');
$strConfigUserprefsDeveloperTab_name = __('Enable the Developer tab in settings');
$strConfigVersionCheckLink = __('Check for latest version');
-$strConfigVersionCheck_desc = __('Enables check for latest version on main phpMyAdmin page');
+$strConfigVersionCheck_desc = __('Enables check for latest version on main phpMyAdmin page.');
$strConfigVersionCheck_name = __('Version check');
-$strConfigProxyUrl_desc = __('The url of the proxy to be used when retrieving the information about the latest version of phpMyAdmin or when submitting error reports. You need this if the server where phpMyAdmin is installed does not have direct access to the internet. The format is: "hostname:portnumber"');
+$strConfigProxyUrl_desc = __('The url of the proxy to be used when retrieving the information about the latest version of phpMyAdmin or when submitting error reports. You need this if the server where phpMyAdmin is installed does not have direct access to the internet. The format is: "hostname:portnumber".');
$strConfigProxyUrl_name = __('Proxy url');
$strConfigProxyUser_desc = __('The username for authenticating with the proxy. By default, no authentication is performed. If a username is supplied, Basic Authentication will be performed. No other types of authentication are currently supported.');
$strConfigProxyUser_name = __('Proxy username');
-$strConfigProxyPass_desc = __('The password for authenticating with the proxy');
+$strConfigProxyPass_desc = __('The password for authenticating with the proxy.');
$strConfigProxyPass_name = __('Proxy password');
-$strConfigZipDump_desc = __('Enable [a@http://en.wikipedia.org/wiki/ZIP_(file_format)]ZIP[/a] compression for import and export operations');
+$strConfigZipDump_desc = __('Enable [a@http://en.wikipedia.org/wiki/ZIP_(file_format)]ZIP[/a] compression for import and export operations.');
$strConfigZipDump_name = __('ZIP');
-$strConfigCaptchaLoginPublicKey_desc = __('Enter your public key for your domain reCaptcha service');
+$strConfigCaptchaLoginPublicKey_desc = __('Enter your public key for your domain reCaptcha service.');
$strConfigCaptchaLoginPublicKey_name = __('Public key for reCaptcha');
-$strConfigCaptchaLoginPrivateKey_desc = __('Enter your private key for your domain reCaptcha service');
+$strConfigCaptchaLoginPrivateKey_desc = __('Enter your private key for your domain reCaptcha service.');
$strConfigCaptchaLoginPrivateKey_name = __('Private key for reCaptcha');
-$strConfigSendErrorReports_desc = __('Choose the default action when sending error reports');
+$strConfigSendErrorReports_desc = __('Choose the default action when sending error reports.');
$strConfigSendErrorReports_name = __('Send error reports');
?>
diff --git a/libraries/config/setup.forms.php b/libraries/config/setup.forms.php
index 257f6e1f72..1e41b8fafd 100644
--- a/libraries/config/setup.forms.php
+++ b/libraries/config/setup.forms.php
@@ -33,7 +33,6 @@ $forms['Servers']['Server'] = array('Servers' => array(1 => array(
'socket',
'ssl',
'connect_type',
- 'extension',
'compress',
'nopassword')));
$forms['Servers']['Server_auth'] = array('Servers' => array(1 => array(
@@ -80,6 +79,7 @@ $forms['Servers']['Server_pmadb'] = array('Servers' => array(1 => array(
'table_coords' => 'pma__table_coords',
'pdf_pages' => 'pma__pdf_pages',
'designer_coords' => 'pma__designer_coords',
+ 'savedsearches' => 'pma__savedsearches',
'MaxTableUiprefs' => 100)));
$forms['Servers']['Server_tracking'] = array('Servers' => array(1 => array(
'tracking_version_auto_create',
@@ -119,8 +119,7 @@ $forms['Features']['Page_titles'] = array(
$forms['Features']['Warnings'] = array(
'ServerLibraryDifference_DisableWarning',
'PmaNoRelation_DisableWarning',
- 'SuhosinDisableWarning',
- 'McryptDisableWarning');
+ 'SuhosinDisableWarning');
$forms['Features']['Developer'] = array(
'UserprefsDeveloperTab',
'Error_Handler/display',
@@ -131,6 +130,7 @@ $forms['Features']['Other_core_settings'] = array(
'MaxDbList',
'MaxTableList',
'NumRecentTables',
+ 'NumFavoriteTables',
'ShowHint',
'OBGzip',
'PersistentConnections',
@@ -163,19 +163,16 @@ $forms['Sql_queries']['Sql_box'] = array('SQLQuery' => array(
'Edit',
'Explain',
'ShowAsPHP',
- 'Validate',
'Refresh'));
-$forms['Sql_queries']['Sql_validator'] = array('SQLValidator' => array(
- 'use',
- 'username',
- 'password'));
$forms['Navi_panel']['Navi_panel'] = array(
'NavigationDisplayLogo',
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
+ 'FirstLevelNavigationItems',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
+ 'NavigationTreeDisableDatabaseExpansion',
'NavigationTreeDisplayItemFilterMinimum');
$forms['Navi_panel']['Navi_servers'] = array(
'NavigationDisplayServers',
@@ -302,6 +299,9 @@ $forms['Export']['Sql'] = array('Export' => array(
':group:' . __('Structure'),
'sql_drop_table',
'sql_procedure_function',
+ 'sql_create_table',
+ 'sql_create_view',
+ 'sql_create_trigger',
'sql_create_table_statements' => ':group',
'sql_if_not_exists',
'sql_auto_increment',
@@ -314,7 +314,7 @@ $forms['Export']['Sql'] = array('Export' => array(
'sql_type',
'sql_insert_syntax',
'sql_max_query_size',
- 'sql_hex_for_blob',
+ 'sql_hex_for_binary',
'sql_utc_time'));
$forms['Export']['CodeGen'] = array('Export' => array(
'codegen_format'));
diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php
index e97bd34df9..1747a94ad8 100644
--- a/libraries/config/user_preferences.forms.php
+++ b/libraries/config/user_preferences.forms.php
@@ -33,6 +33,7 @@ $forms['Features']['General'] = array(
'MaxDbList',
'MaxTableList',
'NumRecentTables',
+ 'NumFavoriteTables',
'ShowHint',
'SendErrorReports');
$forms['Features']['Text_fields'] = array(
@@ -53,7 +54,6 @@ $forms['Features']['Warnings'] = array(
'ServerLibraryDifference_DisableWarning',
'PmaNoRelation_DisableWarning',
'SuhosinDisableWarning',
- 'McryptDisableWarning',
'ReservedWordDisableWarning');
// settings from this form are treated specially,
// see prefs_forms.php and user_preferences.lib.php
@@ -76,15 +76,16 @@ $forms['Sql_queries']['Sql_box'] = array(
'SQLQuery/Edit',
'SQLQuery/Explain',
'SQLQuery/ShowAsPHP',
- 'SQLQuery/Validate',
'SQLQuery/Refresh');
$forms['Navi_panel']['Navi_panel'] = array(
'NavigationDisplayLogo',
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
+ 'FirstLevelNavigationItems',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
+ 'NavigationTreeDisableDatabaseExpansion',
'NavigationTreeDisplayItemFilterMinimum');
$forms['Navi_panel']['Navi_databases'] = array(
'NavigationTreeDisplayDbFilterMinimum',
@@ -199,7 +200,10 @@ $forms['Export']['Sql'] = array(
':group:end',
':group:' . __('Structure'),
'Export/sql_drop_table',
+ 'Export/sql_create_table',
+ 'Export/sql_create_view',
'Export/sql_procedure_function',
+ 'Export/sql_create_trigger',
'Export/sql_create_table_statements' => ':group',
'Export/sql_if_not_exists',
'Export/sql_auto_increment',
@@ -212,7 +216,7 @@ $forms['Export']['Sql'] = array(
'Export/sql_type',
'Export/sql_insert_syntax',
'Export/sql_max_query_size',
- 'Export/sql_hex_for_blob',
+ 'Export/sql_hex_for_binary',
'Export/sql_utc_time');
$forms['Export']['CodeGen'] = array(
'Export/codegen_format');