Merge branch 'QA_4_7' into STABLE

This commit is contained in:
Isaac Bennetch 2017-05-26 09:34:22 -04:00
commit c3fa81b3e0
134 changed files with 58108 additions and 45647 deletions

View File

@ -1,6 +1,32 @@
phpMyAdmin - ChangeLog
======================
4.7.1 (2017-05-25)
- issue #13132 Always execute tracking queries as controluser
- issue #13125 Focus on SQL editor after inserting field name
- issue #13133 Fixed broken links in setup
- issue #13135 Database list Tooltips: Show wrong value
- issue #13150 Fixed pagination while browsing resuls
- issue #13149 Fixed outbound links in changelog.php
- issue #13146 Do not include devel dependencies in the release
- issue #13144 Do not show New as a database in database dropdown
- issue #13130 Fixed handling of errors in AJAX requests
- issue #13152 Fixed PHP error in case of invalid table preferences
- issue #13154 Fixed PHP error on password change
- issue #13219 Fix Refresh of Process List
- issue #13182 Fix refresh of long queries
- issue #12301 Improved handling of logout with disabled LoginCookieDeleteAll
- issue #13216 Add support for MySQL 8.0 collations
- issue #13218 Fixed rendering of phpMyAdmin logos
- issue #13234 Properly report not working sessions
- issue #13256 Fixed password check on server replication
- issue #13252 Fixed grid editing time column
- issue #13258 Fixed detection of Amazon RDS
- issue #13241 Redirect user to last page that has any tables to display
- issue #13266 Fix link to User accounts overview page
- issue #13274 Fix error in query builder
- issue #13177 Grid editing repeats action after error
4.7.0 (2017-03-28)
- patch #12233 [Display] Improve message when renaming database to same name
- issue #6146 Log authentication attempts to syslog

2
README
View File

@ -1,7 +1,7 @@
phpMyAdmin - Readme
===================
Version 4.7.0
Version 4.7.1
A web interface for MySQL and MariaDB.

View File

@ -135,7 +135,7 @@ $replaces = array(
=> '\\1<b>\\2</b>',
// Links target and rel
'/a href="/' => 'a target="_blank" rel="noopener noreferrer" href="/'
'/a href="/' => 'a target="_blank" rel="noopener noreferrer" href="'
);

View File

@ -1,17 +1,9 @@
{
"name": "phpmyadmin/phpmyadmin",
"type": "application",
"type": "project",
"description": "MySQL web administration tool",
"keywords": ["phpmyadmin","mysql","web"],
"homepage": "https://www.phpmyadmin.net/",
"license": "GPL-2.0+",
"authors": [
{
"name": "The phpMyAdmin Team",
"email": "developers@phpmyadmin.net",
"homepage": "https://www.phpmyadmin.net/team/"
}
],
"support": {
"forum": "https://www.phpmyadmin.net/support/",
"issues": "https://github.com/phpmyadmin/phpmyadmin/issues",
@ -19,12 +11,26 @@
"docs": "https://docs.phpmyadmin.net/",
"source": "https://github.com/phpmyadmin/phpmyadmin"
},
"license": "GPL-2.0",
"authors": [
{
"name": "The phpMyAdmin Team",
"email": "developers@phpmyadmin.net",
"homepage": "https://www.phpmyadmin.net/team/"
}
],
"non-feature-branches": ["RELEASE_.*"],
"autoload": {
"psr-4": {
"PMA\\": "./"
}
},
"repositories": [
{
"type": "composer",
"url": "https://www.phpmyadmin.net"
}
],
"require": {
"php": ">=5.5.0",
"ext-mbstring": "*",
@ -56,11 +62,5 @@
"phpunit/phpunit-selenium": "~1.2",
"squizlabs/php_codesniffer": "2.*",
"phpmyadmin/coding-standard": ">=0.1.0"
},
"repositories": [
{
"type": "composer",
"url": "https://www.phpmyadmin.net"
}
]
}
}

198
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "721eeba882f5a5acc3e1beb732d586f9",
"hash": "a4b4de64e919bca5571e729751b4a58b",
"content-hash": "96b5f978d17e459021559b9733adf6c0",
"packages": [
{
@ -54,24 +54,25 @@
},
{
"name": "phpmyadmin/motranslator",
"version": "3.0",
"version": "3.2",
"source": {
"type": "git",
"url": "https://github.com/phpmyadmin/motranslator.git",
"reference": "b5d5f9a0c1f6ed1127e7b766b3b506766becbb89"
"reference": "c8f913c75f8b52310d11f291c9748819763f6c02"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpmyadmin/motranslator/zipball/b5d5f9a0c1f6ed1127e7b766b3b506766becbb89",
"reference": "b5d5f9a0c1f6ed1127e7b766b3b506766becbb89",
"url": "https://api.github.com/repos/phpmyadmin/motranslator/zipball/c8f913c75f8b52310d11f291c9748819763f6c02",
"reference": "c8f913c75f8b52310d11f291c9748819763f6c02",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"symfony/expression-language": "^3.1 || ^2.8"
"symfony/expression-language": "^3.2 || ^2.8"
},
"require-dev": {
"phpunit/phpunit": "~4.8 || ~5.1"
"phpunit/php-code-coverage": "*",
"phpunit/phpunit": "~4.8 || ~5.7"
},
"type": "library",
"autoload": {
@ -98,27 +99,28 @@
"mo",
"translator"
],
"time": "2017-01-23 11:21:12"
"time": "2017-05-23 07:30:40"
},
{
"name": "phpmyadmin/shapefile",
"version": "2.0",
"version": "2.1",
"source": {
"type": "git",
"url": "https://github.com/phpmyadmin/shapefile.git",
"reference": "ee3413bda4cfc5683f088c2f232aab5b27339781"
"reference": "e23b767f2a81f61fee3fc09fc062879985f3e224"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpmyadmin/shapefile/zipball/ee3413bda4cfc5683f088c2f232aab5b27339781",
"reference": "ee3413bda4cfc5683f088c2f232aab5b27339781",
"url": "https://api.github.com/repos/phpmyadmin/shapefile/zipball/e23b767f2a81f61fee3fc09fc062879985f3e224",
"reference": "e23b767f2a81f61fee3fc09fc062879985f3e224",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~5.2 || ~4.8"
"phpunit/php-code-coverage": "*",
"phpunit/phpunit": "~4.8 || ~5.7"
},
"suggest": {
"ext-dbase": "For dbf files parsing"
@ -151,20 +153,20 @@
"shape",
"shp"
],
"time": "2017-01-23 11:52:35"
"time": "2017-05-15 08:31:47"
},
{
"name": "phpmyadmin/sql-parser",
"version": "v4.1.2",
"version": "v4.1.5",
"source": {
"type": "git",
"url": "https://github.com/phpmyadmin/sql-parser.git",
"reference": "eb359a59f86578ce7dd0690f7403d1a69859ac89"
"reference": "2ccd17dc14b1e57376e58aebcd46831dc7c25de5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/eb359a59f86578ce7dd0690f7403d1a69859ac89",
"reference": "eb359a59f86578ce7dd0690f7403d1a69859ac89",
"url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/2ccd17dc14b1e57376e58aebcd46831dc7c25de5",
"reference": "2ccd17dc14b1e57376e58aebcd46831dc7c25de5",
"shasum": ""
},
"require": {
@ -175,8 +177,8 @@
"phpmyadmin/motranslator": "<3.0"
},
"require-dev": {
"phpunit/php-code-coverage": "~2.0 || ~3.0",
"phpunit/phpunit": "~4.8 || ~5.1"
"phpunit/php-code-coverage": "*",
"phpunit/phpunit": "~4.8 || ~5.7"
},
"suggest": {
"phpmyadmin/motranslator": "Translate messages to your favorite locale"
@ -210,20 +212,20 @@
"parser",
"sql"
],
"time": "2017-02-20 07:22:58"
"time": "2017-05-15 08:28:56"
},
{
"name": "phpseclib/phpseclib",
"version": "2.0.4",
"version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "ab8028c93c03cc8d9c824efa75dc94f1db2369bf"
"reference": "f8dd0e18d2328c447dd4190fecd11ef52680d968"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/ab8028c93c03cc8d9c824efa75dc94f1db2369bf",
"reference": "ab8028c93c03cc8d9c824efa75dc94f1db2369bf",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f8dd0e18d2328c447dd4190fecd11ef52680d968",
"reference": "f8dd0e18d2328c447dd4190fecd11ef52680d968",
"shasum": ""
},
"require": {
@ -302,7 +304,7 @@
"x.509",
"x509"
],
"time": "2016-10-04 00:57:04"
"time": "2017-05-08 05:58:35"
},
{
"name": "psr/cache",
@ -399,16 +401,16 @@
},
{
"name": "symfony/cache",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
"reference": "38ead350d7c27b08b8da9401cbdbea8121f929a4"
"reference": "ce81ce67baa387c556d03f389fb3c9efc11286aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/38ead350d7c27b08b8da9401cbdbea8121f929a4",
"reference": "38ead350d7c27b08b8da9401cbdbea8121f929a4",
"url": "https://api.github.com/repos/symfony/cache/zipball/ce81ce67baa387c556d03f389fb3c9efc11286aa",
"reference": "ce81ce67baa387c556d03f389fb3c9efc11286aa",
"shasum": ""
},
"require": {
@ -462,20 +464,20 @@
"caching",
"psr6"
],
"time": "2017-03-08 12:16:26"
"time": "2017-04-12 14:14:23"
},
{
"name": "symfony/expression-language",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/expression-language.git",
"reference": "8f7d3a35015831dc661713f403b0a0dd34a51baf"
"reference": "b43eea00de866786cc2fec2b86c7f6d22c6e47d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/8f7d3a35015831dc661713f403b0a0dd34a51baf",
"reference": "8f7d3a35015831dc661713f403b0a0dd34a51baf",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/b43eea00de866786cc2fec2b86c7f6d22c6e47d8",
"reference": "b43eea00de866786cc2fec2b86c7f6d22c6e47d8",
"shasum": ""
},
"require": {
@ -512,7 +514,7 @@
],
"description": "Symfony ExpressionLanguage Component",
"homepage": "https://symfony.com",
"time": "2017-02-24 13:58:52"
"time": "2017-05-01 14:55:58"
},
{
"name": "tecnickcom/tcpdf",
@ -585,16 +587,16 @@
"source": {
"type": "git",
"url": "https://github.com/codacy/php-codacy-coverage.git",
"reference": "c0b3a02883bd80f0955c2478193304ddbef23e56"
"reference": "194b83838c1c08ad7871fa471c10369f1c37717e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/codacy/php-codacy-coverage/zipball/c0b3a02883bd80f0955c2478193304ddbef23e56",
"reference": "c0b3a02883bd80f0955c2478193304ddbef23e56",
"url": "https://api.github.com/repos/codacy/php-codacy-coverage/zipball/194b83838c1c08ad7871fa471c10369f1c37717e",
"reference": "194b83838c1c08ad7871fa471c10369f1c37717e",
"shasum": ""
},
"require": {
"gitonomy/gitlib": "~0.1",
"gitonomy/gitlib": ">=1.0",
"php": ">=5.3.3",
"symfony/console": "~2.5|~3.0"
},
@ -622,7 +624,7 @@
],
"description": "Sends PHP test coverage information to Codacy.",
"homepage": "https://github.com/codacy/php-codacy-coverage",
"time": "2017-03-09 18:29:51"
"time": "2017-04-05 13:51:33"
},
{
"name": "doctrine/instantiator",
@ -680,16 +682,16 @@
},
{
"name": "gitonomy/gitlib",
"version": "v0.1.8",
"version": "v1.0.2",
"source": {
"type": "git",
"url": "https://github.com/gitonomy/gitlib.git",
"reference": "f575b8f7da917ade7890c6aa705fa22545690389"
"reference": "b4b916423a2e2da631cf3b3787beb9386a7b253c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/gitonomy/gitlib/zipball/f575b8f7da917ade7890c6aa705fa22545690389",
"reference": "f575b8f7da917ade7890c6aa705fa22545690389",
"url": "https://api.github.com/repos/gitonomy/gitlib/zipball/b4b916423a2e2da631cf3b3787beb9386a7b253c",
"reference": "b4b916423a2e2da631cf3b3787beb9386a7b253c",
"shasum": ""
},
"require": {
@ -730,7 +732,7 @@
],
"description": "Library for accessing git",
"homepage": "http://gitonomy.com",
"time": "2015-12-01 22:25:57"
"time": "2016-05-11 08:25:40"
},
{
"name": "guzzle/guzzle",
@ -1629,23 +1631,23 @@
},
{
"name": "sebastian/diff",
"version": "1.4.1",
"version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"php": "^5.3.3 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
"type": "library",
"extra": {
@ -1677,7 +1679,7 @@
"keywords": [
"diff"
],
"time": "2015-12-08 07:14:41"
"time": "2017-05-22 07:24:03"
},
{
"name": "sebastian/environment",
@ -1937,16 +1939,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "2.8.1",
"version": "2.9.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "d7cf0d894e8aa4c73712ee4a331cc1eaa37cdc7d"
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/d7cf0d894e8aa4c73712ee4a331cc1eaa37cdc7d",
"reference": "d7cf0d894e8aa4c73712ee4a331cc1eaa37cdc7d",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
"shasum": ""
},
"require": {
@ -2011,20 +2013,20 @@
"phpcs",
"standards"
],
"time": "2017-03-01 22:17:45"
"time": "2017-05-22 02:43:20"
},
{
"name": "symfony/config",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2"
"reference": "e5533fcc0b3dd377626153b2852707878f363728"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/741d6d4cd1414d67d48eb71aba6072b46ba740c2",
"reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2",
"url": "https://api.github.com/repos/symfony/config/zipball/e5533fcc0b3dd377626153b2852707878f363728",
"reference": "e5533fcc0b3dd377626153b2852707878f363728",
"shasum": ""
},
"require": {
@ -2067,20 +2069,20 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
"time": "2017-03-01 18:18:25"
"time": "2017-04-12 14:13:17"
},
{
"name": "symfony/console",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd"
"reference": "a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/28fb243a2b5727774ca309ec2d92da240f1af0dd",
"reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd",
"url": "https://api.github.com/repos/symfony/console/zipball/a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38",
"reference": "a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38",
"shasum": ""
},
"require": {
@ -2130,20 +2132,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2017-03-06 19:30:27"
"time": "2017-04-26 01:39:17"
},
{
"name": "symfony/debug",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a"
"reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/b90c9f91ad8ac37d9f114e369042d3226b34dc1a",
"reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a",
"url": "https://api.github.com/repos/symfony/debug/zipball/fd6eeee656a5a7b384d56f1072243fe1c0e81686",
"reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686",
"shasum": ""
},
"require": {
@ -2187,20 +2189,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2017-02-18 17:28:00"
"time": "2017-04-19 20:17:50"
},
{
"name": "symfony/event-dispatcher",
"version": "v2.8.18",
"version": "v2.8.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0"
"reference": "7fc8e2b4118ff316550596357325dfd92a51f531"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bb4ec47e8e109c1c1172145732d0aa468d967cd0",
"reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7fc8e2b4118ff316550596357325dfd92a51f531",
"reference": "7fc8e2b4118ff316550596357325dfd92a51f531",
"shasum": ""
},
"require": {
@ -2247,20 +2249,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2017-02-21 08:33:48"
"time": "2017-04-26 16:56:54"
},
{
"name": "symfony/filesystem",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "bc0f17bed914df2cceb989972c3b996043c4da4a"
"reference": "040651db13cf061827a460cc10f6e36a445c45b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/bc0f17bed914df2cceb989972c3b996043c4da4a",
"reference": "bc0f17bed914df2cceb989972c3b996043c4da4a",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/040651db13cf061827a460cc10f6e36a445c45b4",
"reference": "040651db13cf061827a460cc10f6e36a445c45b4",
"shasum": ""
},
"require": {
@ -2296,7 +2298,7 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2017-03-06 19:30:27"
"time": "2017-04-12 14:13:17"
},
{
"name": "symfony/polyfill-mbstring",
@ -2359,16 +2361,16 @@
},
{
"name": "symfony/process",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892"
"reference": "999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/68bfa8c83f24c0ac04ea7193bcdcda4519f41892",
"reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892",
"url": "https://api.github.com/repos/symfony/process/zipball/999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0",
"reference": "999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0",
"shasum": ""
},
"require": {
@ -2404,20 +2406,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2017-03-04 12:23:14"
"time": "2017-04-12 14:13:17"
},
{
"name": "symfony/stopwatch",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
"reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75"
"reference": "5a0105afb670dbd38f521105c444de1b8e10cfe3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/c5ee0f8650c84b4d36a5f76b3b504233feaabf75",
"reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a0105afb670dbd38f521105c444de1b8e10cfe3",
"reference": "5a0105afb670dbd38f521105c444de1b8e10cfe3",
"shasum": ""
},
"require": {
@ -2453,20 +2455,20 @@
],
"description": "Symfony Stopwatch Component",
"homepage": "https://symfony.com",
"time": "2017-02-18 17:28:00"
"time": "2017-04-12 14:13:17"
},
{
"name": "symfony/yaml",
"version": "v3.2.6",
"version": "v3.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a"
"reference": "acec26fcf7f3031e094e910b94b002fa53d4e4d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a",
"reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a",
"url": "https://api.github.com/repos/symfony/yaml/zipball/acec26fcf7f3031e094e910b94b002fa53d4e4d6",
"reference": "acec26fcf7f3031e094e910b94b002fa53d4e4d6",
"shasum": ""
},
"require": {
@ -2508,7 +2510,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2017-03-07 16:47:02"
"time": "2017-05-01 14:55:58"
},
{
"name": "webmozart/assert",

View File

@ -51,7 +51,7 @@ copyright = u'2012 - 2017, The phpMyAdmin devel team'
# built documents.
#
# The short X.Y version.
version = '4.7.0'
version = '4.7.1'
# The full version, including alpha/beta/rc tags.
release = version

View File

@ -3214,6 +3214,13 @@ Developer
Enable to let server present itself as demo server.
This is used for `phpMyAdmin demo server <https://www.phpmyadmin.net/try/>`_.
It currently changes following behavior:
* There is welcome message on the main page.
* There is footer information about demo server and used git revision.
* The setup script is enabled even with existing configuration.
* The setup does not try to connect to the MySQL server.
.. _config-examples:
Examples

View File

@ -506,7 +506,6 @@ Following people have contributed to translation of phpMyAdmin:
* Albert Song <albb0920\_at\_gmail.com>
* Chien Wei Lin <cwlin0416\_at\_gmail.com>
* LNDDYL <lnddyl\_at\_outlook.com>
* Peter Dave Hello <xs910203\_at\_gmail.com>

View File

@ -111,13 +111,13 @@ You can clone current phpMyAdmin source from
git clone https://github.com/phpmyadmin/phpmyadmin.git
Additionally you need to install dependencies using `Composer tool`_:
Additionally you need to install dependencies using the `Composer tool`_:
.. code-block:: sh
composer update
If you do not intend to develop, you can skip installation of developer tools
If you do not intend to develop, you can skip the installation of developer tools
by invoking:
.. code-block:: sh
@ -130,11 +130,24 @@ by invoking:
Installing using Composer
+++++++++++++++++++++++++
You can install phpMyAdmin using `Composer tool`_, however it's currently not
available in the default `Packagist`_ repository due to its technical
limitations.
You can install phpMyAdmin using the `Composer tool`_, since 4.7.0 the releases
are automatically mirrored to the default `Packagist`_ repository.
The installation is possible by adding our own repository
.. note::
The content of the Composer repository is automatically generated
separately from the releases, so the content doesn't have to be
100% same as when you download the tarball. There should be no
functional differences though.
To install phpMyAdmin simply run:
.. code-block:: sh
composer create-project phpmyadmin/phpmyadmin
Alternatively you can use our own composer repository, which contains
the release tarballs and is available at
<https://www.phpmyadmin.net/packages.json>:
.. code-block:: sh
@ -153,11 +166,11 @@ download it using:
docker pull phpmyadmin/phpmyadmin
The phpMyAdmin server will be executed on port 80. It supports several ways of
The phpMyAdmin server will listen on port 80. It supports several ways of
configuring the link to the database server, either by Docker's link feature
by linking your database container to ``db`` for phpMyAdmin (by specifying
``--link your_db_host:db``) or by environment variables (in this case it's up
to you to setup networking in Docker to allow phpMyAdmin container to access
to you to set up networking in Docker to allow the phpMyAdmin container to access
the database container over network).
.. _docker-vars:
@ -169,7 +182,7 @@ You can configure several phpMyAdmin features using environment variables:
.. envvar:: PMA_ARBITRARY
Allows you to enter database server hostname on login form.
Allows you to enter a database server hostname on login form.
.. seealso:: :config:option:`$cfg['AllowArbitraryServer']`
@ -181,19 +194,19 @@ You can configure several phpMyAdmin features using environment variables:
.. envvar:: PMA_HOSTS
Comma separated host names or IP addresses of the database servers to use.
Comma-separated host names or IP addresses of the database servers to use.
.. note:: Used only if :envvar:`PMA_HOST` is empty.
.. envvar:: PMA_VERBOSE
Verbose name the database server.
Verbose name of the database server.
.. seealso:: :config:option:`$cfg['Servers'][$i]['verbose']`
.. envvar:: PMA_VERBOSES
Comma separated verbose name the database servers.
Comma-separated verbose name of the database servers.
.. note:: Used only if :envvar:`PMA_VERBOSE` is empty.
@ -207,7 +220,13 @@ You can configure several phpMyAdmin features using environment variables:
.. envvar:: PMA_PORT
Port of the databse server to use.
Port of the database server to use.
.. envvar:: PMA_PORTS
Comma-separated ports of the database server to use.
.. note:: Used only if :envvar:`PMA_PORT` is empty.
.. envvar:: PMA_ABSOLUTE_URI
@ -221,9 +240,9 @@ By default, :ref:`cookie` is used, but if :envvar:`PMA_USER` and
.. note::
The credentials you need to login are stored in the MySQL server, in case
The credentials you need to log in are stored in the MySQL server, in case
of Docker image there are various ways to set it (for example
:samp:`MYSQL_ROOT_PASSWORD` when starting MySQL container). Please check
:samp:`MYSQL_ROOT_PASSWORD` when starting the MySQL container). Please check
documentation for `MariaDB container <https://hub.docker.com/r/_/mariadb/>`_
or `MySQL container <https://hub.docker.com/r/_/mysql/>`_.
@ -233,9 +252,9 @@ Customizing configuration
-------------------------
Additionally configuration can be tweaked by :file:`/etc/phpmyadmin/config.user.inc.php`. If
this file exists, it will be loaded after configuration generated from above
this file exists, it will be loaded after configuration is generated from above
environment variables, so you can override any configuration variable. This
configuraiton can be added as a volume when invoking docker using
configuration can be added as a volume when invoking docker using
`-v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php` parameters.
Note that the supplied configuration file is applied after :ref:`docker-vars`,
@ -257,7 +276,7 @@ configuration file:
Docker Volumes
--------------
You can use following volumes to customise image behavior:
You can use following volumes to customize image behavior:
:file:`/etc/phpmyadmin/config.user.inc.php`
@ -266,12 +285,12 @@ You can use following volumes to customise image behavior:
:file:`/sessions/`
Directory where PHP sessions are stored. You might want to share this
for example when uswing :ref:`auth_signon`.
for example when using :ref:`auth_signon`.
Docker Examples
---------------
To connect phpMyAdmin to given server use:
To connect phpMyAdmin to a given server use:
.. code-block:: sh
@ -305,7 +324,7 @@ Using docker-compose
--------------------
Alternatively you can also use docker-compose with the docker-compose.yml from
<https://github.com/phpmyadmin/docker>. This will run phpMyAdmin with
<https://github.com/phpmyadmin/docker>. This will run phpMyAdmin with an
arbitrary server - allowing you to specify MySQL/MariaDB server on login page.
.. code-block:: sh
@ -315,8 +334,8 @@ arbitrary server - allowing you to specify MySQL/MariaDB server on login page.
Customizing configuration file using docker-compose
---------------------------------------------------
You can use external file to customize phpMyAdmin configuration and pass it
using volumes directive:
You can use an external file to customize phpMyAdmin configuration and pass it
using the volumes directive:
.. code-block:: yaml

View File

@ -5,6 +5,7 @@
*
* @package PhpMyAdmin
*/
use PMA\libraries\Message;
use PMA\libraries\Response;
use PMA\libraries\RecentFavoriteTable;
use PMA\libraries\URL;
@ -110,6 +111,12 @@ if (! empty($message)) {
echo PMA\libraries\Util::getMessage($message);
unset($message);
}
if (isset($_SESSION['partial_logout'])) {
Message::success(
__('You were logged out from one server, to logout completely from phpMyAdmin, you need to logout from all servers.')
)->display();
unset($_SESSION['partial_logout']);
}
$common_url_query = URL::getCommon();
$mysql_cur_user_and_host = '';

View File

@ -781,7 +781,11 @@ $(document).on('submit', 'form', AJAX.requestHandler);
* (e.g: 500 - Internal server error)
*/
$(document).ajaxError(function (event, request, settings) {
if (request.status !== 0) { // Don't handle aborted requests
if (AJAX._debug) {
console.log('AJAX error: status=' + request.status + ', text=' + request.statusText);
}
// Don't handle aborted requests
if (request.status !== 0 || request.statusText !== 'abort') {
var errorCode = PMA_sprintf(PMA_messages.strErrorCode, request.status);
var errorText = PMA_sprintf(PMA_messages.strErrorText, request.statusText);
PMA_ajaxShowMessage(
@ -793,5 +797,6 @@ $(document).ajaxError(function (event, request, settings) {
false
);
AJAX.active = false;
AJAX.xhr = null;
}
});

View File

@ -189,17 +189,15 @@ var PMA_console = {
if (ajaxOptions.dataType && ajaxOptions.dataType.indexOf('json') != -1) {
return;
}
if (xhr.status !== 200) {
return;
}
try {
var data = JSON.parse(xhr.responseText);
PMA_console.ajaxCallback(data);
} catch (e) {
console.trace();
console.log("Invalid JSON!" + e.message);
if (AJAX.xhr && AJAX.xhr.status === 0 && AJAX.xhr.statusText !== 'abort') {
PMA_ajaxShowMessage($('<div />',{'class':'error','html':PMA_messages.strRequestFailed+' ( '+escapeHtml(AJAX.xhr.statusText)+' )'}));
AJAX.active = false;
AJAX.xhr = null;
}
console.log("Failed to parse JSON: " + e.message);
}
});

View File

@ -153,7 +153,7 @@ function PMA_addDatepicker($this_element, type, options)
else if (type == "time") {
$this_element.timepicker($.extend(defaultOptions, options));
// Add a tip regarding entering MySQL allowed-values for TIME data-type
PMA_tooltip($this_element, 'input', PMA_messages.strMysqlAllowedValuesTip);
PMA_tooltip($this_element, 'input', PMA_messages.strMysqlAllowedValuesTipTime);
}
}
@ -1290,12 +1290,12 @@ function insertValueQuery()
/* CodeMirror support */
if (codemirror_editor) {
codemirror_editor.replaceSelection(columnsList);
codemirror_editor.focus();
//IE support
} else if (document.selection) {
myQuery.focus();
var sel = document.selection.createRange();
sel.text = columnsList;
document.sqlform.insert.focus();
}
//MOZILLA/NETSCAPE support
else if (document.sqlform.sql_query.selectionStart || document.sqlform.sql_query.selectionStart == "0") {
@ -1304,6 +1304,7 @@ function insertValueQuery()
var SqlString = document.sqlform.sql_query.value;
myQuery.value = SqlString.substring(0, startPos) + columnsList + SqlString.substring(endPos, SqlString.length);
myQuery.focus();
} else {
myQuery.value += columnsList;
}

View File

@ -2079,7 +2079,8 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi
// hide edit cell if the click is not fromDat edit area
if ($(e.target).parents().index($(g.cEdit)) == -1 &&
!$(e.target).parents('.ui-datepicker-header').length &&
!$('.browse_foreign_modal.ui-dialog:visible').length
!$('.browse_foreign_modal.ui-dialog:visible').length &&
!$(e.target).hasClass('error')
) {
g.hideEditCell();
}

View File

@ -239,237 +239,358 @@ class Charsets
*/
public static function getCollationDescr($collation)
{
if ($collation == 'binary') {
return __('Binary');
}
$parts = explode('_', $collation);
if (count($parts) == 1) {
$parts[1] = 'general';
} elseif ($parts[1] == 'ci' || $parts[1] == 'cs') {
$parts[2] = $parts[1];
$parts[1] = 'general';
}
$descr = '';
switch ($parts[1]) {
case 'bulgarian':
$descr = __('Bulgarian');
break;
case 'chinese':
if ($parts[0] == 'gb2312' || $parts[0] == 'gbk') {
$descr = __('Simplified Chinese');
} elseif ($parts[0] == 'big5') {
$descr = __('Traditional Chinese');
$name = __('Unknonwn');
$variant = null;
$suffixes = array();
$unicode = false;
$unknown = false;
$level = 0;
foreach ($parts as $part) {
if ($level == 0) {
/* Next will be language */
$level = 1;
/* First should be charset */
switch ($part) {
case 'binary':
$name = _pgettext('Collation', 'Binary');
break;
// Unicode charsets
case 'utf8mb4':
$variant = 'UCA 4.0.0';
// Fall through to other unicode
case 'ucs2':
case 'utf8':
case 'utf16':
case 'utf16le':
case 'utf16be':
case 'utf32':
$name = _pgettext('Collation', 'Unicode');
$unicode = true;
break;
// West European charsets
case 'ascii':
case 'cp850':
case 'dec8':
case 'hp8':
case 'latin1':
case 'macroman':
$name = _pgettext('Collation', 'West European');
break;
// Central European charsets
case 'cp1250':
case 'cp852':
case 'latin2':
case 'macce':
$name = _pgettext('Collation', 'Central European');
break;
// Russian charsets
case 'cp866':
case 'koi8r':
$name = _pgettext('Collation', 'Russian');
break;
// Simplified Chinese charsets
case 'gb2312':
case 'gbk':
$name = _pgettext('Collation', 'Simplified Chinese');
break;
// Japanese charsets
case 'sjis':
case 'ujis':
case 'cp932':
case 'eucjpms':
$name = _pgettext('Collation', 'Japanese');
break;
// Baltic charsets
case 'cp1257':
case 'latin7':
$name = _pgettext('Collation', 'Baltic');
break;
// Other
case 'armscii8':
case 'armscii':
$name = _pgettext('Collation', 'Armenian');
break;
case 'big5':
$name = _pgettext('Collation', 'Traditional Chinese');
break;
case 'cp1251':
$name = _pgettext('Collation', 'Cyrillic');
break;
case 'cp1256':
$name = _pgettext('Collation', 'Arabic');
break;
case 'euckr':
$name = _pgettext('Collation', 'Korean');
break;
case 'hebrew':
$name = _pgettext('Collation', 'Hebrew');
break;
case 'geostd8':
$name = _pgettext('Collation', 'Georgian');
break;
case 'greek':
$name = _pgettext('Collation', 'Greek');
break;
case 'keybcs2':
$name = _pgettext('Collation', 'Czech-Slovak');
break;
case 'koi8u':
$name = _pgettext('Collation', 'Ukrainian');
break;
case 'latin5':
$name = _pgettext('Collation', 'Turkish');
break;
case 'swe7':
$name = _pgettext('Collation', 'Swedish');
break;
case 'tis620':
$name = _pgettext('Collation', 'Thai');
break;
default:
$name = _pgettext('Collation', 'Unknown');
$unknown = true;
break;
}
continue;
}
break;
case 'ci':
$descr = __('case-insensitive');
break;
case 'cs':
$descr = __('case-sensitive');
break;
case 'croatian':
$descr = __('Croatian');
break;
case 'czech':
$descr = __('Czech');
break;
case 'danish':
$descr = __('Danish');
break;
case 'english':
$descr = __('English');
break;
case 'esperanto':
$descr = __('Esperanto');
break;
case 'estonian':
$descr = __('Estonian');
break;
case 'german1':
$descr = __('German') . ' (' . __('dictionary') . ')';
break;
case 'german2':
$descr = __('German') . ' (' . __('phone book') . ')';
break;
case 'hungarian':
$descr = __('Hungarian');
break;
case 'icelandic':
$descr = __('Icelandic');
break;
case 'japanese':
$descr = __('Japanese');
break;
case 'latvian':
$descr = __('Latvian');
break;
case 'lithuanian':
$descr = __('Lithuanian');
break;
case 'korean':
$descr = __('Korean');
break;
case 'myanmar':
$descr = __('Burmese');
break;
case 'persian':
$descr = __('Persian');
break;
case 'polish':
$descr = __('Polish');
break;
case 'roman':
$descr = __('West European');
break;
case 'romanian':
$descr = __('Romanian');
break;
case 'sinhala':
$descr = __('Sinhalese');
break;
case 'slovak':
$descr = __('Slovak');
break;
case 'slovenian':
$descr = __('Slovenian');
break;
case 'spanish':
$descr = __('Spanish');
break;
case 'spanish2':
$descr = __('Traditional Spanish');
break;
case 'swedish':
$descr = __('Swedish');
break;
case 'thai':
$descr = __('Thai');
break;
case 'turkish':
$descr = __('Turkish');
break;
case 'ukrainian':
$descr = __('Ukrainian');
break;
case 'unicode':
$descr = __('Unicode') . ' (' . __('multilingual') . ')';
break;
case 'vietnamese':
$descr = __('Vietnamese');
break;
/** @noinspection PhpMissingBreakStatementInspection */
case 'bin':
$is_bin = true;
// no break; statement here, continuing with 'general' section:
case 'general':
switch ($parts[0]) {
// Unicode charsets
case 'ucs2':
case 'utf8':
case 'utf16':
case 'utf16le':
case 'utf16be':
case 'utf32':
case 'utf8mb4':
$descr = __('Unicode') . ' (' . __('multilingual') . ')';
break;
// West European charsets
case 'ascii':
case 'cp850':
case 'dec8':
case 'hp8':
case 'latin1':
case 'macroman':
$descr = __('West European') . ' (' . __('multilingual') . ')';
break;
// Central European charsets
case 'cp1250':
case 'cp852':
case 'latin2':
case 'macce':
$descr = __('Central European') . ' (' . __('multilingual') . ')';
break;
// Russian charsets
case 'cp866':
case 'koi8r':
$descr = __('Russian');
break;
// Simplified Chinese charsets
case 'gb2312':
case 'gbk':
$descr = __('Simplified Chinese');
break;
// Japanese charsets
case 'sjis':
case 'ujis':
case 'cp932':
case 'eucjpms':
$descr = __('Japanese');
break;
// Baltic charsets
case 'cp1257':
case 'latin7':
$descr = __('Baltic') . ' (' . __('multilingual') . ')';
break;
// Other
case 'armscii8':
case 'armscii':
$descr = __('Armenian');
break;
case 'big5':
$descr = __('Traditional Chinese');
break;
case 'cp1251':
$descr = __('Cyrillic') . ' (' . __('multilingual') . ')';
break;
case 'cp1256':
$descr = __('Arabic');
break;
case 'euckr':
$descr = __('Korean');
break;
case 'hebrew':
$descr = __('Hebrew');
break;
case 'geostd8':
$descr = __('Georgian');
break;
case 'greek':
$descr = __('Greek');
break;
case 'keybcs2':
$descr = __('Czech-Slovak');
break;
case 'koi8u':
$descr = __('Ukrainian');
break;
case 'latin5':
$descr = __('Turkish');
break;
case 'swe7':
$descr = __('Swedish');
break;
case 'tis620':
$descr = __('Thai');
break;
default:
$descr = __('unknown');
break;
if ($level == 1) {
/* Next will be variant unless changed later */
$level = 4;
/* Locale name or code */
$found = true;
switch ($part) {
case 'general':
break;
case 'bulgarian':
case 'bg':
$name = _pgettext('Collation', 'Bulgarian');
break;
case 'chinese':
case 'cn':
if ($unicode) {
$name = _pgettext('Collation', 'Chinese');
}
break;
case 'croatian':
case 'hr':
$name = _pgettext('Collation', 'Croatian');
break;
case 'czech':
case 'cs':
$name = _pgettext('Collation', 'Czech');
break;
case 'danish':
case 'da':
$name = _pgettext('Collation', 'Danish');
break;
case 'english':
case 'en':
$name = _pgettext('Collation', 'English');
break;
case 'esperanto':
case 'eo':
$name = _pgettext('Collation', 'Esperanto');
break;
case 'estonian':
case 'et':
$name = _pgettext('Collation', 'Estonian');
break;
case 'german1':
$name = _pgettext('Collation', 'German (dictionary order)');
break;
case 'german2':
$name = _pgettext('Collation', 'German (phone book order)');
break;
case 'german':
case 'de':
/* Name is set later */
$level = 2;
break;
case 'hungarian':
case 'hu':
$name = _pgettext('Collation', 'Hungarian');
break;
case 'icelandic':
case 'is':
$name = _pgettext('Collation', 'Icelandic');
break;
case 'japanese':
case 'ja':
$name = _pgettext('Collation', 'Japanese');
break;
case 'la':
$name = _pgettext('Collation', 'Classical Latin');
break;
case 'latvian':
case 'lv':
$name = _pgettext('Collation', 'Latvian');
break;
case 'lithuanian':
case 'lt':
$name = _pgettext('Collation', 'Lithuanian');
break;
case 'korean':
case 'ko':
$name = _pgettext('Collation', 'Korean');
break;
case 'myanmar':
case 'my':
$name = _pgettext('Collation', 'Burmese');
break;
case 'persian':
$name = _pgettext('Collation', 'Persian');
break;
case 'polish':
case 'pl':
$name = _pgettext('Collation', 'Polish');
break;
case 'roman':
$name = _pgettext('Collation', 'West European');
break;
case 'romanian':
case 'ro':
$name = _pgettext('Collation', 'Romanian');
break;
case 'si':
case 'sinhala':
$name = _pgettext('Collation', 'Sinhalese');
break;
case 'slovak':
case 'sl':
$name = _pgettext('Collation', 'Slovak');
break;
case 'slovenian':
case 'sl':
$name = _pgettext('Collation', 'Slovenian');
break;
case 'spanish':
$name = _pgettext('Collation', 'Spanish (modern)');
break;
case 'es':
/* Name is set later */
$level = 3;
break;
case 'spanish2':
$name = _pgettext('Collation', 'Spanish (traditional)');
break;
case 'swedish':
$name = _pgettext('Collation', 'Swedish');
break;
case 'thai':
case 'th':
$name = _pgettext('Collation', 'Thai');
break;
case 'turkish':
case 'tr':
$name = _pgettext('Collation', 'Turkish');
break;
case 'ukrainian':
case 'uk':
$name = _pgettext('Collation', 'Ukrainian');
break;
case 'vietnamese':
case 'vi':
$name = _pgettext('Collation', 'Vietnamese');
break;
case 'unicode':
if ($unknown) {
$name = _pgettext('Collation', 'Unicode');
}
break;
default:
$found = false;
}
if ($found) {
continue;
}
// Not parsed token, fall to next level
}
if (!empty($is_bin)) {
$descr .= ', ' . __('binary collation');
if ($level == 2) {
/* Next will be variant */
$level = 4;
/* Germal variant */
if ($part == 'pb') {
$name = _pgettext('Collation', 'German (phone book order)');
continue;
}
$name = _pgettext('Collation', 'German (dictionary order)');
// Not parsed token, fall to next level
}
break;
default: $descr = __('unknown');
}
if (!empty($parts[2])) {
if ($parts[2] == 'ci') {
$descr .= ', ' . __('case-insensitive collation');
} elseif ($parts[2] == 'cs') {
$descr .= ', ' . __('case-sensitive collation');
if ($level == 3) {
/* Next will be variant */
$level = 4;
/* Spanish variant */
if ($part == 'trad') {
$name = _pgettext('Collation', 'Spanish (traditional)');
continue;
}
$name = _pgettext('Collation', 'Spanish (modern)');
// Not parsed token, fall to next level
}
if ($level == 4) {
/* Next will be suffix */
$level = 5;
/* Variant */
$found = true;
switch ($part) {
case '0900':
$variant = 'UCA 9.0.0';
break;
case '520':
$variant = 'UCA 5.2.0';
break;
case 'mysql561':
$variant = 'MySQL 5.6.1';
break;
case 'mysql500':
$variant = 'MySQL 5.0.0';
break;
default:
$found = false;
}
if ($found) {
continue;
}
// Not parsed token, fall to next level
}
if ($level == 5) {
/* Suffixes */
switch ($part) {
case 'ci':
$suffixes[] = _pgettext('Collation variant', 'case-insensitive');
break;
case 'cs':
$suffixes[] = _pgettext('Collation variant', 'case-sensitive');
break;
case 'ai':
$suffixes[] = _pgettext('Collation variant', 'accent-insensitive');
break;
case 'as':
$suffixes[] = _pgettext('Collation variant', 'accent-sensitive');
break;
case 'w2':
$suffixes[] = _pgettext('Collation variant', 'weight=2');
break;
case 'l2':
$suffixes[] = _pgettext('Collation variant', 'level=2');
break;
case 'bin':
$suffixes[] = _pgettext('Collation variant', 'binary');
break;
}
}
}
return $descr;
$result = $name;
if (! is_null($variant)) {
$result .= ' (' . $variant . ')';
}
if (count($suffixes) > 0) {
$result .= ', ' . implode(', ', $suffixes);
}
return $result;
}
}

View File

@ -103,7 +103,7 @@ class Config
*/
public function checkSystem()
{
$this->set('PMA_VERSION', '4.7.0');
$this->set('PMA_VERSION', '4.7.1');
/**
* @deprecated
*/

View File

@ -2346,6 +2346,10 @@ class DatabaseInterface
list($user, $password, $server) = $this->getConnectionParams($mode, $server);
if (is_null($user) || is_null($password)) {
if ($mode == DatabaseInterface::CONNECT_USER) {
Logging::logUser($user, 'mysql-denied');
$GLOBALS['auth_plugin']->authFails();
}
trigger_error(
__('Missing connection parameters!'),
E_USER_WARNING
@ -2762,8 +2766,8 @@ class DatabaseInterface
return Util::cacheGet('is_amazon_rds');
}
$sql = 'SELECT @@basedir';
$result = $this->fetchResult($sql);
$rds = ($result[0] == '/rdsdbbin/mysql/');
$result = $this->fetchValue($sql);
$rds = (substr($result, 0, 10) == '/rdsdbbin/');
Util::cacheSet('is_amazon_rds', $rds);
return $rds;

View File

@ -8,6 +8,7 @@
namespace PMA\libraries;
use PMA\libraries\URL;
use PMA\libraries\Util;
/**
* Class to handle database QBE search
@ -1561,7 +1562,7 @@ class DbQbe
if (empty($from_clause)) {
// Create cartesian product
$from_clause = implode(
", ", array_map('PMA\libraries\Util::backquote', $search_tables)
", ", array_map(array('Util', 'backquote'), $search_tables)
);
}
@ -1667,7 +1668,7 @@ class DbQbe
if (count($unfinalized) > 0) {
// Add these tables as cartesian product before joined tables
$join .= implode(
', ', array_map('Util::backquote', $unfinalized)
', ', array_map(array('Util', 'backquote'), $unfinalized)
);
}
}

View File

@ -793,9 +793,8 @@ class DisplayResults
//<form> to keep the form alignment of button < and <<
// and also to know what to execute when the selector changes
$table_navigation_html .= '<form action="sql.php'
. URL::getCommon($_url_params)
. '" method="post">';
$table_navigation_html .= '<form action="sql.php" method="post">';
$table_navigation_html .= URL::getHiddenInputs($_url_params);
$table_navigation_html .= Util::pageselector(
'pos',

View File

@ -1749,7 +1749,7 @@ class Table
// check if the table has not been modified
if ($this->getStatusInfo('Create_time') == $this->uiprefs['CREATE_TIME']
) {
return $this->uiprefs[$property];
return array_map('intval', $this->uiprefs[$property]);
}
// remove the property, since the table has been modified

View File

@ -127,7 +127,7 @@ class Tracker
" AND table_name = '" . $GLOBALS['dbi']->escapeString($tablename) . "' " .
" ORDER BY version DESC LIMIT 1";
$result = $GLOBALS['dbi']->fetchValue($sql_query);
$result = $GLOBALS['dbi']->fetchValue($sql_query, 0, 0, $GLOBALS['controllink']);
return ($result == 1);
}

View File

@ -1858,6 +1858,7 @@ class Util
}
$ret = '<form action="' . $url_parts['path'] . '" class="link"'
. ' method="post"' . $target . ' style="display: inline;">';
$ret .= URL::getHiddenInputs();
$subname_open = '';
$subname_close = '';
$submit_link = '#';

View File

@ -179,6 +179,11 @@ class Validator
$pass = null,
$error_key = 'Server'
) {
if ($GLOBALS['cfg']['DBG']['demo']) {
// Connection test disabled on the demo server!
return true;
}
// static::testPHPErrorMsg();
$error = null;
$host = PMA_sanitizeMySQLHost($host);

View File

@ -146,6 +146,18 @@ class DatabaseStructureController extends DatabaseController
// Gets the database structure
$this->_getDbInfo('_structure');
// Checks if there are any tables to be shown on current page.
// If there are no tables, the user is redirected to the last page
// having any.
if ($this->_total_num_tables > 0 && $this->_pos > $this->_total_num_tables) {
$uri = './db_structure.php' . URL::getCommonRaw(array(
'db' => $this->db,
'pos' => max(0, $this->_total_num_tables - $GLOBALS['cfg']['MaxTableList']),
'reload' => 1
));
PMA_sendHeaderLocation($uri);
}
include_once 'libraries/replication.inc.php';
PageSettings::showGroup('DbStructure');
@ -405,9 +417,9 @@ class DatabaseStructureController extends DatabaseController
$overhead = '';
$table_is_view = false;
$table_encoded = urlencode($current_table['TABLE_NAME']);
// Sets parameters for links
$tbl_url_query = $this->_url_query . '&amp;table=' . $table_encoded;
$tbl_url_query = $this->_url_query
. '&amp;table=' . htmlspecialchars($current_table['TABLE_NAME']);
// do not list the previous table's size info for a view
list($current_table, $formatted_size, $unit, $formatted_overhead,

View File

@ -1274,6 +1274,9 @@ class NavigationTree
. '(' . __('Databases') . ') ...</option>' . "\n";
$selected = $GLOBALS['db'];
foreach ($children as $node) {
if ($node->isNew) {
continue;
}
$paths = $node->getPaths();
if (isset($node->links['text'])) {
$title = empty($node->links['title']) ? '' : $node->links['title'];

View File

@ -8,6 +8,7 @@
namespace PMA\libraries\plugins;
use PMA\libraries\Sanitize;
use PMA\libraries\URL;
/**
* Provides a common interface that will have to be implemented by all of the
@ -74,14 +75,36 @@ abstract class AuthenticationPlugin
$PHP_AUTH_USER = '';
$PHP_AUTH_PW = '';
/* delete user's choices that were stored in session */
$_SESSION = array();
if (!defined('TESTSUITE')) {
session_destroy();
/*
* Get a logged-in server count in case of LoginCookieDeleteAll is disabled.
*/
$server = 0;
if ($GLOBALS['cfg']['LoginCookieDeleteAll'] === false
&& $GLOBALS['cfg']['Server']['auth_type'] == 'cookie'
) {
foreach ($GLOBALS['cfg']['Servers'] as $key => $val) {
if (isset($_COOKIE['pmaAuth-' . $key])) {
$server = $key;
}
}
}
/* Redirect to login form (or configured URL) */
PMA_sendHeaderLocation($redirect_url);
if ($server === 0) {
/* delete user's choices that were stored in session */
if (! defined('TESTSUITE')) {
$_SESSION = array();
session_destroy();
}
/* Redirect to login form (or configured URL) */
PMA_sendHeaderLocation($redirect_url);
} else {
/* Redirect to other autenticated server */
$_SESSION['partial_logout'] = true;
PMA_sendHeaderLocation(
'./index.php' . URL::getCommonRaw(array('server' => $server))
);
}
}
/**

View File

@ -87,7 +87,7 @@ function PMA_getColumnsInfo()
$fields_rs = $GLOBALS['dbi']->query(
$GLOBALS['dbi']->getColumnsSql(
$GLOBALS['db'],
$GLOBALS['PMD']["TABLE_NAME_SMALL"][$i],
$GLOBALS['PMD_URL']["TABLE_NAME_SMALL"][$i],
null,
true
),

View File

@ -228,8 +228,8 @@ function PMA_getHtmlForProcessListFilter()
$retval = '';
$retval .= '<fieldset id="tableFilter">';
$retval .= '<legend>' . __('Filters') . '</legend>';
$retval .= '<form action="server_status_processes.php'
. URL::getCommon($url_params) . '">';
$retval .= '<form action="server_status_processes.php">';
$retval .= URL::getHiddenInputs($url_params);
$retval .= '<input type="submit" value="' . __('Refresh') . '" />';
$retval .= '<div class="formelement">';
$retval .= '<input' . $showExecuting . ' type="checkbox" name="showExecuting"'

View File

@ -16,12 +16,11 @@ use PMA\libraries\URL;
*/
function PMA_getHtmlForSubMenusOnUsersPage($selfUrl)
{
$url_params = URL::getCommon();
$items = array(
array(
'name' => __('User accounts overview'),
'url' => 'server_privileges.php',
'specific_params' => '&viewing_mode=server'
'params' => URL::getCommon(array('viewing_mode' => 'server')),
)
);
@ -29,7 +28,7 @@ function PMA_getHtmlForSubMenusOnUsersPage($selfUrl)
$items[] = array(
'name' => __('User groups'),
'url' => 'server_user_groups.php',
'specific_params' => ''
'params' => URL::getCommon(),
);
}
@ -41,8 +40,7 @@ function PMA_getHtmlForSubMenusOnUsersPage($selfUrl)
}
$retval .= '<li>';
$retval .= '<a' . $class;
$retval .= ' href="' . $item['url']
. $url_params . $item['specific_params'] . '">';
$retval .= ' href="' . $item['url'] . $item['params'] . '">';
$retval .= $item['name'];
$retval .= '</a>';
$retval .= '</li>';

View File

@ -138,7 +138,7 @@ unset($orig_error_count, $session_result);
* Token which is used for authenticating access queries.
* (we use "space PMA_token space" to prevent overwriting)
*/
if (! isset($_SESSION[' PMA_token '])) {
if (empty($_SESSION[' PMA_token '])) {
PMA_generateToken();
/**
@ -154,4 +154,10 @@ if (! isset($_SESSION[' PMA_token '])) {
PMA_sessionFailed($errors);
}
session_start();
if (empty($_SESSION[' PMA_token '])) {
PMA_fatalError(
'Failed to store CSRF token in session! ' .
'Probably sessions are not working properly.'
);
}
}

View File

@ -712,7 +712,7 @@ function PMA_hasNoRightsToDropDatabase($analyzed_sql_results,
*/
function PMA_setColumnProperty($pmatable, $request_index)
{
$property_value = explode(',', $_REQUEST[$request_index]);
$property_value = array_map('intval', explode(',', $_REQUEST[$request_index]));
switch($request_index) {
case 'col_order':
$property_to_set = Table::PROP_COLUMN_ORDER;

1056
po/af.po

File diff suppressed because it is too large Load Diff

1236
po/ar.po

File diff suppressed because it is too large Load Diff

1136
po/az.po

File diff suppressed because it is too large Load Diff

4893
po/be.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1169
po/bg.po

File diff suppressed because it is too large Load Diff

1178
po/bn.po

File diff suppressed because it is too large Load Diff

1056
po/br.po

File diff suppressed because it is too large Load Diff

1037
po/brx.po

File diff suppressed because it is too large Load Diff

1147
po/bs.po

File diff suppressed because it is too large Load Diff

1177
po/ca.po

File diff suppressed because it is too large Load Diff

1062
po/ckb.po

File diff suppressed because it is too large Load Diff

1169
po/cs.po

File diff suppressed because it is too large Load Diff

1161
po/cy.po

File diff suppressed because it is too large Load Diff

1165
po/da.po

File diff suppressed because it is too large Load Diff

1167
po/de.po

File diff suppressed because it is too large Load Diff

1169
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1147
po/eo.po

File diff suppressed because it is too large Load Diff

1169
po/es.po

File diff suppressed because it is too large Load Diff

1083
po/et.po

File diff suppressed because it is too large Load Diff

1147
po/eu.po

File diff suppressed because it is too large Load Diff

1102
po/fa.po

File diff suppressed because it is too large Load Diff

1169
po/fi.po

File diff suppressed because it is too large Load Diff

1037
po/fil.po

File diff suppressed because it is too large Load Diff

1189
po/fr.po

File diff suppressed because it is too large Load Diff

1140
po/fy.po

File diff suppressed because it is too large Load Diff

1163
po/gl.po

File diff suppressed because it is too large Load Diff

1037
po/gu.po

File diff suppressed because it is too large Load Diff

1149
po/he.po

File diff suppressed because it is too large Load Diff

1174
po/hi.po

File diff suppressed because it is too large Load Diff

1163
po/hr.po

File diff suppressed because it is too large Load Diff

1273
po/hu.po

File diff suppressed because it is too large Load Diff

1160
po/hy.po

File diff suppressed because it is too large Load Diff

1087
po/ia.po

File diff suppressed because it is too large Load Diff

1187
po/id.po

File diff suppressed because it is too large Load Diff

1037
po/ig.po

File diff suppressed because it is too large Load Diff

1106
po/it.po

File diff suppressed because it is too large Load Diff

1184
po/ja.po

File diff suppressed because it is too large Load Diff

1149
po/ka.po

File diff suppressed because it is too large Load Diff

2543
po/kab.po

File diff suppressed because it is too large Load Diff

1056
po/kk.po

File diff suppressed because it is too large Load Diff

1039
po/km.po

File diff suppressed because it is too large Load Diff

1092
po/kn.po

File diff suppressed because it is too large Load Diff

1169
po/ko.po

File diff suppressed because it is too large Load Diff

1039
po/ksh.po

File diff suppressed because it is too large Load Diff

1043
po/ky.po

File diff suppressed because it is too large Load Diff

1054
po/li.po

File diff suppressed because it is too large Load Diff

1227
po/lt.po

File diff suppressed because it is too large Load Diff

1161
po/lv.po

File diff suppressed because it is too large Load Diff

1161
po/mk.po

File diff suppressed because it is too large Load Diff

1052
po/ml.po

File diff suppressed because it is too large Load Diff

1161
po/mn.po

File diff suppressed because it is too large Load Diff

1067
po/ms.po

File diff suppressed because it is too large Load Diff

1163
po/nb.po

File diff suppressed because it is too large Load Diff

1039
po/ne.po

File diff suppressed because it is too large Load Diff

1083
po/nl.po

File diff suppressed because it is too large Load Diff

1094
po/pa.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1165
po/pl.po

File diff suppressed because it is too large Load Diff

1155
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1207
po/ro.po

File diff suppressed because it is too large Load Diff

1163
po/ru.po

File diff suppressed because it is too large Load Diff

1184
po/si.po

File diff suppressed because it is too large Load Diff

1163
po/sk.po

File diff suppressed because it is too large Load Diff

1087
po/sl.po

File diff suppressed because it is too large Load Diff

1165
po/sq.po

File diff suppressed because it is too large Load Diff

1161
po/sr.po

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More