Merge commit '90e4325bcf' into QA_4_6-security
This commit is contained in:
commit
be8eb4bf3e
@ -6,6 +6,7 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- "7.1"
|
||||
- "7.0"
|
||||
- "5.6"
|
||||
- "5.5"
|
||||
|
||||
@ -15,6 +15,9 @@ phpMyAdmin - ChangeLog
|
||||
- issue #12786 Fixed database searching
|
||||
- issue #12792 Fixed javascript error on new version link
|
||||
- issue #12785 Add information about required and suggested extensions to composer.json
|
||||
- issue #12434 Improve documentation for servers running with Suhosin
|
||||
- issue #12800 Updated embedded phpSecLib to 2.0.4
|
||||
- issue #12800 Fixed various issues with PHP 7.1
|
||||
|
||||
4.6.5.2 (2016-12-05)
|
||||
- issue #12765 Fixed SQL export with newlines
|
||||
|
||||
@ -692,7 +692,7 @@ Server connection settings
|
||||
For auto-upgrade functionality to work, your
|
||||
``$cfg['Servers'][$i]['controluser']`` must have ALTER privilege on
|
||||
``phpmyadmin`` database. See the `MySQL documentation for GRANT
|
||||
<https://dev.mysql.com/doc/mysql/en/grant.html>`_ on how to
|
||||
<https://dev.mysql.com/doc/refman/5.7/en/grant.html>`_ on how to
|
||||
``GRANT`` privileges to a user.
|
||||
|
||||
.. _history:
|
||||
@ -1577,7 +1577,7 @@ Cookie authentication options
|
||||
:default: ``''``
|
||||
|
||||
The public key for the reCaptcha service that can be obtained from
|
||||
https://www.google.com/recaptcha.
|
||||
https://www.google.com/recaptcha/intro/.
|
||||
|
||||
reCaptcha will be then used in :ref:`cookie`.
|
||||
|
||||
@ -1587,7 +1587,7 @@ Cookie authentication options
|
||||
:default: ``''``
|
||||
|
||||
The private key for the reCaptcha service that can be obtain from
|
||||
https://www.google.com/recaptcha.
|
||||
https://www.google.com/recaptcha/intro/.
|
||||
|
||||
reCaptcha will be then used in :ref:`cookie`.
|
||||
|
||||
@ -2228,7 +2228,7 @@ Languages
|
||||
|
||||
Defines the default connection collation to use, if not user-defined.
|
||||
See the `MySQL documentation for charsets
|
||||
<https://dev.mysql.com/doc/mysql/en/charset-charsets.html>`_
|
||||
<https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html>`_
|
||||
for list of possible values.
|
||||
|
||||
.. config:option:: $cfg['Lang']
|
||||
@ -2927,7 +2927,7 @@ Developer
|
||||
:default: false
|
||||
|
||||
Enable to let server present itself as demo server.
|
||||
This is used for <https://demo.phpmyadmin.net/>.
|
||||
This is used for `phpMyAdmin demo server <https://www.phpmyadmin.net/try/>`_.
|
||||
|
||||
|
||||
Examples
|
||||
|
||||
@ -182,8 +182,8 @@ Credits, in chronological order
|
||||
|
||||
* :term:`PDF` schema output, thanks also to
|
||||
Olivier Plathey for the "FPDF" library (see <http://www.fpdf.org/>), Steven
|
||||
Wittens for the "UFPDF" library and
|
||||
Nicola Asuni for the "TCPDF" library (see <https://tcpdf.org/>).
|
||||
Wittens for the "UFPDF" library (see <https://acko.net/blog/ufpdf-unicode-utf-8-extension-for-fpdf/>) and
|
||||
Nicola Asuni for the "TCPDF" library (see <https://www.tcpdf.org/>).
|
||||
|
||||
* Olof Edlund <olof.edlund\_at\_upright.se>
|
||||
|
||||
|
||||
50
doc/faq.rst
50
doc/faq.rst
@ -129,7 +129,7 @@ and after execution of your :term:`SQL` commands, removed.
|
||||
-------------------------------------------------------
|
||||
|
||||
The MySQL manual explains how to `reset the permissions
|
||||
<https://dev.mysql.com/doc/mysql/en/resetting-permissions.html>`_.
|
||||
<https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html>`_.
|
||||
|
||||
.. _faq1_13:
|
||||
|
||||
@ -210,7 +210,7 @@ The proper solution is to use the `mysqli extension
|
||||
<https://www.php.net/mysqli>`_ with the proper client library to match
|
||||
your MySQL installation. More
|
||||
information (and several workarounds) are located in the `MySQL
|
||||
Documentation <https://dev.mysql.com/doc/mysql/en/old-client.html>`_.
|
||||
Documentation <https://dev.mysql.com/doc/refman/5.7/en/old-client.html>`_.
|
||||
|
||||
.. _faq1_18:
|
||||
|
||||
@ -316,7 +316,7 @@ should work.
|
||||
1.27 I get empty page when I want to view huge page (eg. db\_structure.php with plenty of tables).
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
This was caused by a `PHP bug <https://bugs.php.net/21079>`_ that occur when
|
||||
This was caused by a `PHP bug <https://bugs.php.net/bug.php?id=21079>`_ that occur when
|
||||
GZIP output buffering is enabled. If you turn off it (by
|
||||
:config:option:`$cfg['OBGzip']` in :file:`config.inc.php`), it should work.
|
||||
This bug will has been fixed in PHP 5.0.0.
|
||||
@ -493,34 +493,42 @@ The default values for most Suhosin configuration options will work in
|
||||
most scenarios, however you might want to adjust at least following
|
||||
parameters:
|
||||
|
||||
* `suhosin.request.max\_vars <http://www.hardened-
|
||||
php.net/suhosin/configuration.html#suhosin.request.max_vars>`_ should
|
||||
* `suhosin.request.max\_vars <https://suhosin.org/stories/configuration.html#suhosin-request-max-vars>`_ should
|
||||
be increased (eg. 2048)
|
||||
* `suhosin.post.max\_vars <http://www.hardened-
|
||||
php.net/suhosin/configuration.html#suhosin.post.max_vars>`_ should be
|
||||
* `suhosin.post.max\_vars <https://suhosin.org/stories/configuration.html#suhosin-post-max-vars>`_ should be
|
||||
increased (eg. 2048)
|
||||
* `suhosin.request.max\_array\_index\_length <http://www.hardened-php.ne
|
||||
t/suhosin/configuration.html#suhosin.request.max_array_index_length>`_
|
||||
* `suhosin.request.max\_array\_index\_length <https://suhosin.org/stories/configuration.html#suhosin-request-max-array-index-length>`_
|
||||
should be increased (eg. 256)
|
||||
* `suhosin.post.max\_array\_index\_length <http://www.hardened-php.net/s
|
||||
uhosin/configuration.html#suhosin.post.max_array_index_length>`_
|
||||
* `suhosin.post.max\_array\_index\_length <https://suhosin.org/stories/configuration.html#suhosin-post-max-array-index-length>`_
|
||||
should be increased (eg. 256)
|
||||
* `suhosin.request.max\_totalname\_length <http://www.hardened-php.net/s
|
||||
uhosin/configuration.html#suhosin.request.max_totalname_length>`_
|
||||
* `suhosin.request.max\_totalname\_length <https://suhosin.org/stories/configuration.html#suhosin-request-max-totalname-length>`_
|
||||
should be increased (eg. 8192)
|
||||
* `suhosin.post.max\_totalname\_length <http://www.hardened-php.net/suho
|
||||
sin/configuration.html#suhosin.post.max_totalname_length>`_ should be
|
||||
* `suhosin.post.max\_totalname\_length <https://suhosin.org/stories/configuration.html#suhosin-post-max-totalname-length>`_ should be
|
||||
increased (eg. 8192)
|
||||
* `suhosin.get.max\_value\_length <http://www.hardened-
|
||||
php.net/suhosin/configuration.html#suhosin.get.max_value_length>`_
|
||||
* `suhosin.get.max\_value\_length <https://suhosin.org/stories/configuration.html#suhosin-get-max-value-length>`_
|
||||
should be increased (eg. 1024)
|
||||
* `suhosin.sql.bailout\_on\_error <http://www.hardened-
|
||||
php.net/suhosin/configuration.html#suhosin.sql.bailout_on_error>`_
|
||||
* `suhosin.sql.bailout\_on\_error <https://suhosin.org/stories/configuration.html#suhosin-sql-bailout-on-error>`_
|
||||
needs to be disabled (the default)
|
||||
* `suhosin.log.\* <http://www.hardened-
|
||||
php.net/suhosin/configuration.html#logging_configuration>`_ should not
|
||||
* `suhosin.log.\* <https://suhosin.org/stories/configuration.html#logging-configuration>`_ should not
|
||||
include :term:`SQL`, otherwise you get big
|
||||
slowdown
|
||||
* `suhosin.sql.union <https://suhosin.org/stories/configuration.html#suhosin-
|
||||
sql-union>`_ must be disabled (which is the default).
|
||||
* `suhosin.sql.multiselect <https://suhosin.org/stories/configuration.html#
|
||||
suhosin-sql-multiselect>`_ must be disabled (which is the default).
|
||||
* `suhosin.sql.comment <https://suhosin.org/stories/configuration.html#suhosin-
|
||||
sql-comment>`_ must be disabled (which is the default).
|
||||
|
||||
To further improve security, we also recommend these modifications:
|
||||
|
||||
* `suhosin.executor.include.max\_traversal <https://suhosin.org/stories/
|
||||
configuration.html#suhosin-executor-include-max-traversal>`_ should be
|
||||
enabled as a mitigation against local file inclusion attacks. We suggest
|
||||
setting this to 2 as ``../`` is used with the ReCaptcha library.
|
||||
* `suhosin.cookie.encrypt <https://suhosin.org/stories/configuration.html#
|
||||
suhosin-cookie-encrypt>`_ should be enabled.
|
||||
* `suhosin.executor.disable_emodifier <https://suhosin.org/stories/config
|
||||
uration.html#suhosin-executor-disable-emodifier>`_ should be enabled.
|
||||
|
||||
You can also disable the warning using the :config:option:`$cfg['SuhosinDisableWarning']`.
|
||||
|
||||
|
||||
@ -319,7 +319,7 @@ From Wikipedia, the free encyclopedia
|
||||
socket
|
||||
a form of inter-process communication.
|
||||
|
||||
.. seealso:: <https://www.wikipedia.org/wiki/Socket#Computer_sockets>
|
||||
.. seealso:: <https://en.wikipedia.org/wiki/Unix_domain_socket>
|
||||
|
||||
SSL
|
||||
Secure Sockets Layer is a cryptographic protocol which provides secure
|
||||
@ -369,6 +369,8 @@ From Wikipedia, the free encyclopedia
|
||||
UFPDF
|
||||
Unicode/UTF-8 extension for :term:`FPDF`
|
||||
|
||||
.. seealso:: <https://acko.net/blog/ufpdf-unicode-utf-8-extension-for-fpdf/>
|
||||
|
||||
URL
|
||||
Uniform Resource Locator is a sequence of characters, conforming to a
|
||||
standardized format, that is used for referring to resources, such as
|
||||
|
||||
@ -76,16 +76,16 @@ class SysInfoLinux extends \PMA\libraries\SysInfo
|
||||
|
||||
$mem = array_merge($defaults, $mem);
|
||||
|
||||
foreach ($mem as $idx => $value) {
|
||||
$mem[$idx] = intval($value);
|
||||
}
|
||||
|
||||
$mem['MemUsed'] = $mem['MemTotal']
|
||||
- $mem['MemFree'] - $mem['Cached'] - $mem['Buffers'];
|
||||
|
||||
$mem['SwapUsed'] = $mem['SwapTotal']
|
||||
- $mem['SwapFree'] - $mem['SwapCached'];
|
||||
|
||||
foreach ($mem as $idx => $value) {
|
||||
$mem[$idx] = intval($value);
|
||||
}
|
||||
|
||||
return $mem;
|
||||
}
|
||||
}
|
||||
|
||||
@ -708,10 +708,13 @@ abstract class Base
|
||||
return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result;
|
||||
case self::MODE_CBC:
|
||||
$result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->encryptIV);
|
||||
if (!defined('OPENSSL_RAW_DATA')) {
|
||||
$result = substr($result, 0, -$this->block_size);
|
||||
}
|
||||
if ($this->continuousBuffer) {
|
||||
$this->encryptIV = substr($result, -$this->block_size);
|
||||
}
|
||||
return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result;
|
||||
return $result;
|
||||
case self::MODE_CTR:
|
||||
return $this->_openssl_ctr_process($plaintext, $this->encryptIV, $this->enbuffer);
|
||||
case self::MODE_CFB:
|
||||
@ -773,7 +776,7 @@ abstract class Base
|
||||
$this->changed = false;
|
||||
}
|
||||
if ($this->enchanged) {
|
||||
mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
|
||||
@mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
|
||||
$this->enchanged = false;
|
||||
}
|
||||
|
||||
@ -806,15 +809,15 @@ abstract class Base
|
||||
if ($len >= $block_size) {
|
||||
if ($this->enbuffer['enmcrypt_init'] === false || $len > $this->cfb_init_len) {
|
||||
if ($this->enbuffer['enmcrypt_init'] === true) {
|
||||
mcrypt_generic_init($this->enmcrypt, $this->key, $iv);
|
||||
@mcrypt_generic_init($this->enmcrypt, $this->key, $iv);
|
||||
$this->enbuffer['enmcrypt_init'] = false;
|
||||
}
|
||||
$ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size));
|
||||
$ciphertext.= @mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size));
|
||||
$iv = substr($ciphertext, -$block_size);
|
||||
$len%= $block_size;
|
||||
} else {
|
||||
while ($len >= $block_size) {
|
||||
$iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size);
|
||||
$iv = @mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size);
|
||||
$ciphertext.= $iv;
|
||||
$len-= $block_size;
|
||||
$i+= $block_size;
|
||||
@ -823,7 +826,7 @@ abstract class Base
|
||||
}
|
||||
|
||||
if ($len) {
|
||||
$iv = mcrypt_generic($this->ecb, $iv);
|
||||
$iv = @mcrypt_generic($this->ecb, $iv);
|
||||
$block = $iv ^ substr($plaintext, -$len);
|
||||
$iv = substr_replace($iv, $block, 0, $len);
|
||||
$ciphertext.= $block;
|
||||
@ -833,10 +836,10 @@ abstract class Base
|
||||
return $ciphertext;
|
||||
}
|
||||
|
||||
$ciphertext = mcrypt_generic($this->enmcrypt, $plaintext);
|
||||
$ciphertext = @mcrypt_generic($this->enmcrypt, $plaintext);
|
||||
|
||||
if (!$this->continuousBuffer) {
|
||||
mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
|
||||
@mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
|
||||
}
|
||||
|
||||
return $ciphertext;
|
||||
@ -1014,10 +1017,13 @@ abstract class Base
|
||||
if (!defined('OPENSSL_RAW_DATA')) {
|
||||
$padding = str_repeat(chr($this->block_size), $this->block_size) ^ substr($ciphertext, -$this->block_size);
|
||||
$ciphertext.= substr(openssl_encrypt($padding, $this->cipher_name_openssl_ecb, $this->key, true), 0, $this->block_size);
|
||||
$offset = 2 * $this->block_size;
|
||||
} else {
|
||||
$offset = $this->block_size;
|
||||
}
|
||||
$plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->decryptIV);
|
||||
if ($this->continuousBuffer) {
|
||||
$this->decryptIV = substr($ciphertext, -$this->block_size);
|
||||
$this->decryptIV = substr($ciphertext, -$offset, $this->block_size);
|
||||
}
|
||||
break;
|
||||
case self::MODE_CTR:
|
||||
@ -1082,7 +1088,7 @@ abstract class Base
|
||||
$this->changed = false;
|
||||
}
|
||||
if ($this->dechanged) {
|
||||
mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
|
||||
@mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
|
||||
$this->dechanged = false;
|
||||
}
|
||||
|
||||
@ -1110,12 +1116,12 @@ abstract class Base
|
||||
}
|
||||
if ($len >= $block_size) {
|
||||
$cb = substr($ciphertext, $i, $len - $len % $block_size);
|
||||
$plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb;
|
||||
$plaintext.= @mcrypt_generic($this->ecb, $iv . $cb) ^ $cb;
|
||||
$iv = substr($cb, -$block_size);
|
||||
$len%= $block_size;
|
||||
}
|
||||
if ($len) {
|
||||
$iv = mcrypt_generic($this->ecb, $iv);
|
||||
$iv = @mcrypt_generic($this->ecb, $iv);
|
||||
$plaintext.= $iv ^ substr($ciphertext, -$len);
|
||||
$iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len);
|
||||
$pos = $len;
|
||||
@ -1124,10 +1130,10 @@ abstract class Base
|
||||
return $plaintext;
|
||||
}
|
||||
|
||||
$plaintext = mdecrypt_generic($this->demcrypt, $ciphertext);
|
||||
$plaintext = @mdecrypt_generic($this->demcrypt, $ciphertext);
|
||||
|
||||
if (!$this->continuousBuffer) {
|
||||
mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
|
||||
@mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
|
||||
}
|
||||
|
||||
return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
|
||||
@ -1270,7 +1276,7 @@ abstract class Base
|
||||
* PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream
|
||||
* for CTR is the same for both encrypting and decrypting this function is re-used by both Base::encrypt()
|
||||
* and Base::decrypt(). Also, OpenSSL doesn't implement CTR for all of it's symmetric ciphers so this
|
||||
* function will emulate CTR with ECB when necesary.
|
||||
* function will emulate CTR with ECB when necessary.
|
||||
*
|
||||
* @see self::encrypt()
|
||||
* @see self::decrypt()
|
||||
@ -1589,7 +1595,7 @@ abstract class Base
|
||||
case self::ENGINE_MCRYPT:
|
||||
return $this->cipher_name_mcrypt &&
|
||||
extension_loaded('mcrypt') &&
|
||||
in_array($this->cipher_name_mcrypt, mcrypt_list_algorithms());
|
||||
in_array($this->cipher_name_mcrypt, @mcrypt_list_algorithms());
|
||||
case self::ENGINE_INTERNAL:
|
||||
return true;
|
||||
}
|
||||
@ -1668,13 +1674,13 @@ abstract class Base
|
||||
if ($this->engine != self::ENGINE_MCRYPT && $this->enmcrypt) {
|
||||
// Closing the current mcrypt resource(s). _mcryptSetup() will, if needed,
|
||||
// (re)open them with the module named in $this->cipher_name_mcrypt
|
||||
mcrypt_module_close($this->enmcrypt);
|
||||
mcrypt_module_close($this->demcrypt);
|
||||
@mcrypt_module_close($this->enmcrypt);
|
||||
@mcrypt_module_close($this->demcrypt);
|
||||
$this->enmcrypt = null;
|
||||
$this->demcrypt = null;
|
||||
|
||||
if ($this->ecb) {
|
||||
mcrypt_module_close($this->ecb);
|
||||
@mcrypt_module_close($this->ecb);
|
||||
$this->ecb = null;
|
||||
}
|
||||
}
|
||||
@ -1788,19 +1794,19 @@ abstract class Base
|
||||
self::MODE_STREAM => MCRYPT_MODE_STREAM,
|
||||
);
|
||||
|
||||
$this->demcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
|
||||
$this->enmcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
|
||||
$this->demcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
|
||||
$this->enmcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
|
||||
|
||||
// we need the $ecb mcrypt resource (only) in MODE_CFB with enableContinuousBuffer()
|
||||
// to workaround mcrypt's broken ncfb implementation in buffered mode
|
||||
// see: {@link http://phpseclib.sourceforge.net/cfb-demo.phps}
|
||||
if ($this->mode == self::MODE_CFB) {
|
||||
$this->ecb = mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, '');
|
||||
$this->ecb = @mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, '');
|
||||
}
|
||||
} // else should mcrypt_generic_deinit be called?
|
||||
|
||||
if ($this->mode == self::MODE_CFB) {
|
||||
mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size));
|
||||
@mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2499,7 +2505,7 @@ abstract class Base
|
||||
* is stored, classwide (!), here for reusing.
|
||||
*
|
||||
* The string-based index of $function is a classwide
|
||||
* uniqe value representing, at least, the $mode of
|
||||
* unique value representing, at least, the $mode of
|
||||
* operation (or more... depends of the optimizing level)
|
||||
* for which $mode the lambda function was created.
|
||||
*
|
||||
|
||||
@ -148,13 +148,13 @@ class Random
|
||||
session_start();
|
||||
|
||||
$v = $seed = $_SESSION['seed'] = pack('H*', sha1(
|
||||
serialize($_SERVER) .
|
||||
serialize($_POST) .
|
||||
serialize($_GET) .
|
||||
serialize($_COOKIE) .
|
||||
serialize($GLOBALS) .
|
||||
serialize($_SESSION) .
|
||||
serialize($_OLD_SESSION)
|
||||
(isset($_SERVER) ? phpseclib_safe_serialize($_SERVER) : '') .
|
||||
(isset($_POST) ? phpseclib_safe_serialize($_POST) : '') .
|
||||
(isset($_GET) ? phpseclib_safe_serialize($_GET) : '') .
|
||||
(isset($_COOKIE) ? phpseclib_safe_serialize($_COOKIE) : '') .
|
||||
phpseclib_safe_serialize($GLOBALS) .
|
||||
phpseclib_safe_serialize($_SESSION) .
|
||||
phpseclib_safe_serialize($_OLD_SESSION)
|
||||
));
|
||||
if (!isset($_SESSION['count'])) {
|
||||
$_SESSION['count'] = 0;
|
||||
@ -241,3 +241,38 @@ class Random
|
||||
return substr($result, 0, $length);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('phpseclib_safe_serialize')) {
|
||||
/**
|
||||
* Safely serialize variables
|
||||
*
|
||||
* If a class has a private __sleep() method it'll give a fatal error on PHP 5.2 and earlier.
|
||||
* PHP 5.3 will emit a warning.
|
||||
*
|
||||
* @param mixed $arr
|
||||
* @access public
|
||||
*/
|
||||
function phpseclib_safe_serialize(&$arr)
|
||||
{
|
||||
if (is_object($arr)) {
|
||||
return '';
|
||||
}
|
||||
if (!is_array($arr)) {
|
||||
return serialize($arr);
|
||||
}
|
||||
// prevent circular array recursion
|
||||
if (isset($arr['__phpseclib_marker'])) {
|
||||
return '';
|
||||
}
|
||||
$safearr = array();
|
||||
$arr['__phpseclib_marker'] = true;
|
||||
foreach (array_keys($arr) as $key) {
|
||||
// do not recurse on the '__phpseclib_marker' key itself, for smaller memory usage
|
||||
if ($key !== '__phpseclib_marker') {
|
||||
$safearr[$key] = phpseclib_safe_serialize($arr[$key]);
|
||||
}
|
||||
}
|
||||
unset($arr['__phpseclib_marker']);
|
||||
return serialize($safearr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ class Svg extends XMLWriter
|
||||
/**
|
||||
* Set document font size
|
||||
*
|
||||
* @param string $value sets the font size in pixels
|
||||
* @param integer $value sets the font size in pixels
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@ -116,7 +116,7 @@ class Svg extends XMLWriter
|
||||
/**
|
||||
* Get document font size
|
||||
*
|
||||
* @return string returns the font size
|
||||
* @return integer returns the font size
|
||||
*/
|
||||
public function getFontSize()
|
||||
{
|
||||
@ -240,7 +240,7 @@ class Svg extends XMLWriter
|
||||
$this->writeAttribute('style', $styles);
|
||||
if (isset($text)) {
|
||||
$this->writeAttribute('font-family', $this->font);
|
||||
$this->writeAttribute('font-size', $this->fontSize);
|
||||
$this->writeAttribute('font-size', $this->fontSize . 'px');
|
||||
$this->text($text);
|
||||
}
|
||||
$this->endElement();
|
||||
|
||||
@ -72,7 +72,7 @@ class SvgRelationSchema extends ExportRelationSchema
|
||||
);
|
||||
$this->diagram->SetAuthor('phpMyAdmin ' . PMA_VERSION);
|
||||
$this->diagram->setFont('Arial');
|
||||
$this->diagram->setFontSize('16px');
|
||||
$this->diagram->setFontSize(16);
|
||||
|
||||
$alltables = $this->getTablesFromRequest();
|
||||
|
||||
@ -264,4 +264,4 @@ class SvgRelationSchema extends ExportRelationSchema
|
||||
$table->tableDraw($this->showColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
14
po/cs.po
14
po/cs.po
@ -6,8 +6,8 @@ msgstr ""
|
||||
"Project-Id-Version: phpMyAdmin 4.6.5-dev\n"
|
||||
"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n"
|
||||
"POT-Creation-Date: 2016-11-10 09:39+0100\n"
|
||||
"PO-Revision-Date: 2016-11-24 13:35+0000\n"
|
||||
"Last-Translator: ratajs <simonrataj@seznam.cz>\n"
|
||||
"PO-Revision-Date: 2016-12-10 22:56+0000\n"
|
||||
"Last-Translator: Lucie Procházková <lucieaprochazkova@gmail.com>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/phpmyadmin/4-6/cs/>"
|
||||
"\n"
|
||||
"Language: cs\n"
|
||||
@ -2923,6 +2923,8 @@ msgstr "Selhalo formátování textu pro pravidlo „%s“."
|
||||
#, php-format
|
||||
msgid "Error in reading file: The file '%s' does not exist or is not readable!"
|
||||
msgstr ""
|
||||
"Chyba při čtení souboru: Soubor '%s' neexistuje, nebo se jej nepodařilo "
|
||||
"přečíst"
|
||||
|
||||
#: libraries/Advisor.php:492
|
||||
#, php-format
|
||||
@ -3659,8 +3661,9 @@ msgid "Unknown error in file upload."
|
||||
msgstr "Neznámá chyba při nahrávání souboru."
|
||||
|
||||
#: libraries/File.php:424
|
||||
#, fuzzy
|
||||
msgid "File is a symbolic link"
|
||||
msgstr ""
|
||||
msgstr "Soubor je symbolická linka."
|
||||
|
||||
#: libraries/File.php:470
|
||||
msgid "Error moving the uploaded file, see [doc@faq1-11]FAQ 1.11[/doc]."
|
||||
@ -3813,8 +3816,9 @@ msgid "Page number:"
|
||||
msgstr "Strana číslo:"
|
||||
|
||||
#: libraries/LanguageManager.php:867
|
||||
#, fuzzy
|
||||
msgid "Ignoring unsupported language code."
|
||||
msgstr ""
|
||||
msgstr "Ignorován nepodporovaný jazykový kód."
|
||||
|
||||
#: libraries/Linter.php:99
|
||||
msgid ""
|
||||
@ -15756,7 +15760,7 @@ msgstr "Hašovací funkce pro heslo:"
|
||||
|
||||
#: view_create.php:44
|
||||
msgid "View name can not be empty"
|
||||
msgstr ""
|
||||
msgstr "Název pohledu nemůže být prázdný."
|
||||
|
||||
#: view_create.php:247
|
||||
msgid "VIEW name"
|
||||
|
||||
109
po/es.po
109
po/es.po
@ -4,16 +4,16 @@ msgstr ""
|
||||
"Project-Id-Version: phpMyAdmin 4.6.5-dev\n"
|
||||
"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n"
|
||||
"POT-Creation-Date: 2016-11-10 09:39+0100\n"
|
||||
"PO-Revision-Date: 2016-07-27 00:30+0000\n"
|
||||
"PO-Revision-Date: 2016-12-13 09:25+0000\n"
|
||||
"Last-Translator: jorge jansen abreu <condecalifornia@hotmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/phpmyadmin/4-6/"
|
||||
"es/>\n"
|
||||
"Language-Team: Spanish "
|
||||
"<https://hosted.weblate.org/projects/phpmyadmin/4-6/es/>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2.8-dev\n"
|
||||
"X-Generator: Weblate 2.10-dev\n"
|
||||
|
||||
#: changelog.php:38 license.php:33
|
||||
#, php-format
|
||||
@ -792,6 +792,7 @@ msgstr ""
|
||||
#: index.php:509
|
||||
msgid "The secret passphrase in configuration (blowfish_secret) is too short."
|
||||
msgstr ""
|
||||
"La frase secreta en la configuración (blowfish_secret) es demasiado corta."
|
||||
|
||||
#: index.php:523
|
||||
msgid ""
|
||||
@ -1822,6 +1823,7 @@ msgstr "Exportar"
|
||||
#: js/messages.php:389
|
||||
msgid "No routine is exportable. Required privileges may be lacking."
|
||||
msgstr ""
|
||||
"No se puede exportar ninguna rutina. Quizá falten los privilegios necesarios."
|
||||
|
||||
#: js/messages.php:392 libraries/rte/rte_routines.lib.php:754
|
||||
msgid "ENUM/SET editor"
|
||||
@ -2182,12 +2184,16 @@ msgid ""
|
||||
"MySQL accepts additional values not selectable by the slider; key in those "
|
||||
"values directly if desired"
|
||||
msgstr ""
|
||||
"MySQL acepta valores adicionales que no se pueden seleccionar en el "
|
||||
"deslizador; introduzca esos valores directamente si lo desea"
|
||||
|
||||
#: js/messages.php:528
|
||||
msgid ""
|
||||
"MySQL accepts additional values not selectable by the datepicker; key in "
|
||||
"those values directly if desired"
|
||||
msgstr ""
|
||||
"MySQL acepta valores adicionales que no se pueden seleccionar en el "
|
||||
"calendario; introduzca esos valores directamente si lo desea"
|
||||
|
||||
#: js/messages.php:534
|
||||
msgid ""
|
||||
@ -2966,6 +2972,7 @@ msgstr "No se pudo dar formato a una cadena para la regla '%s'."
|
||||
#, php-format
|
||||
msgid "Error in reading file: The file '%s' does not exist or is not readable!"
|
||||
msgstr ""
|
||||
"Error al leer el archivo: ¡El archivo '%s' no existe o no se puede leer!"
|
||||
|
||||
#: libraries/Advisor.php:492
|
||||
#, php-format
|
||||
@ -3704,7 +3711,7 @@ msgstr "Error desconocido al subir el archivo."
|
||||
|
||||
#: libraries/File.php:424
|
||||
msgid "File is a symbolic link"
|
||||
msgstr ""
|
||||
msgstr "El archivo es un enlace simbólico"
|
||||
|
||||
#: libraries/File.php:470
|
||||
msgid "Error moving the uploaded file, see [doc@faq1-11]FAQ 1.11[/doc]."
|
||||
@ -5242,10 +5249,8 @@ msgid "You allow for connecting to the server without a password."
|
||||
msgstr "Permite conectarse al servidor sin contraseña."
|
||||
|
||||
#: libraries/config/ServerConfigChecks.php:347
|
||||
#, fuzzy
|
||||
#| msgid "Key is too short, it should have at least 8 characters."
|
||||
msgid "Key is too short, it should have at least 32 characters."
|
||||
msgstr "La clave es muy corta, debe tener al menos 8 caracteres."
|
||||
msgstr "La clave es muy corta, debe tener al menos 32 caracteres."
|
||||
|
||||
#: libraries/config/ServerConfigChecks.php:357
|
||||
msgid "Key should contain letters, numbers [em]and[/em] special characters."
|
||||
@ -5388,10 +5393,8 @@ msgid "Could not connect to the database server!"
|
||||
msgstr "¡No se pudo conectar con el servidor de base de datos!"
|
||||
|
||||
#: libraries/config/Validator.php:243
|
||||
#, fuzzy
|
||||
#| msgid "Authentication type"
|
||||
msgid "Invalid authentication type!"
|
||||
msgstr "Tipo de autenticación"
|
||||
msgstr "¡Tipo de autenticación inválida!"
|
||||
|
||||
#: libraries/config/Validator.php:250
|
||||
msgid "Empty username while using [kbd]config[/kbd] authentication method!"
|
||||
@ -9420,10 +9423,8 @@ msgid "Log out"
|
||||
msgstr "Finalizar sesión"
|
||||
|
||||
#: libraries/navigation/NavigationHeader.php:170
|
||||
#, fuzzy
|
||||
#| msgid "Dumping data"
|
||||
msgid "Empty session data"
|
||||
msgstr "Volcado de datos"
|
||||
msgstr "Datos de sesión vacíos"
|
||||
|
||||
#: libraries/navigation/NavigationHeader.php:186
|
||||
msgid "phpMyAdmin documentation"
|
||||
@ -9455,9 +9456,8 @@ msgstr[1] "Se encontró %s resultado adicional"
|
||||
|
||||
#: libraries/navigation/NavigationTree.php:1364
|
||||
#: libraries/navigation/NavigationTree.php:1401
|
||||
#, fuzzy
|
||||
msgid "Type to filter these, Enter to search all"
|
||||
msgstr "Escribe para filtrar estos, Introduce para buscar todo"
|
||||
msgstr "Escribe para filtrar estos, «Intro» para buscar todo"
|
||||
|
||||
#: libraries/navigation/NavigationTree.php:1366
|
||||
#: libraries/navigation/NavigationTree.php:1402
|
||||
@ -12023,10 +12023,8 @@ msgid "routine"
|
||||
msgstr "rutina"
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:32
|
||||
#, fuzzy
|
||||
#| msgid "You do not have the necessary privileges to create a routine"
|
||||
msgid "You do not have the necessary privileges to create a routine."
|
||||
msgstr "No posee los privilegios necesarios para crear una rutina"
|
||||
msgstr "No posee los privilegios necesarios para crear una rutina."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:35
|
||||
#, php-format
|
||||
@ -12034,6 +12032,8 @@ msgid ""
|
||||
"No routine with name %1$s found in database %2$s. You might be lacking the "
|
||||
"necessary privileges to edit this routine."
|
||||
msgstr ""
|
||||
"No se encuentran rutinas con nombre %1$s en la base de datos %2$s. Quizá "
|
||||
"falten los privilegios necesarios para editar esta rutina."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:39
|
||||
#, php-format
|
||||
@ -12041,12 +12041,13 @@ msgid ""
|
||||
"No routine with name %1$s found in database %2$s. You might be lacking the "
|
||||
"necessary privileges to view/export this routine."
|
||||
msgstr ""
|
||||
"No se encuentran rutinas con nombre %1$s en la base de datos %2$s. Quizá "
|
||||
"falten los privilegios necesarios para ver/exportar esta rutina."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:42
|
||||
#, fuzzy, php-format
|
||||
#| msgid "No routine with name %1$s found in database %2$s"
|
||||
#, php-format
|
||||
msgid "No routine with name %1$s found in database %2$s."
|
||||
msgstr "No se encontró rutina con nombre %1$s en la base de datos %2$s"
|
||||
msgstr "No se encontró rutina con nombre %1$s en la base de datos %2$s."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:43
|
||||
msgid "There are no routines to display."
|
||||
@ -12066,16 +12067,13 @@ msgid "trigger"
|
||||
msgstr "disparador"
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:54
|
||||
#, fuzzy
|
||||
#| msgid "You do not have the necessary privileges to create a trigger"
|
||||
msgid "You do not have the necessary privileges to create a trigger."
|
||||
msgstr "No posee los privilegios necesarios para crear un disparador"
|
||||
msgstr "No posee los privilegios necesarios para crear un disparador."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:56
|
||||
#, fuzzy, php-format
|
||||
#| msgid "No trigger with name %1$s found in database %2$s"
|
||||
#, php-format
|
||||
msgid "No trigger with name %1$s found in database %2$s."
|
||||
msgstr "No se encontró disparador con nombre %1$s en la base de datos %2$s"
|
||||
msgstr "No se encontró disparador con nombre %1$s en la base de datos %2$s."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:57
|
||||
msgid "There are no triggers to display."
|
||||
@ -12095,16 +12093,13 @@ msgid "event"
|
||||
msgstr "evento"
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:68
|
||||
#, fuzzy
|
||||
#| msgid "You do not have the necessary privileges to create an event"
|
||||
msgid "You do not have the necessary privileges to create an event."
|
||||
msgstr "No posee los privilegios necesarios para crear un evento"
|
||||
msgstr "No posee los privilegios necesarios para crear un evento."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:70
|
||||
#, fuzzy, php-format
|
||||
#| msgid "No event with name %1$s found in database %2$s"
|
||||
#, php-format
|
||||
msgid "No event with name %1$s found in database %2$s."
|
||||
msgstr "No se encontró evento con nombre %1$s en la base de datos %2$s"
|
||||
msgstr "No se encontró evento con nombre %1$s en la base de datos %2$s."
|
||||
|
||||
#: libraries/rte/rte_words.lib.php:71
|
||||
msgid "There are no events to display."
|
||||
@ -12382,6 +12377,8 @@ msgid ""
|
||||
"Allows user to give to other users or remove from other users privileges "
|
||||
"that user possess on this routine."
|
||||
msgstr ""
|
||||
"Permite al usuario dar o quitar a otros usuarios los permisos que el usuario "
|
||||
"posee en esta rutina."
|
||||
|
||||
#: libraries/server_privileges.lib.php:1042
|
||||
msgid "Allows altering and dropping this routine."
|
||||
@ -12444,6 +12441,8 @@ msgid ""
|
||||
"Allows user to give to other users or remove from other users the privileges "
|
||||
"that user possess yourself."
|
||||
msgstr ""
|
||||
"Permite al usuario dar o quitar a otros usuarios los permisos que el usuario "
|
||||
"posee."
|
||||
|
||||
#: libraries/server_privileges.lib.php:1552
|
||||
msgid "Native MySQL authentication"
|
||||
@ -13949,20 +13948,20 @@ msgstr "Se esperaba un corchete de apertura."
|
||||
#: libraries/sql-parser/src/Statements/InsertStatement.php:227
|
||||
#: libraries/sql-parser/src/Statements/ReplaceStatement.php:165
|
||||
#: libraries/sql-parser/src/Statements/ReplaceStatement.php:193
|
||||
#, fuzzy
|
||||
#| msgid "Unexpected token."
|
||||
msgid "Unexpected keyword."
|
||||
msgstr "Símbolo (token) inesperado."
|
||||
msgstr "Palabra clave inesperada."
|
||||
|
||||
#: libraries/sql-parser/src/Components/CaseExpression.php:202
|
||||
msgid "Unexpected end of CASE expression"
|
||||
msgstr ""
|
||||
msgstr "Final inesperado de expresión CASE"
|
||||
|
||||
#: libraries/sql-parser/src/Components/CreateDefinition.php:227
|
||||
msgid ""
|
||||
"A symbol name was expected! A reserved keyword can not be used as a column "
|
||||
"name without backquotes."
|
||||
msgstr ""
|
||||
"¡Se esperaba un nombre de símbolo! Una palabra reservada no puede usarse "
|
||||
"como nombre de columna sin comillas."
|
||||
|
||||
#: libraries/sql-parser/src/Components/CreateDefinition.php:241
|
||||
msgid "A symbol name was expected!"
|
||||
@ -14010,10 +14009,9 @@ msgid "This option conflicts with \"%1$s\"."
|
||||
msgstr "Esta opción tiene conflictos con \"%1$s\"."
|
||||
|
||||
#: libraries/sql-parser/src/Components/OptionsArray.php:260
|
||||
#, fuzzy, php-format
|
||||
#| msgid "Ending quote %1$s was expected."
|
||||
#, php-format
|
||||
msgid "Value/Expression for the option %1$s was expected"
|
||||
msgstr "Se esperaba terminar la cita %1$s."
|
||||
msgstr "Se esperaba una expresión/valor para la opción %1$s"
|
||||
|
||||
#: libraries/sql-parser/src/Components/RenameOperation.php:101
|
||||
msgid "The old name of the table was expected."
|
||||
@ -14083,20 +14081,16 @@ msgid "Unrecognized keyword."
|
||||
msgstr "Palabra clave no reconocida."
|
||||
|
||||
#: libraries/sql-parser/src/Statement.php:457
|
||||
#, fuzzy
|
||||
#| msgid "Unexpected beginning of statement."
|
||||
msgid "Unexpected ordering of clauses."
|
||||
msgstr "Comienzo inesperado de declaración."
|
||||
msgstr "Orden inesperado de condiciones."
|
||||
|
||||
#: libraries/sql-parser/src/Statements/CreateStatement.php:381
|
||||
msgid "The name of the entity was expected."
|
||||
msgstr "Se esperaba el nombre de la entidad."
|
||||
|
||||
#: libraries/sql-parser/src/Statements/CreateStatement.php:436
|
||||
#, fuzzy
|
||||
#| msgid "Variable name was expected."
|
||||
msgid "A table name was expected."
|
||||
msgstr "Se esperaba el nombre de la variable."
|
||||
msgstr "Se esperaba un nombre de tabla."
|
||||
|
||||
#: libraries/sql-parser/src/Statements/CreateStatement.php:444
|
||||
msgid "At least one column definition was expected."
|
||||
@ -14107,10 +14101,8 @@ msgid "A \"RETURNS\" keyword was expected."
|
||||
msgstr "Se esperaba una palabra \"RETURNS\"."
|
||||
|
||||
#: libraries/sql-parser/src/Statements/DeleteStatement.php:303
|
||||
#, fuzzy
|
||||
#| msgid "This type of clause was previously parsed."
|
||||
msgid "This type of clause is not valid in Multi-table queries."
|
||||
msgstr "Este tipo de cláusula se analizó previamente."
|
||||
msgstr "Este tipo de cláusula no es válida en consultas multi-tabla."
|
||||
|
||||
#: libraries/sql.lib.php:231
|
||||
msgid "Detailed profile"
|
||||
@ -14672,10 +14664,8 @@ msgstr ""
|
||||
"config para utilizarlo."
|
||||
|
||||
#: setup/frames/index.inc.php:132
|
||||
#, fuzzy
|
||||
#| msgid "Configuration saved."
|
||||
msgid "Configuration not saved!"
|
||||
msgstr "Configuración guardada."
|
||||
msgstr "¡Configuración no guardada!"
|
||||
|
||||
#: setup/frames/index.inc.php:147 setup/frames/menu.inc.php:19
|
||||
msgid "Overview"
|
||||
@ -14797,7 +14787,7 @@ msgstr "Datos incorrectos"
|
||||
#: setup/validate.php:30
|
||||
#, php-format
|
||||
msgid "Wrong data or no validation for %s"
|
||||
msgstr ""
|
||||
msgstr "Datos erróneos o sin validación para %s"
|
||||
|
||||
#: tbl_create.php:30 tbl_get_field.php:26
|
||||
#, php-format
|
||||
@ -14859,10 +14849,8 @@ msgid "Table name"
|
||||
msgstr "Nombre de la tabla"
|
||||
|
||||
#: templates/columns_definitions/column_definitions_form.phtml:65
|
||||
#, fuzzy
|
||||
#| msgid "Columns"
|
||||
msgid "column(s)"
|
||||
msgstr "Columnas"
|
||||
msgstr "columna(s)"
|
||||
|
||||
#: templates/columns_definitions/column_definitions_form.phtml:92
|
||||
msgid "Collation:"
|
||||
@ -15599,6 +15587,9 @@ msgid ""
|
||||
"an index on it. Alternatively, you can define an index below, before "
|
||||
"creating the foreign key."
|
||||
msgstr ""
|
||||
"Crear una clave foránea sobre una columna no indexada crearía "
|
||||
"automáticamente un índice en ella. De manera alternativa, puede definir un "
|
||||
"índice más abajo, antes de crear la clave foránea."
|
||||
|
||||
#: templates/table/relation/common_form.phtml:20
|
||||
msgid ""
|
||||
@ -15884,10 +15875,8 @@ msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: url.php:41
|
||||
#, fuzzy
|
||||
#| msgid "Taking you to next step…"
|
||||
msgid "Taking you to the target site."
|
||||
msgstr "Llevándolo al siguiente paso…"
|
||||
msgstr "Llevándolo a la página web destino."
|
||||
|
||||
#: user_password.php:34
|
||||
msgid "You don't have sufficient privileges to be here right now!"
|
||||
|
||||
@ -66,30 +66,19 @@ if (!$config_writable || !$config_readable) {
|
||||
);
|
||||
}
|
||||
//
|
||||
// Check https connection
|
||||
// Https connection warning (check done on the client side)
|
||||
//
|
||||
$is_https = !empty($_SERVER['HTTPS'])
|
||||
&& mb_strtolower($_SERVER['HTTPS']) == 'on';
|
||||
if (!$is_https) {
|
||||
$text = __(
|
||||
'You are not using a secure connection; all data (including potentially '
|
||||
. 'sensitive information, like passwords) is transferred unencrypted!'
|
||||
);
|
||||
|
||||
$text .= ' <a href="#" onclick="window.location.href = \'https:\' + window.location.href.substring(window.location.protocol.length);">';
|
||||
|
||||
// Temporary workaround to use tranlated message in older releases
|
||||
$text .= str_replace(
|
||||
array('[a@%s]', '[/a]'),
|
||||
array('', ''),
|
||||
__(
|
||||
'If your server is also configured to accept HTTPS requests '
|
||||
. 'follow [a@%s]this link[/a] to use a secure connection.'
|
||||
)
|
||||
);
|
||||
$text .= '</a>';
|
||||
PMA_messagesSet('notice', 'no_https', __('Insecure connection'), $text);
|
||||
}
|
||||
$text = __(
|
||||
'You are not using a secure connection; all data (including potentially '
|
||||
. 'sensitive information, like passwords) is transferred unencrypted!'
|
||||
);
|
||||
$text .= ' <a href="#">';
|
||||
$text .= __(
|
||||
'If your server is also configured to accept HTTPS requests '
|
||||
. 'follow this link to use a secure connection.'
|
||||
);
|
||||
$text .= '</a>';
|
||||
PMA_messagesSet('notice', 'no_https', __('Insecure connection'), $text);
|
||||
|
||||
echo '<form id="select_lang" method="post">';
|
||||
echo PMA_URL_getHiddenInputs();
|
||||
|
||||
@ -79,23 +79,18 @@ function PMA_messagesEnd()
|
||||
*/
|
||||
function PMA_messagesShowHtml()
|
||||
{
|
||||
$old_ids = array();
|
||||
foreach ($_SESSION['messages'] as $type => $messages) {
|
||||
foreach ($messages as $id => $msg) {
|
||||
echo '<div class="' , $type , '" id="' , $id , '">'
|
||||
if (! $msg['fresh'] && $type != 'error') {
|
||||
$extra = ' hiddenmessage';
|
||||
} else {
|
||||
$extra = '';
|
||||
}
|
||||
echo '<div class="' , $type, $extra , '" id="' , $id , '">'
|
||||
, '<h4>' , $msg['title'] , '</h4>'
|
||||
, $msg['message'] , '</div>';
|
||||
if (!$msg['fresh'] && $type != 'error') {
|
||||
$old_ids[] = $id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "\n" , '<script type="text/javascript">';
|
||||
foreach ($old_ids as $id) {
|
||||
echo "\nhiddenMessages.push('$id');";
|
||||
}
|
||||
echo "\n</script>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -12,24 +12,29 @@ if (top != self) {
|
||||
// Messages
|
||||
//
|
||||
|
||||
// stores hidden message ids
|
||||
var hiddenMessages = [];
|
||||
|
||||
$(function () {
|
||||
var hidden = hiddenMessages.length;
|
||||
for (var i = 0; i < hidden; i++) {
|
||||
$('#' + hiddenMessages[i]).css('display', 'none');
|
||||
|
||||
if (window.location.protocol === 'https:') {
|
||||
$('#no_https').remove();
|
||||
} else {
|
||||
$('#no_https a').click(function () {
|
||||
var old_location = window.location;
|
||||
window.location.href = 'https:' + old_location.href.substring(old_location.protocol.length);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
if (hidden > 0) {
|
||||
|
||||
var hiddenmessages = $('.hiddenmessage');
|
||||
|
||||
if (hiddenmessages.length > 0) {
|
||||
hiddenmessages.hide();
|
||||
var link = $('#show_hidden_messages');
|
||||
link.click(function (e) {
|
||||
e.preventDefault();
|
||||
for (var i = 0; i < hidden; i++) {
|
||||
$('#' + hiddenMessages[i]).show(500);
|
||||
}
|
||||
hiddenmessages.show();
|
||||
$(this).remove();
|
||||
});
|
||||
link.html(link.html().replace('#MSG_COUNT', hidden));
|
||||
link.html(link.html().replace('#MSG_COUNT', hiddenmessages.length));
|
||||
link.css('display', '');
|
||||
}
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ if [ -n "$GATEWAY_INTERFACE" ] ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$TRAVIS_PHP_VERSION" = "nightly" -o "$TRAVIS_PHP_VERSION" = "hhvm" -o "$TRAVIS_PHP_VERSION" = "7.0" ] ; then
|
||||
if [ "$TRAVIS_PHP_VERSION" = "nightly" -o "$TRAVIS_PHP_VERSION" = "hhvm" -o "$TRAVIS_PHP_VERSION" = "7.0" -o "$TRAVIS_PHP_VERSION" = "7.1" ] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
@ -246,12 +246,12 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'#' => 11,
|
||||
);
|
||||
|
||||
$value2 = array(
|
||||
'sql_text' => 'update sql_text',
|
||||
'#' => 'types2',
|
||||
'#' => 10,
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(1))->method('fetchAssoc')
|
||||
@ -269,10 +269,10 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
$ret = PMA_getJsonForLogDataTypeSlow($start, $end);
|
||||
|
||||
$result_rows = array(
|
||||
array('sql_text' => 'insert sql_text', '#' => 'types'),
|
||||
array('sql_text' => 'update sql_text', '#' => 'types2')
|
||||
array('sql_text' => 'insert sql_text', '#' => 11),
|
||||
array('sql_text' => 'update sql_text', '#' => 10)
|
||||
);
|
||||
$result_sum = array('insert' =>0, 'TOTAL' =>0, 'update' => 0);
|
||||
$result_sum = array('insert' =>11, 'TOTAL' =>21, 'update' => 10);
|
||||
$this->assertEquals(
|
||||
2,
|
||||
$ret['numRows']
|
||||
@ -303,13 +303,13 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'#' => 10,
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
$value2 = array(
|
||||
'sql_text' => 'update sql_text',
|
||||
'#' => 'types2',
|
||||
'#' => 11,
|
||||
'argument' => 'argument3 argument4',
|
||||
);
|
||||
|
||||
@ -331,7 +331,7 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
$value,
|
||||
$value2,
|
||||
);
|
||||
$result_sum = array('argument' =>0, 'TOTAL' =>0, 'argument3' => 0);
|
||||
$result_sum = array('argument' =>10, 'TOTAL' =>21, 'argument3' => 11);
|
||||
|
||||
$this->assertEquals(
|
||||
2,
|
||||
@ -363,7 +363,7 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'#' => 22,
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
@ -402,7 +402,7 @@ class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'#' => 33,
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
|
||||
@ -114,8 +114,7 @@ class PMA_ServerStatusQueries_Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
$upTime = "10h";
|
||||
$this->ServerStatusData->status['Uptime'] = $upTime;
|
||||
$this->ServerStatusData->status['Uptime'] = 36000;
|
||||
$this->ServerStatusData->used_queries = array(
|
||||
"Com_change_db" => "15",
|
||||
"Com_select" => "12",
|
||||
|
||||
@ -152,13 +152,12 @@ class PMA_ServerStatus_Test extends PHPUnit_Framework_TestCase
|
||||
public function testPMAGetHtmlForServerStatus()
|
||||
{
|
||||
//parameters
|
||||
$upTime = "10h";
|
||||
$bytes_received = 100;
|
||||
$bytes_sent = 200;
|
||||
$max_used_conn = 500;
|
||||
$aborted_conn = 200;
|
||||
$conn = 1000;
|
||||
$this->ServerStatusData->status['Uptime'] = $upTime;
|
||||
$this->ServerStatusData->status['Uptime'] = 36000;
|
||||
$this->ServerStatusData->status['Bytes_received'] = $bytes_received;
|
||||
$this->ServerStatusData->status['Bytes_sent'] = $bytes_sent;
|
||||
$this->ServerStatusData->status['Max_used_connections'] = $max_used_conn;
|
||||
@ -178,7 +177,7 @@ class PMA_ServerStatus_Test extends PHPUnit_Framework_TestCase
|
||||
);
|
||||
//updatetime
|
||||
$upTime_html = 'This MySQL server has been running for '
|
||||
. '0 days, 0 hours, 0 minutes and 10h seconds';
|
||||
. '0 days, 10 hours, 0 minutes and 0 seconds';
|
||||
$this->assertContains(
|
||||
$upTime_html,
|
||||
$html
|
||||
|
||||
Loading…
Reference in New Issue
Block a user