Merge branch 'QA_4_7' into STABLE
This commit is contained in:
commit
c3fa81b3e0
26
ChangeLog
26
ChangeLog
@ -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
2
README
@ -1,7 +1,7 @@
|
||||
phpMyAdmin - Readme
|
||||
===================
|
||||
|
||||
Version 4.7.0
|
||||
Version 4.7.1
|
||||
|
||||
A web interface for MySQL and MariaDB.
|
||||
|
||||
|
||||
@ -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="'
|
||||
|
||||
);
|
||||
|
||||
|
||||
@ -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
198
composer.lock
generated
@ -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",
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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 = '';
|
||||
|
||||
@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ class Config
|
||||
*/
|
||||
public function checkSystem()
|
||||
{
|
||||
$this->set('PMA_VERSION', '4.7.0');
|
||||
$this->set('PMA_VERSION', '4.7.1');
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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 = '#';
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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 . '&table=' . $table_encoded;
|
||||
$tbl_url_query = $this->_url_query
|
||||
. '&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,
|
||||
|
||||
@ -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'];
|
||||
|
||||
@ -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))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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
|
||||
),
|
||||
|
||||
@ -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"'
|
||||
|
||||
@ -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>';
|
||||
|
||||
@ -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.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
1161
po/be@latin.po
1161
po/be@latin.po
File diff suppressed because it is too large
Load Diff
1163
po/en_GB.po
1163
po/en_GB.po
File diff suppressed because it is too large
Load Diff
1037
po/phpmyadmin.pot
1037
po/phpmyadmin.pot
File diff suppressed because it is too large
Load Diff
1220
po/pt_BR.po
1220
po/pt_BR.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
Loading…
Reference in New Issue
Block a user