From c3fefc2e4af45ed13f8f999a180a2af4d738bccf Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Mon, 14 Sep 2015 20:14:28 +1000 Subject: [PATCH 01/41] Fix #11464 phpMyAdmin suggests upgrading to newer version not usable on that system Signed-off-by: Madhura Jayaratne --- js/functions.js | 2 +- libraries/Util.class.php | 155 ------------- libraries/VersionInformation.php | 270 +++++++++++++++++++++++ setup/frames/index.inc.php | 1 + setup/lib/index.lib.php | 18 +- test/classes/PMA_Util_test.php | 66 ------ test/classes/VersionInformation_test.php | 254 +++++++++++++++++++++ version_check.php | 20 +- 8 files changed, 555 insertions(+), 231 deletions(-) create mode 100644 libraries/VersionInformation.php create mode 100644 test/classes/VersionInformation_test.php diff --git a/js/functions.js b/js/functions.js index 5e6e9d6b48..4a95ee9fbc 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3971,7 +3971,7 @@ AJAX.registerOnload('functions.js', function () { * Load version information asynchronously. */ if ($('li.jsversioncheck').length > 0) { - $.getJSON('version_check.php', {}, PMA_current_version); + $.getJSON('version_check.php', {'server' : PMA_commonParams.get('server')}, PMA_current_version); } if ($('#is_git_revision').length > 0) { diff --git a/libraries/Util.class.php b/libraries/Util.class.php index 753d1ad050..b2b6735c60 100644 --- a/libraries/Util.class.php +++ b/libraries/Util.class.php @@ -4368,161 +4368,6 @@ class PMA_Util curl_setopt($curl_handle, CURLOPT_USERAGENT, 'phpMyAdmin/' . PMA_VERSION); return $curl_handle; } - /** - * Returns information with latest version from phpmyadmin.net - * - * @return object JSON decoded object with the data - */ - public static function getLatestVersion() - { - if (!$GLOBALS['cfg']['VersionCheck']) { - return new stdClass(); - } - - // wait 3s at most for server response, it's enough to get information - // from a working server - $connection_timeout = 3; - - $response = '{}'; - // Get response text from phpmyadmin.net or from the session - // Update cache every 6 hours - if (isset($_SESSION['cache']['version_check']) - && time() < $_SESSION['cache']['version_check']['timestamp'] + 3600 * 6 - ) { - $save = false; - $response = $_SESSION['cache']['version_check']['response']; - } else { - $save = true; - $file = 'https://www.phpmyadmin.net/home_page/version.json'; - if (ini_get('allow_url_fopen')) { - $context = array( - 'http' => array( - 'request_fulluri' => true, - 'timeout' => $connection_timeout, - ) - ); - $context = PMA_Util::handleContext($context); - if (! defined('TESTSUITE')) { - session_write_close(); - } - $response = file_get_contents( - $file, - false, - stream_context_create($context) - ); - } else if (function_exists('curl_init')) { - $curl_handle = curl_init($file); - if ($curl_handle === false) { - return null; - } - $curl_handle = PMA_Util::configureCurl($curl_handle); - curl_setopt( - $curl_handle, - CURLOPT_HEADER, - false - ); - curl_setopt( - $curl_handle, - CURLOPT_RETURNTRANSFER, - true - ); - curl_setopt( - $curl_handle, - CURLOPT_TIMEOUT, - $connection_timeout - ); - if (! defined('TESTSUITE')) { - session_write_close(); - } - $response = curl_exec($curl_handle); - } - } - - $data = json_decode($response); - if (is_object($data) - && ! empty($data->version) - && ! empty($data->date) - && $save - ) { - if (! isset($_SESSION) && ! defined('TESTSUITE')) { - ini_set('session.use_only_cookies', 'false'); - ini_set('session.use_cookies', 'false'); - ini_set('session.use_trans_sid', 'false'); - ini_set('session.cache_limiter', 'nocache'); - session_start(); - } - $_SESSION['cache']['version_check'] = array( - 'response' => $response, - 'timestamp' => time() - ); - } - return $data; - } - - /** - * Calculates numerical equivalent of phpMyAdmin version string - * - * @param string $version version - * - * @return mixed false on failure, integer on success - */ - public static function versionToInt($version) - { - $parts = explode('-', $version); - if (count($parts) > 1) { - $suffix = $parts[1]; - } else { - $suffix = ''; - } - $parts = explode('.', $parts[0]); - - $result = 0; - - if (count($parts) >= 1 && is_numeric($parts[0])) { - $result += 1000000 * $parts[0]; - } - - if (count($parts) >= 2 && is_numeric($parts[1])) { - $result += 10000 * $parts[1]; - } - - if (count($parts) >= 3 && is_numeric($parts[2])) { - $result += 100 * $parts[2]; - } - - if (count($parts) >= 4 && is_numeric($parts[3])) { - $result += 1 * $parts[3]; - } - - if (!empty($suffix)) { - $matches = array(); - if (preg_match('/^(\D+)(\d+)$/', $suffix, $matches)) { - $suffix = $matches[1]; - $result += intval($matches[2]); - } - switch ($suffix) { - case 'pl': - $result += 60; - break; - case 'rc': - $result += 30; - break; - case 'beta': - $result += 20; - break; - case 'alpha': - $result += 10; - break; - case 'dev': - $result += 0; - break; - } - } else { - $result += 50; // for final - } - - return $result; - } /** * Add fractional seconds to time, datetime and timestamp strings. diff --git a/libraries/VersionInformation.php b/libraries/VersionInformation.php new file mode 100644 index 0000000000..d0d3ecdc63 --- /dev/null +++ b/libraries/VersionInformation.php @@ -0,0 +1,270 @@ + array( + 'request_fulluri' => true, + 'timeout' => $connection_timeout, + ) + ); + $context = PMA_Util::handleContext($context); + if (! defined('TESTSUITE')) { + session_write_close(); + } + $response = file_get_contents( + $file, + false, + stream_context_create($context) + ); + } else if (function_exists('curl_init')) { + $curl_handle = curl_init($file); + if ($curl_handle === false) { + return null; + } + $curl_handle = PMA_Util::configureCurl($curl_handle); + curl_setopt( + $curl_handle, + CURLOPT_HEADER, + false + ); + curl_setopt( + $curl_handle, + CURLOPT_RETURNTRANSFER, + true + ); + curl_setopt( + $curl_handle, + CURLOPT_TIMEOUT, + $connection_timeout + ); + if (! defined('TESTSUITE')) { + session_write_close(); + } + $response = curl_exec($curl_handle); + } + } + + $data = json_decode($response); + if (is_object($data) + && ! empty($data->version) + && ! empty($data->date) + && $save + ) { + if (! isset($_SESSION) && ! defined('TESTSUITE')) { + ini_set('session.use_only_cookies', 'false'); + ini_set('session.use_cookies', 'false'); + ini_set('session.use_trans_sid', 'false'); + ini_set('session.cache_limiter', 'nocache'); + session_start(); + } + $_SESSION['cache']['version_check'] = array( + 'response' => $response, + 'timestamp' => time() + ); + } + return $data; + } + + /** + * Calculates numerical equivalent of phpMyAdmin version string + * + * @param string $version version + * + * @return mixed false on failure, integer on success + */ + public function versionToInt($version) + { + $parts = explode('-', $version); + if (count($parts) > 1) { + $suffix = $parts[1]; + } else { + $suffix = ''; + } + $parts = explode('.', $parts[0]); + + $result = 0; + + if (count($parts) >= 1 && is_numeric($parts[0])) { + $result += 1000000 * $parts[0]; + } + + if (count($parts) >= 2 && is_numeric($parts[1])) { + $result += 10000 * $parts[1]; + } + + if (count($parts) >= 3 && is_numeric($parts[2])) { + $result += 100 * $parts[2]; + } + + if (count($parts) >= 4 && is_numeric($parts[3])) { + $result += 1 * $parts[3]; + } + + if (!empty($suffix)) { + $matches = array(); + if (preg_match('/^(\D+)(\d+)$/', $suffix, $matches)) { + $suffix = $matches[1]; + $result += intval($matches[2]); + } + switch ($suffix) { + case 'pl': + $result += 60; + break; + case 'rc': + $result += 30; + break; + case 'beta': + $result += 20; + break; + case 'alpha': + $result += 10; + break; + case 'dev': + $result += 0; + break; + } + } else { + $result += 50; // for final + } + + return $result; + } + + /** + * Returns the version and date of the latest phpMyAdmin version compatible + * with avilable PHP and MySQL versions + * + * @param array $releases array of information related to each version + * + * @return array containing the version and date of latest compatibel version + */ + public function getLatestCompatibleVersion($releases) + { + foreach ($releases as $release) { + $phpVersions = $release->php_versions; + $phpConditions = explode(",", $phpVersions); + foreach ($phpConditions as $phpCondition) { + if (! $this->evaluateVersionCondition("PHP", $phpCondition)) { + continue 2; + } + } + + // We evalute MySQL version constraint if there are only + // one server configured. + if (count($GLOBALS['cfg']['Servers']) == 1) { + $mysqlVersions = $release->mysql_versions; + $mysqlConditions = explode(",", $mysqlVersions); + foreach ($mysqlConditions as $mysqlCondition) { + if (! $this->evaluateVersionCondition('MySQL', $mysqlCondition)) { + continue 2; + } + } + } + + return array( + 'version' => $release->version, + 'date' => $release->date, + ); + } + + // no compatible version + return null; + } + + /** + * Checks whether PHP or MySQL version meets supplied version condition + * + * @param string $type PHP or MySQL + * @param string $condition version condition + * + * @return boolean whether the condition is met + */ + public function evaluateVersionCondition($type, $condition) + { + $operator = null; + $operators = array("<=", ">=", "!=", "<>", "<", ">", "="); // preserve order + foreach ($operators as $oneOperator) { + if (strpos($condition, $oneOperator) === 0) { + $operator = $oneOperator; + $version = substr($condition, strlen($oneOperator)); + break; + } + } + + $myVersion = null; + if ($type == 'PHP') { + $myVersion = $this->getPHPVersion(); + } elseif ($type == 'MySQL') { + $myVersion = $this->getMySQLVersion(); + } + + if ($myVersion != null && $operator != null) { + return version_compare($myVersion, $version, $operator); + } + return false; + } + + /** + * Returns the PHP version + * + * @return string PHP version + */ + protected function getPHPVersion() + { + return PHP_VERSION; + } + + /** + * Returns the MySQL version + * + * @return string MySQL version + */ + protected function getMySQLVersion() + { + PMA_Util::cacheGet('PMA_MYSQL_STR_VERSION'); + } +} +?> \ No newline at end of file diff --git a/setup/frames/index.inc.php b/setup/frames/index.inc.php index 3c4a9e1509..ae881d9287 100644 --- a/setup/frames/index.inc.php +++ b/setup/frames/index.inc.php @@ -16,6 +16,7 @@ if (!defined('PHPMYADMIN')) { require_once './libraries/display_select_lang.lib.php'; require_once './libraries/config/FormDisplay.class.php'; require_once './libraries/config/ServerConfigChecks.class.php'; +require_once './libraries/VersionInformation.php'; require_once './setup/lib/index.lib.php'; // prepare unfiltered language list diff --git a/setup/lib/index.lib.php b/setup/lib/index.lib.php index 586c45b779..b17fac07a5 100644 --- a/setup/lib/index.lib.php +++ b/setup/lib/index.lib.php @@ -108,7 +108,8 @@ function PMA_versionCheck() $message_id = uniqid('version_check'); // Fetch data - $version_data = PMA_Util::getLatestVersion(); + $versionInformation = new VersionInformation(); + $version_data = $versionInformation->getLatestVersion(); if (empty($version_data)) { PMA_messagesSet( @@ -123,10 +124,17 @@ function PMA_versionCheck() return; } - $version = $version_data->version; - $date = $version_data->date; + $releases = $version_data->releases; + $latestCompatible = $versionInformation->getLatestCompatibleVersion($releases); + if ($latestCompatible != null) { + $version = $latestCompatible['version']; + $date = $latestCompatible['date']; + } else { // fallback to old behavior + $version = $versionDetials->version; + $date = $versionDetials->date; + } - $version_upstream = PMA_Util::versionToInt($version); + $version_upstream = $versionInformation->versionToInt($version); if ($version_upstream === false) { PMA_messagesSet( 'error', @@ -137,7 +145,7 @@ function PMA_versionCheck() return; } - $version_local = PMA_Util::versionToInt( + $version_local = $versionInformation->versionToInt( $GLOBALS['PMA_Config']->get('PMA_VERSION') ); if ($version_local === false) { diff --git a/test/classes/PMA_Util_test.php b/test/classes/PMA_Util_test.php index 034fc80bbb..2d896c0634 100644 --- a/test/classes/PMA_Util_test.php +++ b/test/classes/PMA_Util_test.php @@ -71,72 +71,6 @@ class PMA_Util_Test extends PHPUnit_Framework_TestCase ); } - /** - * Test version checking - * - * @return void - * - * @group large - */ - public function testGetLatestVersion() - { - $GLOBALS['cfg']['ProxyUrl'] = PROXY_URL; - $GLOBALS['cfg']['ProxyUser'] = PROXY_USER; - $GLOBALS['cfg']['ProxyPass'] = PROXY_PASS; - $GLOBALS['cfg']['VersionCheck'] = true; - $version = PMA_Util::getLatestVersion(); - $this->assertNotEmpty($version->version); - $this->assertNotEmpty($version->date); - } - - /** - * Test version to int conversion. - * - * @param string $version Version string - * @param int $numeric Integer matching version - * - * @return void - * - * @dataProvider dataVersions - */ - public function testVersionToInt($version, $numeric) - { - $this->assertEquals( - $numeric, - PMA_Util::versionToInt($version) - ); - } - - /** - * Data provider for version parsing - * - * @return array with test data - */ - public function dataVersions() - { - return array( - array('1.0.0', 1000050), - array('2.0.0.2-dev', 2000002), - array('3.4.2.1', 3040251), - array('3.4.2-dev3', 3040203), - array('3.4.2-dev', 3040200), - array('3.4.2-pl', 3040260), - array('3.4.2-pl3', 3040263), - array('4.4.2-rc22', 4040252), - array('4.4.2-rc', 4040230), - array('4.4.22-beta22', 4042242), - array('4.4.22-beta', 4042220), - array('4.4.21-alpha22', 4042132), - array('4.4.20-alpha', 4042010), - array('4.40.20-alpha-dev', 4402010), - array('4.4a', 4000050), - array('4.4.4-test', 4040400), - array('4.1.0', 4010050), - array('4.0.1.3', 4000153), - array('4.1-dev', 4010000), - ); - } - /** * Test for isForeignKeyCheck * diff --git a/test/classes/VersionInformation_test.php b/test/classes/VersionInformation_test.php new file mode 100644 index 0000000000..4b990a9407 --- /dev/null +++ b/test/classes/VersionInformation_test.php @@ -0,0 +1,254 @@ +_releases = array(); + + $release = new stdClass(); + $release->date = "2015-09-08"; + $release->php_versions = ">=5.3,<7.1"; + $release->version = "4.4.14.1"; + $release->mysql_versions = ">=5.5"; + $this->_releases[] = $release; + + $release = new stdClass(); + $release->date = "2015-09-09"; + $release->php_versions = ">=5.3,<7.0"; + $release->version = "4.4.13.3"; + $release->mysql_versions = ">=5.5"; + $this->_releases[] = $release; + + $release = new stdClass(); + $release->date = "2015-05-13"; + $release->php_versions = ">=5.2,<5.3"; + $release->version = "4.0.10.10"; + $release->mysql_versions = ">=5.0"; + $this->_releases[] = $release; + } + + + /** + * Test version checking + * + * @return void + * + * @group large + */ + public function testGetLatestVersion() + { + $GLOBALS['cfg']['ProxyUrl'] = PROXY_URL; + $GLOBALS['cfg']['ProxyUser'] = PROXY_USER; + $GLOBALS['cfg']['ProxyPass'] = PROXY_PASS; + $GLOBALS['cfg']['VersionCheck'] = true; + $versionInformation = new VersionInformation(); + $version = $versionInformation->getLatestVersion(); + $this->assertNotEmpty($version->version); + $this->assertNotEmpty($version->date); + } + + /** + * Test version to int conversion. + * + * @param string $version Version string + * @param int $numeric Integer matching version + * + * @return void + * + * @dataProvider dataVersions + */ + public function testVersionToInt($version, $numeric) + { + $versionInformation = new VersionInformation(); + $this->assertEquals( + $numeric, + $versionInformation->versionToInt($version) + ); + } + + + /** + * Data provider for version parsing + * + * @return array with test data + */ + public function dataVersions() + { + return array( + array('1.0.0', 1000050), + array('2.0.0.2-dev', 2000002), + array('3.4.2.1', 3040251), + array('3.4.2-dev3', 3040203), + array('3.4.2-dev', 3040200), + array('3.4.2-pl', 3040260), + array('3.4.2-pl3', 3040263), + array('4.4.2-rc22', 4040252), + array('4.4.2-rc', 4040230), + array('4.4.22-beta22', 4042242), + array('4.4.22-beta', 4042220), + array('4.4.21-alpha22', 4042132), + array('4.4.20-alpha', 4042010), + array('4.40.20-alpha-dev', 4402010), + array('4.4a', 4000050), + array('4.4.4-test', 4040400), + array('4.1.0', 4010050), + array('4.0.1.3', 4000153), + array('4.1-dev', 4010000), + ); + } + + /** + * Tests getLatestCompatibleVersion() when there is only one server confgiured + * + * @return void + */ + public function testGetLatestCompatibleVersionWithSingleServer() + { + $GLOBALS['cfg']['Servers'] = array( + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '<7.1') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(2)) + ->method('evaluateVersionCondition') + ->with('MySQL', '>=5.5') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.4.14.1', $compatible['version']); + + } + + /** + * Tests getLatestCompatibleVersion() when there are multiple servers configured + * + * @return void + */ + public function testGetLaestCompatibleVersionWithMultipleServers() + { + $GLOBALS['cfg']['Servers'] = array( + array(), + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '<7.1') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.4.14.1', $compatible['version']); + } + + /** + * Tests getLatestCompatibleVersion() with an old PHP version + * + * @return void + */ + public function testGetLaestCompatibleVersionWithOldPHPVersion() + { + $GLOBALS['cfg']['Servers'] = array( + array(), + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(false)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(false)); + + $mockVersionInfo->expects($this->at(2)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.2') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(3)) + ->method('evaluateVersionCondition') + ->with('PHP', '<5.3') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.0.10.10', $compatible['version']); + } + + public function testEvaluateVersionCondition() + { + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('getPHPVersion')) + ->getMock(); + + $mockVersionInfo->expects($this->any()) + ->method('getPHPVersion') + ->will($this->returnValue('5.2.4')); + + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '<=5.3')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '<5.3')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '>=5.2')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '>5.2')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '!=5.3')); + + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '<=5.2')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '<5.2')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '>=7.0')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '>7.0')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '!=5.2')); + } +} \ No newline at end of file diff --git a/version_check.php b/version_check.php index ae097e88df..e1f2be985b 100644 --- a/version_check.php +++ b/version_check.php @@ -10,19 +10,31 @@ define('PMA_MINIMUM_COMMON', true); require_once 'libraries/common.inc.php'; require_once 'libraries/Util.class.php'; +require_once 'libraries/VersionInformation.php'; // Always send the correct headers header('Content-type: application/json; charset=UTF-8'); -$version = PMA_Util::getLatestVersion(); +$versionInformation = new VersionInformation(); +$versionDetails = $versionInformation->getLatestVersion(); -if (empty($version)) { +if (empty($versionDetails)) { echo json_encode(array()); } else { + $latestCompatible = $versionInformation->getLatestCompatibleVersion( + $versionDetails->releases + ); + if ($latestCompatible != null) { + $version = $latestCompatible['version']; + $date = $latestCompatible['date']; + } else { // fallback to old behavior + $version = $versionDetails->version; + $date = $versionDetails->date; + } echo json_encode( array( - 'version' => (! empty($version->version) ? $version->version : ''), - 'date' => (! empty($version->date) ? $version->date : ''), + 'version' => (! empty($version) ? $version : ''), + 'date' => (! empty($date) ? $date : ''), ) ); } From f18ac85048216c8344ad53eb902223a95aee6f52 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Sun, 20 Sep 2015 06:23:57 -0400 Subject: [PATCH 02/41] 4.4.15 release date Signed-off-by: Marc Delisle --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6b5c55d418..794d5682d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -108,7 +108,7 @@ phpMyAdmin - ChangeLog - issue #11448 Clarify doc about the MemoryLimit directive - issue #11489 Cannot copy a database under certain conditions -4.4.15.0 (not yet released) +4.4.15.0 (2015-09-20) - issue #11411 Undefined "replace" function on numeric scalar - issue #11421 Stored-proc / routine - broken parameter parsing - issue Missing name for configuration read_as_multibytes From 75d7927604d6155a67f7fe2cc132e79f2aaf7b10 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Mon, 21 Sep 2015 21:37:55 +1000 Subject: [PATCH 03/41] Do not suggest upgrading when there is no compatible versions Signed-off-by: Madhura Jayaratne --- setup/lib/index.lib.php | 5 ++--- version_check.php | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/setup/lib/index.lib.php b/setup/lib/index.lib.php index b17fac07a5..ac07d27db9 100644 --- a/setup/lib/index.lib.php +++ b/setup/lib/index.lib.php @@ -129,9 +129,8 @@ function PMA_versionCheck() if ($latestCompatible != null) { $version = $latestCompatible['version']; $date = $latestCompatible['date']; - } else { // fallback to old behavior - $version = $versionDetials->version; - $date = $versionDetials->date; + } else { + return; } $version_upstream = $versionInformation->versionToInt($version); diff --git a/version_check.php b/version_check.php index e1f2be985b..0f7f11cafa 100644 --- a/version_check.php +++ b/version_check.php @@ -24,12 +24,11 @@ if (empty($versionDetails)) { $latestCompatible = $versionInformation->getLatestCompatibleVersion( $versionDetails->releases ); + $version = ''; + $date = ''; if ($latestCompatible != null) { $version = $latestCompatible['version']; $date = $latestCompatible['date']; - } else { // fallback to old behavior - $version = $versionDetails->version; - $date = $versionDetails->date; } echo json_encode( array( From f70add88d66119089a471589976553e5d5af3fd9 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 17:27:55 +1000 Subject: [PATCH 04/41] Return the MySQL version Signed-off-by: Madhura Jayaratne --- libraries/VersionInformation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/VersionInformation.php b/libraries/VersionInformation.php index d0d3ecdc63..c7363f8da7 100644 --- a/libraries/VersionInformation.php +++ b/libraries/VersionInformation.php @@ -264,7 +264,7 @@ class VersionInformation */ protected function getMySQLVersion() { - PMA_Util::cacheGet('PMA_MYSQL_STR_VERSION'); + return PMA_Util::cacheGet('PMA_MYSQL_STR_VERSION'); } } ?> \ No newline at end of file From 45c05e3ad65c728876d2368c04befb4a6dfbd7c0 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 21:00:47 +1000 Subject: [PATCH 05/41] Fix coding style violations related to function calls Signed-off-by: Madhura Jayaratne --- export.php | 2 +- libraries/DisplayResults.class.php | 7 +++---- normalization.php | 2 +- server_privileges.php | 8 ++++---- test/libraries/PMA_relation_cleanup_test.php | 2 +- test/libraries/PMA_server_privileges_test.php | 2 +- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/export.php b/export.php index 1bef625b5e..0b55624a02 100644 --- a/export.php +++ b/export.php @@ -408,7 +408,7 @@ if (!defined('TESTSUITE')) { // Will we need relation & co. setup? $do_relation = isset($GLOBALS[$what . '_relation']); $do_comments = isset($GLOBALS[$what . '_include_comments']) - || isset($GLOBALS[$what . '_comments']) ; + || isset($GLOBALS[$what . '_comments']); $do_mime = isset($GLOBALS[$what . '_mime']); if ($do_relation || $do_comments || $do_mime) { $cfgRelation = PMA_getRelationsParam(); diff --git a/libraries/DisplayResults.class.php b/libraries/DisplayResults.class.php index d458248023..de5b58c3f3 100644 --- a/libraries/DisplayResults.class.php +++ b/libraries/DisplayResults.class.php @@ -1189,10 +1189,9 @@ class PMA_DisplayResults // See if this column should get highlight because it's used in the // where-query. - $condition_field = (isset($highlight_columns[$fields_meta[$i]->name]) - || isset( - $highlight_columns[PMA_Util::backquote($fields_meta[$i]->name)]) - ) + $name = $fields_meta[$i]->name; + $condition_field = (isset($highlight_columns[$name]) + || isset($highlight_columns[PMA_Util::backquote($name)])) ? true : false; diff --git a/normalization.php b/normalization.php index a988935c95..11dc8779e0 100644 --- a/normalization.php +++ b/normalization.php @@ -106,7 +106,7 @@ if (isset($_REQUEST['step1'])) { } else if (isset($_REQUEST['step3'])) { $res = PMA_getHtmlContentsFor1NFStep3($db, $table); $response->addJSON($res); -} else if (isset ($_REQUEST['step4'])) { +} else if (isset($_REQUEST['step4'])) { $res = PMA_getHtmlContentsFor1NFStep4($db, $table); $response->addJSON($res); } else if (isset($_REQUEST['step']) && $_REQUEST['step'] == 2.1) { diff --git a/server_privileges.php b/server_privileges.php index 78790f2e1d..79e20b3bbd 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -414,10 +414,10 @@ if (isset($_REQUEST['adduser'])) { ); } else if (!empty($routinename)) { $response->addHTML( - PMA_getHtmlForRoutineSpecificPrivilges( - $username, $hostname, $dbname, $routinename, - (isset($url_dbname) ? $url_dbname : '') - ) + PMA_getHtmlForRoutineSpecificPrivilges( + $username, $hostname, $dbname, $routinename, + (isset($url_dbname) ? $url_dbname : '') + ) ); } else { // A user was selected -> display the user's properties diff --git a/test/libraries/PMA_relation_cleanup_test.php b/test/libraries/PMA_relation_cleanup_test.php index e254b1d023..5dad56ed55 100644 --- a/test/libraries/PMA_relation_cleanup_test.php +++ b/test/libraries/PMA_relation_cleanup_test.php @@ -387,7 +387,7 @@ class DBI_PMA_Relation_Cleanup extends PMA_DatabaseInterface } if (/*overload*/mb_stripos($sql, "table_info") !== false) { - unset ($this->values[$this->indexs['table_info']]); + unset($this->values[$this->indexs['table_info']]); } if (/*overload*/mb_stripos($sql, "table_coords") !== false) { diff --git a/test/libraries/PMA_server_privileges_test.php b/test/libraries/PMA_server_privileges_test.php index a0d5ef8700..a305f58971 100644 --- a/test/libraries/PMA_server_privileges_test.php +++ b/test/libraries/PMA_server_privileges_test.php @@ -637,7 +637,7 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase list($create_user_real, $create_user_show, $real_sql_query, $sql_query) = PMA_getSqlQueriesForDisplayAndAddUser( $username, $hostname, - (isset ($password) ? $password : '') + (isset($password) ? $password : '') ); $this->assertEquals( "CREATE USER 'pma_username'@'pma_hostname' " From 9901aeddd0a9b80916996e9383a1670f20655a28 Mon Sep 17 00:00:00 2001 From: Martin Lacina Date: Sun, 20 Sep 2015 20:15:11 +0200 Subject: [PATCH 06/41] Translated using Weblate (Slovak) Currently translated at 82.8% (2659 of 3209 strings) [CI skip] --- po/sk.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/sk.po b/po/sk.po index 28a2917ec8..49193f600c 100644 --- a/po/sk.po +++ b/po/sk.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-09-15 10:38+0200\n" +"PO-Revision-Date: 2015-09-20 20:15+0200\n" "Last-Translator: Martin Lacina \n" "Language-Team: Slovak " "\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.4\n" #: changelog.php:37 license.php:30 #, php-format @@ -12171,7 +12171,7 @@ msgstr "" #: libraries/server_privileges.lib.php:818 msgid "Requires a valid X509 certificate." -msgstr "" +msgstr "Vyžaduje platný X509 certifikát." #: libraries/server_privileges.lib.php:869 msgid "Resource limits" From 3d192002bb5dc7abf89a192c76e7d70ab62acb5a Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 21:03:16 +1000 Subject: [PATCH 07/41] Expected 1 space after FUNCTION keyword Signed-off-by: Madhura Jayaratne --- libraries/StorageEngine.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/StorageEngine.class.php b/libraries/StorageEngine.class.php index 3515e95ad7..4184cff580 100644 --- a/libraries/StorageEngine.class.php +++ b/libraries/StorageEngine.class.php @@ -99,7 +99,7 @@ class PMA_StorageEngine if (PMA_MYSQL_INT_VERSION >= 50708) { $disabled = PMA_Util::cacheGet( 'disabled_storage_engines', - function() { + function () { return $GLOBALS['dbi']->fetchValue( 'SELECT @@disabled_storage_engines' ); From 7ec4bcdbea6ec7b7e543bc943b512d4dc105b51a Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 21:11:11 +1000 Subject: [PATCH 08/41] Use include for files being included conditionally Signed-off-by: Madhura Jayaratne --- libraries/common.inc.php | 2 +- .../controllers/DatabaseStructureController.class.php | 2 +- libraries/plugins/auth/AuthenticationCookie.class.php | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/common.inc.php b/libraries/common.inc.php index 6efd36b909..bcb6809d2a 100644 --- a/libraries/common.inc.php +++ b/libraries/common.inc.php @@ -1046,7 +1046,7 @@ if (! defined('PMA_MINIMUM_COMMON')) { /** * Charset information */ - require_once './libraries/mysql_charsets.inc.php'; + include_once './libraries/mysql_charsets.inc.php'; if (!isset($mysql_charsets)) { $mysql_charsets = array(); diff --git a/libraries/controllers/DatabaseStructureController.class.php b/libraries/controllers/DatabaseStructureController.class.php index babac4318e..7e4bca1e7e 100644 --- a/libraries/controllers/DatabaseStructureController.class.php +++ b/libraries/controllers/DatabaseStructureController.class.php @@ -161,7 +161,7 @@ class DatabaseStructureController extends DatabaseController return; } - require_once 'libraries/replication.inc.php'; + include_once 'libraries/replication.inc.php'; PMA_PageSettings::showGroup('DbStructure'); diff --git a/libraries/plugins/auth/AuthenticationCookie.class.php b/libraries/plugins/auth/AuthenticationCookie.class.php index 4e3f7e4f85..8a56db5706 100644 --- a/libraries/plugins/auth/AuthenticationCookie.class.php +++ b/libraries/plugins/auth/AuthenticationCookie.class.php @@ -38,10 +38,10 @@ if (! function_exists('openssl_encrypt') || ! function_exists('openssl_random_pseudo_bytes') || PHP_VERSION_ID < 50304 ) { - require PHPSECLIB_INC_DIR . '/Crypt/Base.php'; - require PHPSECLIB_INC_DIR . '/Crypt/Rijndael.php'; - require PHPSECLIB_INC_DIR . '/Crypt/AES.php'; - require PHPSECLIB_INC_DIR . '/Crypt/Random.php'; + include PHPSECLIB_INC_DIR . '/Crypt/Base.php'; + include PHPSECLIB_INC_DIR . '/Crypt/Rijndael.php'; + include PHPSECLIB_INC_DIR . '/Crypt/AES.php'; + include PHPSECLIB_INC_DIR . '/Crypt/Random.php'; } /** From 5f55156c81d9f93bffaebae984dbabbfb43c1d4a Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 21:17:42 +1000 Subject: [PATCH 09/41] Fix doc comments Signed-off-by: Madhura Jayaratne --- test/classes/VersionInformation_test.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/classes/VersionInformation_test.php b/test/classes/VersionInformation_test.php index 4b990a9407..fac2ceab22 100644 --- a/test/classes/VersionInformation_test.php +++ b/test/classes/VersionInformation_test.php @@ -22,8 +22,10 @@ class VersionInformationTest extends PHPUnit_Framework_TestCase private $_releases; /** - * (non-PHPdoc) - * @see PHPUnit_Framework_TestCase::setUp() + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + * + * @return void */ protected function setUp() { @@ -51,7 +53,6 @@ class VersionInformationTest extends PHPUnit_Framework_TestCase $this->_releases[] = $release; } - /** * Test version checking * @@ -229,6 +230,11 @@ class VersionInformationTest extends PHPUnit_Framework_TestCase $this->assertEquals('4.0.10.10', $compatible['version']); } + /** + * Tests evaluateVersionCondition() method + * + * @return void + */ public function testEvaluateVersionCondition() { $mockVersionInfo = $this->getMockBuilder('VersionInformation') From 2da36e93b23aaf749fae590f690585447beb6d1c Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 22 Sep 2015 21:35:05 +1000 Subject: [PATCH 10/41] Fix #11464 phpMyAdmin suggests upgrading to newer version not usable on that system Signed-off-by: Madhura Jayaratne --- ChangeLog | 1 + js/functions.js | 2 +- libraries/Util.class.php | 155 ------------- libraries/VersionInformation.php | 270 +++++++++++++++++++++++ setup/frames/index.inc.php | 1 + setup/lib/index.lib.php | 17 +- test/classes/PMA_Util_test.php | 66 ------ test/classes/VersionInformation_test.php | 260 ++++++++++++++++++++++ version_check.php | 19 +- 9 files changed, 560 insertions(+), 231 deletions(-) create mode 100644 libraries/VersionInformation.php create mode 100644 test/classes/VersionInformation_test.php diff --git a/ChangeLog b/ChangeLog index 794d5682d5..a7448c098f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ phpMyAdmin - ChangeLog - issue #11480 Notice Undefined index: drop_database - issue #11486 Server variable edition in ANSI_QUOTES sql_mode: losing current value - issue #11491 Propose table structure broken +- issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system 4.5.0.0 (not yet released) + rfe Pagination for GIS visualization diff --git a/js/functions.js b/js/functions.js index 5e6e9d6b48..4a95ee9fbc 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3971,7 +3971,7 @@ AJAX.registerOnload('functions.js', function () { * Load version information asynchronously. */ if ($('li.jsversioncheck').length > 0) { - $.getJSON('version_check.php', {}, PMA_current_version); + $.getJSON('version_check.php', {'server' : PMA_commonParams.get('server')}, PMA_current_version); } if ($('#is_git_revision').length > 0) { diff --git a/libraries/Util.class.php b/libraries/Util.class.php index 875bc8e438..b7dff92fa9 100644 --- a/libraries/Util.class.php +++ b/libraries/Util.class.php @@ -4372,161 +4372,6 @@ class PMA_Util curl_setopt($curl_handle, CURLOPT_USERAGENT, 'phpMyAdmin/' . PMA_VERSION); return $curl_handle; } - /** - * Returns information with latest version from phpmyadmin.net - * - * @return object JSON decoded object with the data - */ - public static function getLatestVersion() - { - if (!$GLOBALS['cfg']['VersionCheck']) { - return new stdClass(); - } - - // wait 3s at most for server response, it's enough to get information - // from a working server - $connection_timeout = 3; - - $response = '{}'; - // Get response text from phpmyadmin.net or from the session - // Update cache every 6 hours - if (isset($_SESSION['cache']['version_check']) - && time() < $_SESSION['cache']['version_check']['timestamp'] + 3600 * 6 - ) { - $save = false; - $response = $_SESSION['cache']['version_check']['response']; - } else { - $save = true; - $file = 'https://www.phpmyadmin.net/home_page/version.json'; - if (ini_get('allow_url_fopen')) { - $context = array( - 'http' => array( - 'request_fulluri' => true, - 'timeout' => $connection_timeout, - ) - ); - $context = PMA_Util::handleContext($context); - if (! defined('TESTSUITE')) { - session_write_close(); - } - $response = file_get_contents( - $file, - false, - stream_context_create($context) - ); - } else if (function_exists('curl_init')) { - $curl_handle = curl_init($file); - if ($curl_handle === false) { - return null; - } - $curl_handle = PMA_Util::configureCurl($curl_handle); - curl_setopt( - $curl_handle, - CURLOPT_HEADER, - false - ); - curl_setopt( - $curl_handle, - CURLOPT_RETURNTRANSFER, - true - ); - curl_setopt( - $curl_handle, - CURLOPT_TIMEOUT, - $connection_timeout - ); - if (! defined('TESTSUITE')) { - session_write_close(); - } - $response = curl_exec($curl_handle); - } - } - - $data = json_decode($response); - if (is_object($data) - && ! empty($data->version) - && ! empty($data->date) - && $save - ) { - if (! isset($_SESSION) && ! defined('TESTSUITE')) { - ini_set('session.use_only_cookies', 'false'); - ini_set('session.use_cookies', 'false'); - ini_set('session.use_trans_sid', 'false'); - ini_set('session.cache_limiter', 'nocache'); - session_start(); - } - $_SESSION['cache']['version_check'] = array( - 'response' => $response, - 'timestamp' => time() - ); - } - return $data; - } - - /** - * Calculates numerical equivalent of phpMyAdmin version string - * - * @param string $version version - * - * @return mixed false on failure, integer on success - */ - public static function versionToInt($version) - { - $parts = explode('-', $version); - if (count($parts) > 1) { - $suffix = $parts[1]; - } else { - $suffix = ''; - } - $parts = explode('.', $parts[0]); - - $result = 0; - - if (count($parts) >= 1 && is_numeric($parts[0])) { - $result += 1000000 * $parts[0]; - } - - if (count($parts) >= 2 && is_numeric($parts[1])) { - $result += 10000 * $parts[1]; - } - - if (count($parts) >= 3 && is_numeric($parts[2])) { - $result += 100 * $parts[2]; - } - - if (count($parts) >= 4 && is_numeric($parts[3])) { - $result += 1 * $parts[3]; - } - - if (!empty($suffix)) { - $matches = array(); - if (preg_match('/^(\D+)(\d+)$/', $suffix, $matches)) { - $suffix = $matches[1]; - $result += intval($matches[2]); - } - switch ($suffix) { - case 'pl': - $result += 60; - break; - case 'rc': - $result += 30; - break; - case 'beta': - $result += 20; - break; - case 'alpha': - $result += 10; - break; - case 'dev': - $result += 0; - break; - } - } else { - $result += 50; // for final - } - - return $result; - } /** * Add fractional seconds to time, datetime and timestamp strings. diff --git a/libraries/VersionInformation.php b/libraries/VersionInformation.php new file mode 100644 index 0000000000..c7363f8da7 --- /dev/null +++ b/libraries/VersionInformation.php @@ -0,0 +1,270 @@ + array( + 'request_fulluri' => true, + 'timeout' => $connection_timeout, + ) + ); + $context = PMA_Util::handleContext($context); + if (! defined('TESTSUITE')) { + session_write_close(); + } + $response = file_get_contents( + $file, + false, + stream_context_create($context) + ); + } else if (function_exists('curl_init')) { + $curl_handle = curl_init($file); + if ($curl_handle === false) { + return null; + } + $curl_handle = PMA_Util::configureCurl($curl_handle); + curl_setopt( + $curl_handle, + CURLOPT_HEADER, + false + ); + curl_setopt( + $curl_handle, + CURLOPT_RETURNTRANSFER, + true + ); + curl_setopt( + $curl_handle, + CURLOPT_TIMEOUT, + $connection_timeout + ); + if (! defined('TESTSUITE')) { + session_write_close(); + } + $response = curl_exec($curl_handle); + } + } + + $data = json_decode($response); + if (is_object($data) + && ! empty($data->version) + && ! empty($data->date) + && $save + ) { + if (! isset($_SESSION) && ! defined('TESTSUITE')) { + ini_set('session.use_only_cookies', 'false'); + ini_set('session.use_cookies', 'false'); + ini_set('session.use_trans_sid', 'false'); + ini_set('session.cache_limiter', 'nocache'); + session_start(); + } + $_SESSION['cache']['version_check'] = array( + 'response' => $response, + 'timestamp' => time() + ); + } + return $data; + } + + /** + * Calculates numerical equivalent of phpMyAdmin version string + * + * @param string $version version + * + * @return mixed false on failure, integer on success + */ + public function versionToInt($version) + { + $parts = explode('-', $version); + if (count($parts) > 1) { + $suffix = $parts[1]; + } else { + $suffix = ''; + } + $parts = explode('.', $parts[0]); + + $result = 0; + + if (count($parts) >= 1 && is_numeric($parts[0])) { + $result += 1000000 * $parts[0]; + } + + if (count($parts) >= 2 && is_numeric($parts[1])) { + $result += 10000 * $parts[1]; + } + + if (count($parts) >= 3 && is_numeric($parts[2])) { + $result += 100 * $parts[2]; + } + + if (count($parts) >= 4 && is_numeric($parts[3])) { + $result += 1 * $parts[3]; + } + + if (!empty($suffix)) { + $matches = array(); + if (preg_match('/^(\D+)(\d+)$/', $suffix, $matches)) { + $suffix = $matches[1]; + $result += intval($matches[2]); + } + switch ($suffix) { + case 'pl': + $result += 60; + break; + case 'rc': + $result += 30; + break; + case 'beta': + $result += 20; + break; + case 'alpha': + $result += 10; + break; + case 'dev': + $result += 0; + break; + } + } else { + $result += 50; // for final + } + + return $result; + } + + /** + * Returns the version and date of the latest phpMyAdmin version compatible + * with avilable PHP and MySQL versions + * + * @param array $releases array of information related to each version + * + * @return array containing the version and date of latest compatibel version + */ + public function getLatestCompatibleVersion($releases) + { + foreach ($releases as $release) { + $phpVersions = $release->php_versions; + $phpConditions = explode(",", $phpVersions); + foreach ($phpConditions as $phpCondition) { + if (! $this->evaluateVersionCondition("PHP", $phpCondition)) { + continue 2; + } + } + + // We evalute MySQL version constraint if there are only + // one server configured. + if (count($GLOBALS['cfg']['Servers']) == 1) { + $mysqlVersions = $release->mysql_versions; + $mysqlConditions = explode(",", $mysqlVersions); + foreach ($mysqlConditions as $mysqlCondition) { + if (! $this->evaluateVersionCondition('MySQL', $mysqlCondition)) { + continue 2; + } + } + } + + return array( + 'version' => $release->version, + 'date' => $release->date, + ); + } + + // no compatible version + return null; + } + + /** + * Checks whether PHP or MySQL version meets supplied version condition + * + * @param string $type PHP or MySQL + * @param string $condition version condition + * + * @return boolean whether the condition is met + */ + public function evaluateVersionCondition($type, $condition) + { + $operator = null; + $operators = array("<=", ">=", "!=", "<>", "<", ">", "="); // preserve order + foreach ($operators as $oneOperator) { + if (strpos($condition, $oneOperator) === 0) { + $operator = $oneOperator; + $version = substr($condition, strlen($oneOperator)); + break; + } + } + + $myVersion = null; + if ($type == 'PHP') { + $myVersion = $this->getPHPVersion(); + } elseif ($type == 'MySQL') { + $myVersion = $this->getMySQLVersion(); + } + + if ($myVersion != null && $operator != null) { + return version_compare($myVersion, $version, $operator); + } + return false; + } + + /** + * Returns the PHP version + * + * @return string PHP version + */ + protected function getPHPVersion() + { + return PHP_VERSION; + } + + /** + * Returns the MySQL version + * + * @return string MySQL version + */ + protected function getMySQLVersion() + { + return PMA_Util::cacheGet('PMA_MYSQL_STR_VERSION'); + } +} +?> \ No newline at end of file diff --git a/setup/frames/index.inc.php b/setup/frames/index.inc.php index 3c4a9e1509..ae881d9287 100644 --- a/setup/frames/index.inc.php +++ b/setup/frames/index.inc.php @@ -16,6 +16,7 @@ if (!defined('PHPMYADMIN')) { require_once './libraries/display_select_lang.lib.php'; require_once './libraries/config/FormDisplay.class.php'; require_once './libraries/config/ServerConfigChecks.class.php'; +require_once './libraries/VersionInformation.php'; require_once './setup/lib/index.lib.php'; // prepare unfiltered language list diff --git a/setup/lib/index.lib.php b/setup/lib/index.lib.php index 586c45b779..ac07d27db9 100644 --- a/setup/lib/index.lib.php +++ b/setup/lib/index.lib.php @@ -108,7 +108,8 @@ function PMA_versionCheck() $message_id = uniqid('version_check'); // Fetch data - $version_data = PMA_Util::getLatestVersion(); + $versionInformation = new VersionInformation(); + $version_data = $versionInformation->getLatestVersion(); if (empty($version_data)) { PMA_messagesSet( @@ -123,10 +124,16 @@ function PMA_versionCheck() return; } - $version = $version_data->version; - $date = $version_data->date; + $releases = $version_data->releases; + $latestCompatible = $versionInformation->getLatestCompatibleVersion($releases); + if ($latestCompatible != null) { + $version = $latestCompatible['version']; + $date = $latestCompatible['date']; + } else { + return; + } - $version_upstream = PMA_Util::versionToInt($version); + $version_upstream = $versionInformation->versionToInt($version); if ($version_upstream === false) { PMA_messagesSet( 'error', @@ -137,7 +144,7 @@ function PMA_versionCheck() return; } - $version_local = PMA_Util::versionToInt( + $version_local = $versionInformation->versionToInt( $GLOBALS['PMA_Config']->get('PMA_VERSION') ); if ($version_local === false) { diff --git a/test/classes/PMA_Util_test.php b/test/classes/PMA_Util_test.php index 034fc80bbb..2d896c0634 100644 --- a/test/classes/PMA_Util_test.php +++ b/test/classes/PMA_Util_test.php @@ -71,72 +71,6 @@ class PMA_Util_Test extends PHPUnit_Framework_TestCase ); } - /** - * Test version checking - * - * @return void - * - * @group large - */ - public function testGetLatestVersion() - { - $GLOBALS['cfg']['ProxyUrl'] = PROXY_URL; - $GLOBALS['cfg']['ProxyUser'] = PROXY_USER; - $GLOBALS['cfg']['ProxyPass'] = PROXY_PASS; - $GLOBALS['cfg']['VersionCheck'] = true; - $version = PMA_Util::getLatestVersion(); - $this->assertNotEmpty($version->version); - $this->assertNotEmpty($version->date); - } - - /** - * Test version to int conversion. - * - * @param string $version Version string - * @param int $numeric Integer matching version - * - * @return void - * - * @dataProvider dataVersions - */ - public function testVersionToInt($version, $numeric) - { - $this->assertEquals( - $numeric, - PMA_Util::versionToInt($version) - ); - } - - /** - * Data provider for version parsing - * - * @return array with test data - */ - public function dataVersions() - { - return array( - array('1.0.0', 1000050), - array('2.0.0.2-dev', 2000002), - array('3.4.2.1', 3040251), - array('3.4.2-dev3', 3040203), - array('3.4.2-dev', 3040200), - array('3.4.2-pl', 3040260), - array('3.4.2-pl3', 3040263), - array('4.4.2-rc22', 4040252), - array('4.4.2-rc', 4040230), - array('4.4.22-beta22', 4042242), - array('4.4.22-beta', 4042220), - array('4.4.21-alpha22', 4042132), - array('4.4.20-alpha', 4042010), - array('4.40.20-alpha-dev', 4402010), - array('4.4a', 4000050), - array('4.4.4-test', 4040400), - array('4.1.0', 4010050), - array('4.0.1.3', 4000153), - array('4.1-dev', 4010000), - ); - } - /** * Test for isForeignKeyCheck * diff --git a/test/classes/VersionInformation_test.php b/test/classes/VersionInformation_test.php new file mode 100644 index 0000000000..fac2ceab22 --- /dev/null +++ b/test/classes/VersionInformation_test.php @@ -0,0 +1,260 @@ +_releases = array(); + + $release = new stdClass(); + $release->date = "2015-09-08"; + $release->php_versions = ">=5.3,<7.1"; + $release->version = "4.4.14.1"; + $release->mysql_versions = ">=5.5"; + $this->_releases[] = $release; + + $release = new stdClass(); + $release->date = "2015-09-09"; + $release->php_versions = ">=5.3,<7.0"; + $release->version = "4.4.13.3"; + $release->mysql_versions = ">=5.5"; + $this->_releases[] = $release; + + $release = new stdClass(); + $release->date = "2015-05-13"; + $release->php_versions = ">=5.2,<5.3"; + $release->version = "4.0.10.10"; + $release->mysql_versions = ">=5.0"; + $this->_releases[] = $release; + } + + /** + * Test version checking + * + * @return void + * + * @group large + */ + public function testGetLatestVersion() + { + $GLOBALS['cfg']['ProxyUrl'] = PROXY_URL; + $GLOBALS['cfg']['ProxyUser'] = PROXY_USER; + $GLOBALS['cfg']['ProxyPass'] = PROXY_PASS; + $GLOBALS['cfg']['VersionCheck'] = true; + $versionInformation = new VersionInformation(); + $version = $versionInformation->getLatestVersion(); + $this->assertNotEmpty($version->version); + $this->assertNotEmpty($version->date); + } + + /** + * Test version to int conversion. + * + * @param string $version Version string + * @param int $numeric Integer matching version + * + * @return void + * + * @dataProvider dataVersions + */ + public function testVersionToInt($version, $numeric) + { + $versionInformation = new VersionInformation(); + $this->assertEquals( + $numeric, + $versionInformation->versionToInt($version) + ); + } + + + /** + * Data provider for version parsing + * + * @return array with test data + */ + public function dataVersions() + { + return array( + array('1.0.0', 1000050), + array('2.0.0.2-dev', 2000002), + array('3.4.2.1', 3040251), + array('3.4.2-dev3', 3040203), + array('3.4.2-dev', 3040200), + array('3.4.2-pl', 3040260), + array('3.4.2-pl3', 3040263), + array('4.4.2-rc22', 4040252), + array('4.4.2-rc', 4040230), + array('4.4.22-beta22', 4042242), + array('4.4.22-beta', 4042220), + array('4.4.21-alpha22', 4042132), + array('4.4.20-alpha', 4042010), + array('4.40.20-alpha-dev', 4402010), + array('4.4a', 4000050), + array('4.4.4-test', 4040400), + array('4.1.0', 4010050), + array('4.0.1.3', 4000153), + array('4.1-dev', 4010000), + ); + } + + /** + * Tests getLatestCompatibleVersion() when there is only one server confgiured + * + * @return void + */ + public function testGetLatestCompatibleVersionWithSingleServer() + { + $GLOBALS['cfg']['Servers'] = array( + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '<7.1') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(2)) + ->method('evaluateVersionCondition') + ->with('MySQL', '>=5.5') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.4.14.1', $compatible['version']); + + } + + /** + * Tests getLatestCompatibleVersion() when there are multiple servers configured + * + * @return void + */ + public function testGetLaestCompatibleVersionWithMultipleServers() + { + $GLOBALS['cfg']['Servers'] = array( + array(), + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '<7.1') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.4.14.1', $compatible['version']); + } + + /** + * Tests getLatestCompatibleVersion() with an old PHP version + * + * @return void + */ + public function testGetLaestCompatibleVersionWithOldPHPVersion() + { + $GLOBALS['cfg']['Servers'] = array( + array(), + array() + ); + + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('evaluateVersionCondition')) + ->getMock(); + + $mockVersionInfo->expects($this->at(0)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(false)); + + $mockVersionInfo->expects($this->at(1)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.3') + ->will($this->returnValue(false)); + + $mockVersionInfo->expects($this->at(2)) + ->method('evaluateVersionCondition') + ->with('PHP', '>=5.2') + ->will($this->returnValue(true)); + + $mockVersionInfo->expects($this->at(3)) + ->method('evaluateVersionCondition') + ->with('PHP', '<5.3') + ->will($this->returnValue(true)); + + $compatible = $mockVersionInfo + ->getLatestCompatibleVersion($this->_releases); + $this->assertEquals('4.0.10.10', $compatible['version']); + } + + /** + * Tests evaluateVersionCondition() method + * + * @return void + */ + public function testEvaluateVersionCondition() + { + $mockVersionInfo = $this->getMockBuilder('VersionInformation') + ->setMethods(array('getPHPVersion')) + ->getMock(); + + $mockVersionInfo->expects($this->any()) + ->method('getPHPVersion') + ->will($this->returnValue('5.2.4')); + + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '<=5.3')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '<5.3')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '>=5.2')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '>5.2')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '!=5.3')); + + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '<=5.2')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '<5.2')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '>=7.0')); + $this->assertFalse($mockVersionInfo->evaluateVersionCondition('PHP', '>7.0')); + $this->assertTrue($mockVersionInfo->evaluateVersionCondition('PHP', '!=5.2')); + } +} \ No newline at end of file diff --git a/version_check.php b/version_check.php index ae097e88df..0f7f11cafa 100644 --- a/version_check.php +++ b/version_check.php @@ -10,19 +10,30 @@ define('PMA_MINIMUM_COMMON', true); require_once 'libraries/common.inc.php'; require_once 'libraries/Util.class.php'; +require_once 'libraries/VersionInformation.php'; // Always send the correct headers header('Content-type: application/json; charset=UTF-8'); -$version = PMA_Util::getLatestVersion(); +$versionInformation = new VersionInformation(); +$versionDetails = $versionInformation->getLatestVersion(); -if (empty($version)) { +if (empty($versionDetails)) { echo json_encode(array()); } else { + $latestCompatible = $versionInformation->getLatestCompatibleVersion( + $versionDetails->releases + ); + $version = ''; + $date = ''; + if ($latestCompatible != null) { + $version = $latestCompatible['version']; + $date = $latestCompatible['date']; + } echo json_encode( array( - 'version' => (! empty($version->version) ? $version->version : ''), - 'date' => (! empty($version->date) ? $version->date : ''), + 'version' => (! empty($version) ? $version : ''), + 'date' => (! empty($date) ? $date : ''), ) ); } From 38cb4807dd335898862126ada85a9a83f3d69e23 Mon Sep 17 00:00:00 2001 From: Martin Lacina Date: Sun, 20 Sep 2015 20:15:13 +0200 Subject: [PATCH 11/41] Translated using Weblate (Slovak) Currently translated at 82.8% (2659 of 3209 strings) [CI skip] --- po/sk.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/sk.po b/po/sk.po index 6c18ac26cf..4b295bcf81 100644 --- a/po/sk.po +++ b/po/sk.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-09-15 10:38+0200\n" +"PO-Revision-Date: 2015-09-20 20:15+0200\n" "Last-Translator: Martin Lacina \n" "Language-Team: Slovak " "\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.4\n" #: changelog.php:37 license.php:30 #, php-format @@ -12171,7 +12171,7 @@ msgstr "" #: libraries/server_privileges.lib.php:818 msgid "Requires a valid X509 certificate." -msgstr "" +msgstr "Vyžaduje platný X509 certifikát." #: libraries/server_privileges.lib.php:869 msgid "Resource limits" From 4412a3aab6f34d56aa04dfd100a3f2320a88b688 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Tue, 22 Sep 2015 08:12:37 -0400 Subject: [PATCH 12/41] Fix typos Signed-off-by: Marc Delisle --- libraries/VersionInformation.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/VersionInformation.php b/libraries/VersionInformation.php index c7363f8da7..7d03e6e67d 100644 --- a/libraries/VersionInformation.php +++ b/libraries/VersionInformation.php @@ -1,7 +1,7 @@ \ No newline at end of file +?> From 6a635f84c09eddfbb3de292a9370125ce21eae56 Mon Sep 17 00:00:00 2001 From: Hauke Henningsen Date: Wed, 23 Sep 2015 03:11:55 +0200 Subject: [PATCH 13/41] Translated using Weblate (German) Currently translated at 100.0% (3209 of 3209 strings) [CI skip] --- po/de.po | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/po/de.po b/po/de.po index e2fbfc64b1..93905e1c95 100644 --- a/po/de.po +++ b/po/de.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-09-01 02:22+0200\n" +"PO-Revision-Date: 2015-09-23 03:11+0200\n" "Last-Translator: Hauke Henningsen \n" -"Language-Team: German \n" +"Language-Team: German " +"\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -15112,10 +15112,9 @@ msgid "Operator" msgstr "Operator" #: templates/database/designer/database_tables.phtml:29 -#, fuzzy #| msgid "Move columns" msgid "Show/hide columns" -msgstr "Spalten verschieben" +msgstr "Anzeigen/Verbergen von Spalten" #: templates/database/designer/database_tables.phtml:40 msgid "See table structure" From 796e6ae09301a7ea8aae74fdb3bb44538c0f5151 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 23 Sep 2015 06:06:13 -0400 Subject: [PATCH 14/41] 4.5.0 release Signed-off-by: Marc Delisle --- ChangeLog | 2 +- README | 2 +- doc/conf.py | 2 +- libraries/Config.class.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5dd1c8470c..1750bf616c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ phpMyAdmin - ChangeLog ====================== -4.5.0.0 (not yet released) +4.5.0.0 (2015-09-23) + rfe Pagination for GIS visualization + issue #6207 Usability improvements for console + issue #6310 Access to Add columns text-box and Go button when creating table diff --git a/README b/README index 6593ee1909..0876cb7a8e 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ phpMyAdmin - Readme =================== -Version 4.5.0-rc1 +Version 4.5.0 A set of PHP-scripts to manage MySQL over the web. diff --git a/doc/conf.py b/doc/conf.py index 246fd922ce..2e591960dd 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -51,7 +51,7 @@ copyright = u'2012 - 2014, The phpMyAdmin devel team' # built documents. # # The short X.Y version. -version = '4.5.0-rc1' +version = '4.5.0' # The full version, including alpha/beta/rc tags. release = version diff --git a/libraries/Config.class.php b/libraries/Config.class.php index f4eb8800ae..b67ae24237 100644 --- a/libraries/Config.class.php +++ b/libraries/Config.class.php @@ -114,7 +114,7 @@ class PMA_Config */ public function checkSystem() { - $this->set('PMA_VERSION', '4.5.0-rc1'); + $this->set('PMA_VERSION', '4.5.0'); /** * @deprecated */ From 8e093ffb521b72a509da87541220800f47b9ddd9 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 23 Sep 2015 06:07:14 -0400 Subject: [PATCH 15/41] 4.5.0 release date Signed-off-by: Marc Delisle --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a7448c098f..b286ebdb90 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,7 +9,7 @@ phpMyAdmin - ChangeLog - issue #11491 Propose table structure broken - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system -4.5.0.0 (not yet released) +4.5.0.0 (2015-09-23) + rfe Pagination for GIS visualization + issue #6207 Usability improvements for console + issue #6310 Access to Add columns text-box and Go button when creating table From e2c5552ec72cd90cd652be97f38aeb95df9e45e2 Mon Sep 17 00:00:00 2001 From: Hauke Henningsen Date: Wed, 23 Sep 2015 03:11:52 +0200 Subject: [PATCH 16/41] Translated using Weblate (German) Currently translated at 100.0% (3209 of 3209 strings) [CI skip] --- po/de.po | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/po/de.po b/po/de.po index 1672191a4a..e80650fa43 100644 --- a/po/de.po +++ b/po/de.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-09-01 02:22+0200\n" +"PO-Revision-Date: 2015-09-23 03:11+0200\n" "Last-Translator: Hauke Henningsen \n" -"Language-Team: German \n" +"Language-Team: German " +"\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -15112,10 +15112,9 @@ msgid "Operator" msgstr "Operator" #: templates/database/designer/database_tables.phtml:29 -#, fuzzy #| msgid "Move columns" msgid "Show/hide columns" -msgstr "Spalten verschieben" +msgstr "Anzeigen/Verbergen von Spalten" #: templates/database/designer/database_tables.phtml:40 msgid "See table structure" From 692c555c3fd625f9efdee7abf8483cce2d0d6986 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 23 Sep 2015 08:35:27 -0400 Subject: [PATCH 17/41] Replace the mcrypt extension suggestion with openssl See http://blog.remirepo.net/post/2015/07/07/About-libmcrypt-and-php-mcrypt Signed-off-by: Marc Delisle --- doc/require.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/require.rst b/doc/require.rst index cb524632a3..49060836af 100644 --- a/doc/require.rst +++ b/doc/require.rst @@ -20,8 +20,8 @@ PHP * You need GD2 support in PHP to display inline thumbnails of JPEGs ("image/jpeg: inline") with their original aspect ratio. -* When using the cookie authentication (the default), the `mcrypt - `_ extension is strongly suggested. +* When using the cookie authentication (the default), the `openssl + `_ extension is strongly suggested. * To support upload progress bars, see :ref:`faq2_9`. From 053edda33f5bd957726b8bc82167ec8d30e705bc Mon Sep 17 00:00:00 2001 From: Nisarg Jhaveri Date: Thu, 24 Sep 2015 00:22:58 +0530 Subject: [PATCH 18/41] Fix #11492, AUTO_INCREMENT statements are partly missing from exports Signed-off-by: Nisarg Jhaveri --- ChangeLog | 1 + libraries/plugins/export/ExportSql.class.php | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b286ebdb90..2cc2273703 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ phpMyAdmin - ChangeLog - issue #11486 Server variable edition in ANSI_QUOTES sql_mode: losing current value - issue #11491 Propose table structure broken - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system +- issue #11492 AUTO_INCREMENT statements are partly missing from exports 4.5.0.0 (2015-09-23) + rfe Pagination for GIS visualization diff --git a/libraries/plugins/export/ExportSql.class.php b/libraries/plugins/export/ExportSql.class.php index 0993486e63..62e89b4e33 100644 --- a/libraries/plugins/export/ExportSql.class.php +++ b/libraries/plugins/export/ExportSql.class.php @@ -1709,13 +1709,12 @@ class ExportSql extends ExportPlugin } // Generating auto-increment-related query. - if ((! empty($auto_increment)) - && ($update_indexes_increments) - && ($statement->entityOptions->has('AUTO_INCREMENT') !== false) - ) { + if ((! empty($auto_increment)) && ($update_indexes_increments)) { $sql_auto_increments_query = $alter_header . $crlf . ' MODIFY ' . implode(',' . $crlf . ' MODIFY ', $auto_increment); - if (isset($GLOBALS['sql_auto_increment'])) { + if (isset($GLOBALS['sql_auto_increment']) + && ($statement->entityOptions->has('AUTO_INCREMENT') !== false) + ) { $sql_auto_increments_query .= ', AUTO_INCREMENT=' . $statement->entityOptions->has('AUTO_INCREMENT'); } From 2b089a019adb31ae62147241c385b513f1dbc9c9 Mon Sep 17 00:00:00 2001 From: Victor Laureano Date: Wed, 23 Sep 2015 17:13:03 +0200 Subject: [PATCH 19/41] Translated using Weblate (Portuguese (Brazil)) Currently translated at 92.4% (2966 of 3209 strings) [CI skip] --- po/pt_BR.po | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 7d73b30f0b..77c00bff7b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-08-03 23:39+0200\n" -"Last-Translator: Guilherme Seibt \n" -"Language-Team: Portuguese (Brazil) \n" +"PO-Revision-Date: 2015-09-23 17:13+0200\n" +"Last-Translator: Victor Laureano \n" +"Language-Team: Portuguese (Brazil) " +"\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -653,7 +653,6 @@ msgstr "" "pma. Mais informações disponíveis em %s." #: index.php:163 -#, fuzzy #| msgid "General Settings" msgid "General settings" msgstr "Configurações gerais" @@ -669,10 +668,9 @@ msgid "Server connection collation" msgstr "Collation de conexão do servidor MySQL" #: index.php:229 -#, fuzzy #| msgid "Appearance Settings" msgid "Appearance settings" -msgstr "Configurações de aparência" +msgstr "Configurações do Tema" #: index.php:259 prefs_manage.php:285 msgid "More settings" @@ -961,12 +959,13 @@ msgid "" "Do you really want to DROP the selected partition(s)? This will also DELETE " "the data related to the selected partition(s)!" msgstr "" +"Você realmente quer APAGAR a(s) partição(ões) seleciona(s)? Isso também irá " +"DELETAR os dados relacionados com a(s) partição(ões) seleciona(s)!" #: js/messages.php:65 -#, fuzzy #| msgid "Do you really want to delete the search \"%s\"?" msgid "Do you really want to TRUNCATE the selected partition(s)?" -msgstr "Você realmente deseja excluir a busca \"%s\"?" +msgstr "Você realmente deseja LIMPAR a(s) partição(ões) seleciona(s)?" #: js/messages.php:67 msgid "" From 82dc704ff72e0110d4a013c4254213276909c6e6 Mon Sep 17 00:00:00 2001 From: Victor Laureano Date: Wed, 23 Sep 2015 17:13:08 +0200 Subject: [PATCH 20/41] Translated using Weblate (Portuguese (Brazil)) Currently translated at 92.4% (2966 of 3209 strings) [CI skip] --- po/pt_BR.po | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index e9166235db..6d90492c74 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-08-03 23:39+0200\n" -"Last-Translator: Guilherme Seibt \n" -"Language-Team: Portuguese (Brazil) \n" +"PO-Revision-Date: 2015-09-23 17:13+0200\n" +"Last-Translator: Victor Laureano \n" +"Language-Team: Portuguese (Brazil) " +"\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -653,7 +653,6 @@ msgstr "" "pma. Mais informações disponíveis em %s." #: index.php:163 -#, fuzzy #| msgid "General Settings" msgid "General settings" msgstr "Configurações gerais" @@ -669,10 +668,9 @@ msgid "Server connection collation" msgstr "Collation de conexão do servidor MySQL" #: index.php:229 -#, fuzzy #| msgid "Appearance Settings" msgid "Appearance settings" -msgstr "Configurações de aparência" +msgstr "Configurações do Tema" #: index.php:259 prefs_manage.php:285 msgid "More settings" @@ -961,12 +959,13 @@ msgid "" "Do you really want to DROP the selected partition(s)? This will also DELETE " "the data related to the selected partition(s)!" msgstr "" +"Você realmente quer APAGAR a(s) partição(ões) seleciona(s)? Isso também irá " +"DELETAR os dados relacionados com a(s) partição(ões) seleciona(s)!" #: js/messages.php:65 -#, fuzzy #| msgid "Do you really want to delete the search \"%s\"?" msgid "Do you really want to TRUNCATE the selected partition(s)?" -msgstr "Você realmente deseja excluir a busca \"%s\"?" +msgstr "Você realmente deseja LIMPAR a(s) partição(ões) seleciona(s)?" #: js/messages.php:67 msgid "" From b5c731ab62e4f85b5f6beeca064796b0c946ed20 Mon Sep 17 00:00:00 2001 From: Nisarg Jhaveri Date: Thu, 24 Sep 2015 00:22:58 +0530 Subject: [PATCH 21/41] Backport 053edda33f5bd957726b8bc82167ec8d30e705bc Signed-off-by: Marc Delisle --- ChangeLog | 3 +++ libraries/plugins/export/ExportSql.class.php | 9 ++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1750bf616c..40b8ba6fd0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ phpMyAdmin - ChangeLog ====================== +4.5.0.1 (2015-09-24) +- issue #11492 AUTO_INCREMENT statements are partly missing from exports + 4.5.0.0 (2015-09-23) + rfe Pagination for GIS visualization + issue #6207 Usability improvements for console diff --git a/libraries/plugins/export/ExportSql.class.php b/libraries/plugins/export/ExportSql.class.php index 0993486e63..62e89b4e33 100644 --- a/libraries/plugins/export/ExportSql.class.php +++ b/libraries/plugins/export/ExportSql.class.php @@ -1709,13 +1709,12 @@ class ExportSql extends ExportPlugin } // Generating auto-increment-related query. - if ((! empty($auto_increment)) - && ($update_indexes_increments) - && ($statement->entityOptions->has('AUTO_INCREMENT') !== false) - ) { + if ((! empty($auto_increment)) && ($update_indexes_increments)) { $sql_auto_increments_query = $alter_header . $crlf . ' MODIFY ' . implode(',' . $crlf . ' MODIFY ', $auto_increment); - if (isset($GLOBALS['sql_auto_increment'])) { + if (isset($GLOBALS['sql_auto_increment']) + && ($statement->entityOptions->has('AUTO_INCREMENT') !== false) + ) { $sql_auto_increments_query .= ', AUTO_INCREMENT=' . $statement->entityOptions->has('AUTO_INCREMENT'); } From f322635e19c4732f679d14e29237ef086d93dee2 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Thu, 24 Sep 2015 04:09:31 -0400 Subject: [PATCH 22/41] Fix for #11492 moved to 4.5.0.1 Signed-off-by: Marc Delisle --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2cc2273703..a751a9d6a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,8 @@ phpMyAdmin - ChangeLog - issue #11486 Server variable edition in ANSI_QUOTES sql_mode: losing current value - issue #11491 Propose table structure broken - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system + +4.5.0.1 (2015-09-24) - issue #11492 AUTO_INCREMENT statements are partly missing from exports 4.5.0.0 (2015-09-23) From 50153dec8b9123fba6b7df8508c5b4c902ee2c80 Mon Sep 17 00:00:00 2001 From: Yizhou Qiang Date: Thu, 24 Sep 2015 08:55:50 +0200 Subject: [PATCH 23/41] Translated using Weblate (Chinese (China)) Currently translated at 76.9% (2470 of 3209 strings) [CI skip] --- po/zh_CN.po | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index df86efa3ba..387f03d8fa 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-09-03 04:02+0200\n" -"Last-Translator: Vincent Lau <3092849@qq.com>\n" -"Language-Team: Chinese (China) \n" +"PO-Revision-Date: 2015-09-24 08:55+0200\n" +"Last-Translator: Yizhou Qiang \n" +"Language-Team: Chinese (China) " +"\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -2453,17 +2453,16 @@ msgstr "忽略全部" #: js/messages.php:590 msgid "" "As per your settings, they are being submitted currently, please be patient." -msgstr "" +msgstr "正在提交您的设置,请耐心等待。" #: js/messages.php:598 msgid "Execute this query again?" msgstr "再次执行该查询?" #: js/messages.php:599 -#, fuzzy #| msgid "Do you really want to delete the search \"%s\"?" msgid "Do you really want to delete this bookmark?" -msgstr "您真的要删除搜索“%s”吗?" +msgstr "您真的要删除该书签吗?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." From f3aa17153e46fb247428ce9c033a1f9ea218e4fe Mon Sep 17 00:00:00 2001 From: Yizhou Qiang Date: Thu, 24 Sep 2015 08:55:53 +0200 Subject: [PATCH 24/41] Translated using Weblate (Chinese (China)) Currently translated at 76.9% (2470 of 3209 strings) [CI skip] --- po/zh_CN.po | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 86bdeb844f..0e14317a2b 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-09-03 04:02+0200\n" -"Last-Translator: Vincent Lau <3092849@qq.com>\n" -"Language-Team: Chinese (China) \n" +"PO-Revision-Date: 2015-09-24 08:55+0200\n" +"Last-Translator: Yizhou Qiang \n" +"Language-Team: Chinese (China) " +"\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -2453,17 +2453,16 @@ msgstr "忽略全部" #: js/messages.php:590 msgid "" "As per your settings, they are being submitted currently, please be patient." -msgstr "" +msgstr "正在提交您的设置,请耐心等待。" #: js/messages.php:598 msgid "Execute this query again?" msgstr "再次执行该查询?" #: js/messages.php:599 -#, fuzzy #| msgid "Do you really want to delete the search \"%s\"?" msgid "Do you really want to delete this bookmark?" -msgstr "您真的要删除搜索“%s”吗?" +msgstr "您真的要删除该书签吗?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." From 9e08133f49f0b99868fec434762366d08a45b6f8 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Thu, 24 Sep 2015 04:14:57 -0400 Subject: [PATCH 25/41] 4.5.0.1 release Signed-off-by: Marc Delisle --- README | 2 +- doc/conf.py | 2 +- libraries/Config.class.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index 0876cb7a8e..cbbc7b842c 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ phpMyAdmin - Readme =================== -Version 4.5.0 +Version 4.5.0.1 A set of PHP-scripts to manage MySQL over the web. diff --git a/doc/conf.py b/doc/conf.py index 2e591960dd..c1ea9bd112 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -51,7 +51,7 @@ copyright = u'2012 - 2014, The phpMyAdmin devel team' # built documents. # # The short X.Y version. -version = '4.5.0' +version = '4.5.0.1' # The full version, including alpha/beta/rc tags. release = version diff --git a/libraries/Config.class.php b/libraries/Config.class.php index b67ae24237..6d5d3eb41c 100644 --- a/libraries/Config.class.php +++ b/libraries/Config.class.php @@ -114,7 +114,7 @@ class PMA_Config */ public function checkSystem() { - $this->set('PMA_VERSION', '4.5.0'); + $this->set('PMA_VERSION', '4.5.0.1'); /** * @deprecated */ From 5bad4dab82e2a6246999400ab6ac8d064e9acf38 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Thu, 24 Sep 2015 09:27:17 -0400 Subject: [PATCH 26/41] Fixes #11495 'PMA_Microhistory' is undefined Signed-off-by: Marc Delisle --- ChangeLog | 1 + js/functions.js | 2 +- js/server_databases.js | 2 +- js/sql.js | 6 +++--- libraries/Footer.class.php | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a751a9d6a7..4d1fc02112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ phpMyAdmin - ChangeLog - issue #11486 Server variable edition in ANSI_QUOTES sql_mode: losing current value - issue #11491 Propose table structure broken - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system +- issue #11495 'PMA_Microhistory' is undefined 4.5.0.1 (2015-09-24) - issue #11492 AUTO_INCREMENT statements are partly missing from exports diff --git a/js/functions.js b/js/functions.js index 4a95ee9fbc..462c3e6e6e 100644 --- a/js/functions.js +++ b/js/functions.js @@ -2837,7 +2837,7 @@ AJAX.registerOnload('functions.js', function () { // Redirect to table structure page on creation of new table var params_12 = 'ajax_request=true&ajax_page_request=true'; if (! (history && history.pushState)) { - params_12 += PMA_Microhistory.menus.getRequestParam(); + params_12 += PMA_MicroHistory.menus.getRequestParam(); } tblStruct_url = 'tbl_structure.php?server=' + data._params.server + '&db='+ data._params.db + '&token=' + data._params.token + diff --git a/js/server_databases.js b/js/server_databases.js index 42cb7868b6..50506a5724 100644 --- a/js/server_databases.js +++ b/js/server_databases.js @@ -128,7 +128,7 @@ AJAX.registerOnload('server_databases.js', function () { dbStruct_url = dbStruct_url.replace(/amp;/ig, ''); var params = 'ajax_request=true&ajax_page_request=true'; if (! (history && history.pushState)) { - params += PMA_Microhistory.menus.getRequestParam(); + params += PMA_MicroHistory.menus.getRequestParam(); } $.get(dbStruct_url, params, AJAX.responseHandler); } else { diff --git a/js/sql.js b/js/sql.js index 6815f7ed69..13edb43943 100644 --- a/js/sql.js +++ b/js/sql.js @@ -396,12 +396,12 @@ AJAX.registerOnload('sql.js', function () { ); AJAX.handleMenu.replace(data._menu); } else { - PMA_Microhistory.menus.replace(data._menu); - PMA_Microhistory.menus.add(data._menuHash, data._menu); + PMA_MicroHistory.menus.replace(data._menu); + PMA_MicroHistory.menus.add(data._menuHash, data._menu); } } else if (data._menuHash) { if (! (history && history.pushState)) { - PMA_Microhistory.menus.replace(PMA_Microhistory.menus.get(data._menuHash)); + PMA_MicroHistory.menus.replace(PMA_MicroHistory.menus.get(data._menuHash)); } } diff --git a/libraries/Footer.class.php b/libraries/Footer.class.php index ddedcb4dba..3bcc06d73b 100644 --- a/libraries/Footer.class.php +++ b/libraries/Footer.class.php @@ -323,7 +323,7 @@ class PMA_Footer $this->_scripts->addCode( sprintf( 'if (! (history && history.pushState)) ' - . 'PMA_Microhistory.primer = {' + . 'PMA_MicroHistory.primer = {' . ' url: "%s",' . ' scripts: %s,' . ' menuHash: "%s"' From db889f065877f20f0c7e0066f215d020156a0aa7 Mon Sep 17 00:00:00 2001 From: Yizhou Qiang Date: Thu, 24 Sep 2015 10:56:36 +0200 Subject: [PATCH 27/41] Translated using Weblate (Chinese (China)) Currently translated at 77.0% (2472 of 3209 strings) [CI skip] --- po/zh_CN.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 387f03d8fa..5427dad403 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-09-24 08:55+0200\n" +"PO-Revision-Date: 2015-09-24 10:56+0200\n" "Last-Translator: Yizhou Qiang \n" "Language-Team: Chinese (China) " "\n" @@ -2466,13 +2466,13 @@ msgstr "您真的要删除该书签吗?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." -msgstr "" +msgstr "获取SQL调试信息时出错。" #: js/messages.php:601 -#, fuzzy, php-format +#, php-format #| msgid "Executed queries" msgid "%s queries executed %s times in %s seconds." -msgstr "已执行的查询" +msgstr "%s条查询的执行时常:%s秒" #: js/messages.php:602 #, php-format From 857ef10d40fd86e4228a2a4bb42b9c1db3d320c3 Mon Sep 17 00:00:00 2001 From: Yizhou Qiang Date: Thu, 24 Sep 2015 10:56:39 +0200 Subject: [PATCH 28/41] Translated using Weblate (Chinese (China)) Currently translated at 77.0% (2472 of 3209 strings) [CI skip] --- po/zh_CN.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 0e14317a2b..9cb12bcccd 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-09-24 08:55+0200\n" +"PO-Revision-Date: 2015-09-24 10:56+0200\n" "Last-Translator: Yizhou Qiang \n" "Language-Team: Chinese (China) " "\n" @@ -2466,13 +2466,13 @@ msgstr "您真的要删除该书签吗?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." -msgstr "" +msgstr "获取SQL调试信息时出错。" #: js/messages.php:601 -#, fuzzy, php-format +#, php-format #| msgid "Executed queries" msgid "%s queries executed %s times in %s seconds." -msgstr "已执行的查询" +msgstr "%s条查询的执行时常:%s秒" #: js/messages.php:602 #, php-format From a7836067db3a362df8b6f493de57d17443b1ad33 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Thu, 24 Sep 2015 09:46:54 -0400 Subject: [PATCH 29/41] Fixes #11496 Incorrect definition for getTablesWhenOpen() Signed-off-by: Marc Delisle --- ChangeLog | 1 + libraries/Util.class.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4d1fc02112..b1e4a190ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ phpMyAdmin - ChangeLog - issue #11491 Propose table structure broken - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system - issue #11495 'PMA_Microhistory' is undefined +- issue #11496 Incorrect definition for getTablesWhenOpen() 4.5.0.1 (2015-09-24) - issue #11492 AUTO_INCREMENT statements are partly missing from exports diff --git a/libraries/Util.class.php b/libraries/Util.class.php index b7dff92fa9..908e9b81c1 100644 --- a/libraries/Util.class.php +++ b/libraries/Util.class.php @@ -4829,7 +4829,7 @@ class PMA_Util * @return array $tables list of tables * */ - public function getTablesWhenOpen($db, $db_info_result) + public static function getTablesWhenOpen($db, $db_info_result) { $tables = array(); From a2fc766269e7c77e8380bc882a505824564937b2 Mon Sep 17 00:00:00 2001 From: Xavier Navarro Date: Thu, 24 Sep 2015 18:03:45 +0200 Subject: [PATCH 30/41] Translated using Weblate (Catalan) Currently translated at 100.0% (3209 of 3209 strings) [CI skip] --- po/ca.po | 244 +++++++++++++++++++++++++++---------------------------- 1 file changed, 119 insertions(+), 125 deletions(-) diff --git a/po/ca.po b/po/ca.po index 48fd6745bf..2f67a8cd54 100644 --- a/po/ca.po +++ b/po/ca.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-08-27 13:58+0200\n" +"PO-Revision-Date: 2015-09-24 18:03+0200\n" "Last-Translator: Xavier Navarro \n" -"Language-Team: Catalan \n" +"Language-Team: Catalan " +"\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -652,10 +652,9 @@ msgstr "" "informació disponible a %s." #: index.php:163 -#, fuzzy #| msgid "General Settings" msgid "General settings" -msgstr "Paràmetres Generals" +msgstr "Paràmetres generals" #: index.php:191 js/messages.php:525 #: libraries/display_change_password.lib.php:50 @@ -668,7 +667,6 @@ msgid "Server connection collation" msgstr "Ordenació de la connexió del servidor" #: index.php:229 -#, fuzzy #| msgid "Appearance Settings" msgid "Appearance settings" msgstr "Paràmetres d'aparença" @@ -974,14 +972,19 @@ msgid "" "collation; in this case we suggest you revert to the original collation and " "refer to the tips at " msgstr "" +"Aquesta operació intentarà convertir les seves dades al nou joc de " +"caràcters. En casos estranys, especialment on un caràcter no existeix en el " +"nou joc, aquest procés podria causar que les dades apareguin incorrectament; " +"en aquest cas us suggerim tornar al joc de caràcters original i indicar un " +"consell " #: js/messages.php:73 msgid "Garbled Data" -msgstr "" +msgstr "Dades confuses" #: js/messages.php:75 msgid "Are you sure you wish to change the collation and convert the data?" -msgstr "" +msgstr "Estàs segur de voler canviar el joc de caràcters i convertir les dades?" #: js/messages.php:77 msgid "" @@ -992,15 +995,23 @@ msgid "" "column(s) editing feature (the \"Change\" Link) on the table structure page. " "" msgstr "" +"Mitjançant aquesta operació, MySQL intenta assignar els valors de dades " +"entre jocs de caràcters. Si els conjunts de caràcters són incompatibles, hi " +"pot haver pèrdua de dades i aquesta pèrdua no es pot recuperar " +"simplement canviant altra vegada el(s) joc(s) de caràcters de la columna. " +"Per convertir les dades existents, se suggereix utilitzar la característica " +"d'edició de columnes (l'enllaç de \"Canvi\") a la pàgina de l'estructura de " +"taula." #: js/messages.php:85 msgid "" "Are you sure you wish to change all the column collations and convert the " "data?" msgstr "" +"Estàs segur de voler canviar tots els jocs de caràcters de columna i " +"convertir les dades?" #: js/messages.php:88 -#, fuzzy #| msgid "Save & Close" msgid "Save & close" msgstr "Desa i tanca" @@ -1012,10 +1023,9 @@ msgid "Reset" msgstr "Reinicia" #: js/messages.php:90 -#, fuzzy #| msgid "Reset All" msgid "Reset all" -msgstr "Reinicia Tot" +msgstr "Reinicia tot" #: js/messages.php:93 msgid "Missing value in the form!" @@ -1038,7 +1048,6 @@ msgid "Add index" msgstr "Afegir índex" #: js/messages.php:98 -#, fuzzy #| msgid "Edit Index" msgid "Edit index" msgstr "Editar índex" @@ -1089,7 +1098,6 @@ msgstr "Consulta SQL:" #. l10n: Default label for the y-Axis of Charts #: js/messages.php:118 -#, fuzzy #| msgid "Y Values" msgid "Y values" msgstr "Valors Y" @@ -1127,7 +1135,7 @@ msgstr "S'ha creat la plantilla." #: js/messages.php:130 msgid "Template was loaded." -msgstr "" +msgstr "Plantilla carregada." #: js/messages.php:131 msgid "Template was updated." @@ -1187,7 +1195,6 @@ msgid "Query cache used" msgstr "Memòria cau de consultes utilitzada" #: js/messages.php:151 -#, fuzzy #| msgid "System CPU Usage" msgid "System CPU usage" msgstr "Ús de la CPU del sistema" @@ -1225,25 +1232,21 @@ msgid "Used memory" msgstr "Memòria utilitzada" #: js/messages.php:162 -#, fuzzy #| msgid "Total Swap" msgid "Total swap" -msgstr "Intercanvi Total" +msgstr "Intercanvi total" #: js/messages.php:163 -#, fuzzy #| msgid "Cached Swap" msgid "Cached swap" msgstr "Intercanvi en cau" #: js/messages.php:164 -#, fuzzy #| msgid "Used Swap" msgid "Used swap" msgstr "Intercanvi utilitzat" #: js/messages.php:165 -#, fuzzy #| msgid "Free Swap" msgid "Free swap" msgstr "Intercanvi lliure" @@ -1662,7 +1665,6 @@ msgid "No files available on server for import!" msgstr "No hi ha arxius disponibles al servidor per importar!" #: js/messages.php:275 -#, fuzzy #| msgid "Analyse Query" msgid "Analyse query" msgstr "Analitzar consulta" @@ -1728,28 +1730,24 @@ msgid "Loading…" msgstr "Carregar…" #: js/messages.php:301 -#, fuzzy #| msgid "Request Aborted!!" msgid "Request aborted!!" -msgstr "Petició abortada!!" +msgstr "Petició avortada!!" #: js/messages.php:302 -#, fuzzy #| msgid "Processing Request" msgid "Processing request" -msgstr "Petició de procés" +msgstr "Processant petició" #: js/messages.php:303 -#, fuzzy #| msgid "Request Failed!!" msgid "Request failed!!" -msgstr "Petició Fallida!!" +msgstr "Petició fallida!!" #: js/messages.php:304 -#, fuzzy #| msgid "Error in processing request:" msgid "Error in processing request" -msgstr "Error processant a la petició:" +msgstr "Error processant a la petició" #: js/messages.php:305 #, php-format @@ -1767,16 +1765,14 @@ msgid "No databases selected." msgstr "No s'han triat bases de dades." #: js/messages.php:308 -#, fuzzy #| msgid "Dropping Column" msgid "Dropping column" -msgstr "Eliminació de columna" +msgstr "Eliminant columna" #: js/messages.php:309 -#, fuzzy #| msgid "Add primary key" msgid "Adding primary key" -msgstr "Afegir clau principal" +msgstr "Afegint clau principal" #: js/messages.php:310 #: templates/database/designer/aggregate_query_panel.phtml:59 @@ -1793,22 +1789,19 @@ msgid "Click to dismiss this notification" msgstr "Prem per rebutjar aquest avís" #: js/messages.php:314 -#, fuzzy #| msgid "Renaming Databases" msgid "Renaming databases" -msgstr "Reanomenar bases de dades" +msgstr "Reanomenant bases de dades" #: js/messages.php:315 -#, fuzzy #| msgid "Copying Database" msgid "Copying database" msgstr "Copiant base de dades" #: js/messages.php:316 -#, fuzzy #| msgid "Changing Charset" msgid "Changing charset" -msgstr "Canvi de Joc de Caràcters" +msgstr "Canviant de joc de caràcters" #: js/messages.php:320 libraries/Util.class.php:3232 msgid "Enable foreign key checks" @@ -2198,16 +2191,14 @@ msgid "Geometry" msgstr "Geometria" #: js/messages.php:440 -#, fuzzy #| msgid "Inner Ring" msgid "Inner ring" msgstr "Cercle interior" #: js/messages.php:441 -#, fuzzy #| msgid "Outer ring:" msgid "Outer ring" -msgstr "Cercle exterior:" +msgstr "Cercle exterior" #: js/messages.php:445 msgid "Do you want to copy encryption key?" @@ -2455,13 +2446,11 @@ msgid "More" msgstr "Més" #: js/messages.php:531 -#, fuzzy #| msgid "Show Panel" msgid "Show panel" msgstr "Mostra el panell" #: js/messages.php:532 -#, fuzzy #| msgid "Hide Panel" msgid "Hide panel" msgstr "Amagar el panell" @@ -2539,16 +2528,14 @@ msgid "Create view" msgstr "Crea una vista" #: js/messages.php:556 -#, fuzzy #| msgid "Send error reports" msgid "Send error report" -msgstr "Enviar informes d'error" +msgstr "Enviar informe d'error" #: js/messages.php:557 -#, fuzzy #| msgid "Submit Error Report" msgid "Submit error report" -msgstr "Introduir informe d'error" +msgstr "Presentar informe d'error" #: js/messages.php:559 msgid "" @@ -2558,16 +2545,14 @@ msgstr "" "S'ha produït un error fatal de JavaScript. Vols enviar un informe d'errors?" #: js/messages.php:561 -#, fuzzy #| msgid "Change Report Settings" msgid "Change report settings" -msgstr "Canviar les configuracions d'informes" +msgstr "Canviar les configuracions de l'informe" #: js/messages.php:562 -#, fuzzy #| msgid "Show Report Details" msgid "Show report details" -msgstr "Mostra el detall dels informes" +msgstr "Mostra el detall de l'informe" #: js/messages.php:565 msgid "" @@ -2614,7 +2599,7 @@ msgstr "Realment vols esborrar aquesta marca?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." -msgstr "" +msgstr "S'ha produït algun error en obtenir informació de depuració SQL." #: js/messages.php:601 #, php-format @@ -2624,7 +2609,7 @@ msgstr "%s consultes executades %s vegades en %s segons." #: js/messages.php:602 #, php-format msgid "%s argument(s) passed" -msgstr "" +msgstr "%s argument(s) correctes" #: js/messages.php:603 msgid "Show arguments" @@ -2636,7 +2621,7 @@ msgstr "Amaga els arguments" #: js/messages.php:605 libraries/Console.class.php:321 msgid "Time taken:" -msgstr "" +msgstr "Temps dedicat:" #: js/messages.php:606 msgid "" @@ -3231,7 +3216,7 @@ msgstr "Ordre d'execució" #: libraries/Console.class.php:295 msgid "Time taken" -msgstr "" +msgstr "Temps dedicat" #: libraries/Console.class.php:298 msgid "Order by:" @@ -3343,7 +3328,7 @@ msgstr "Columna:" #: libraries/DBQbe.class.php:513 msgid "Alias:" -msgstr "" +msgstr "Àlies:" #: libraries/DBQbe.class.php:566 msgid "Sort:" @@ -3533,7 +3518,6 @@ msgstr "Dins les taules:" #: libraries/DbSearch.class.php:450 libraries/display_export.lib.php:50 #: libraries/replication_gui.lib.php:380 -#, fuzzy #| msgid "Unselect All" msgid "Unselect all" msgstr "Desmarca tot" @@ -3706,7 +3690,6 @@ msgstr "Amb marca:" #: libraries/server_user_groups.lib.php:231 #: templates/database/structure/check_all_tables.phtml:3 #: templates/database/structure/check_all_tables.phtml:4 -#, fuzzy #| msgid "Check All" msgid "Check all" msgstr "Marcar-ho tot" @@ -3925,11 +3908,13 @@ msgstr "" msgid "" "Linting is disabled for this query because it exceeds the maximum length." msgstr "" +"L'anàlisi d'errors està desactivat per a aquesta consulta perquè supera la " +"longitud màxima." #: libraries/Linter.class.php:162 #, php-format msgid "%1$s (near %2$s)" -msgstr "" +msgstr "%1$s (prop de %2$s)" #: libraries/Menu.class.php:200 libraries/ServerStatusData.class.php:442 #: libraries/config/messages.inc.php:933 @@ -4791,7 +4776,7 @@ msgstr "Anàlisi estàtica:" #: libraries/Util.class.php:668 #, php-format msgid "%d errors were found during analysis." -msgstr "" +msgstr "s'han trobat %d errors durant l'anàlisi." #: libraries/Util.class.php:730 libraries/rte/rte_events.lib.php:110 #: libraries/rte/rte_events.lib.php:119 libraries/rte/rte_events.lib.php:150 @@ -4815,14 +4800,13 @@ msgstr "Salta l'explicació de l'SQL" #: libraries/Util.class.php:1189 #, php-format msgid "Analyze Explain at %s" -msgstr "" +msgstr "Analitzar Explain a %s" #: libraries/Util.class.php:1220 msgid "Without PHP Code" msgstr "Sense codi PHP" #: libraries/Util.class.php:1223 libraries/config/messages.inc.php:898 -#, fuzzy #| msgid "Create PHP Code" msgid "Create PHP code" msgstr "Crea codi PHP" @@ -4953,7 +4937,6 @@ msgid "Check privileges for database \"%s\"." msgstr "Comprova els permisos per la base de dades \"%s\"." #: libraries/build_html_for_db.lib.php:181 -#, fuzzy #| msgid "Check Privileges" msgid "Check privileges" msgstr "Comprova els permisos" @@ -5669,6 +5652,8 @@ msgid "" "Find any errors in the query before executing it. Requires CodeMirror to be " "enabled." msgstr "" +"Troba errors a la consulta abans d'executar-la. Requereix que CodeMirror " +"estigui habilitat." #: libraries/config/messages.inc.php:67 msgid "Enable linter" @@ -5750,6 +5735,8 @@ msgstr "Confirma les consultes de DROP" msgid "" "Log SQL queries and their execution time, to be displayed in the console" msgstr "" +"Registre de consultes SQL i el seu temps d'execució, que es mostrarà a la " +"consola" #: libraries/config/messages.inc.php:101 msgid "Tab that is displayed when entering a database." @@ -6030,6 +6017,8 @@ msgid "" "Add IF NOT EXISTS (less efficient as indexes will be generated during table " "creation)" msgstr "" +"Afegir IF NOT EXISTS (menys eficient perquè els índexs es generaran durant " +"la creació de la taula)" #: libraries/config/messages.inc.php:211 msgid "Use ignore inserts" @@ -6089,6 +6078,8 @@ msgstr "Límit de claus externes" #: libraries/config/messages.inc.php:241 msgid "Default value for foreign key checks checkbox for some queries." msgstr "" +"El valor per defecte per a la clau externa activa el checkbox per a algunes " +"consultes." #: libraries/config/messages.inc.php:243 msgid "Foreign key checks" @@ -6665,7 +6656,6 @@ msgid "Maximum tables" msgstr "Màxim de taules" #: libraries/config/messages.inc.php:465 -#, fuzzy #| msgid "" #| "The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] " #| "([kbd]0[/kbd] for no limit)." @@ -6673,8 +6663,9 @@ msgid "" "The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] " "([kbd]-1[/kbd] for no limit and [kbd]0[/kbd] for no change)." msgstr "" -"El nombre d'octets que una ordre està autoritzada a reservar, ex. [kbd]32M[/" -"kbd] ([kbd]0[/kbd] per no posar límit)." +"El nombre d'octets que una ordre està autoritzada a reservar, ex. " +"[kbd]32M[/kbd] ([kbd]-1[/kbd] per no posar límit i [kbd]0[/kbd] per a no " +"canviar)." #: libraries/config/messages.inc.php:468 msgid "Memory limit" @@ -6827,6 +6818,7 @@ msgstr "Mostrar funcions en arbre" #: libraries/config/messages.inc.php:532 msgid "Whether to show functions under database in the navigation tree" msgstr "" +"Si vols mostrar les funcions sota la base de dades a l'arbre de navegació" #: libraries/config/messages.inc.php:533 msgid "Show procedures in tree" @@ -6835,6 +6827,7 @@ msgstr "Mostrar procediments en arbre" #: libraries/config/messages.inc.php:535 msgid "Whether to show procedures under database in the navigation tree" msgstr "" +"Si es mostren els procediments sota la base de dades a l'arbre de navegació" #: libraries/config/messages.inc.php:536 msgid "Show events in tree" @@ -6867,10 +6860,11 @@ msgstr "Ón de mostrar els vincles de fila de taula" #: libraries/config/messages.inc.php:548 msgid "Whether to show row links even in the absence of a unique key." msgstr "" +"Si es mostren els enllaços de fila fins i tot en absència d'una clau única." #: libraries/config/messages.inc.php:550 msgid "Show row links anyway" -msgstr "" +msgstr "Mostrar els enllaços de fila sempre" #: libraries/config/messages.inc.php:552 msgid "Use natural order for sorting table and database names." @@ -7653,7 +7647,6 @@ msgstr "" "taules." #: libraries/config/messages.inc.php:853 -#, fuzzy #| msgid "Show Creation timestamp" msgid "Show creation timestamp" msgstr "Mostra el temps de creació" @@ -7666,7 +7659,6 @@ msgstr "" "actualització per a totes les taules." #: libraries/config/messages.inc.php:857 -#, fuzzy #| msgid "Show Last update timestamp" msgid "Show last update timestamp" msgstr "Mostra data i hora de la darrera actualització" @@ -7679,7 +7671,6 @@ msgstr "" "comprovació per a totes les taules." #: libraries/config/messages.inc.php:861 -#, fuzzy #| msgid "Show Last check timestamp" msgid "Show last check timestamp" msgstr "Mostra el temps de la darrera comprovació" @@ -8274,6 +8265,9 @@ msgid "" "connection that encrypts the password using RSA'; while connecting to " "the server." msgstr "" +"Aquest mètode requereix l'ús d'una \"connexió SSL\" o una \"" +"connexió sense xifrar que xifra la contrasenya utilitzant RSA\"; mentre " +"es connecta al servidor." #: libraries/display_create_database.lib.php:23 msgid "Create database" @@ -8353,10 +8347,9 @@ msgid "Custom - display all possible options" msgstr "Usuari - mostra totes les opcions possibles" #: libraries/display_export.lib.php:335 -#, fuzzy #| msgid "Databases" msgid "Databases:" -msgstr "Bases de dades" +msgstr "Bases de dades:" #: libraries/display_export.lib.php:337 #: libraries/navigation/Navigation.class.php:196 @@ -8565,7 +8558,6 @@ msgstr "" ".sql.zip" #: libraries/display_import.lib.php:224 -#, fuzzy #| msgid "File to Import:" msgid "File to import:" msgstr "Arxiu a importar:" @@ -8579,7 +8571,6 @@ msgid "File uploads are not allowed on this server." msgstr "No es permet pujar arxius en aquest servidor." #: libraries/display_import.lib.php:278 -#, fuzzy #| msgid "Partial Import:" msgid "Partial import:" msgstr "Importació parcial:" @@ -8611,7 +8602,6 @@ msgstr "" "formats), contant des de la primera:" #: libraries/display_import.lib.php:340 -#, fuzzy #| msgid "Other Options:" msgid "Other options:" msgstr "Altres opcions:" @@ -9354,7 +9344,7 @@ msgstr "Romanés" #: libraries/mysql_charsets.lib.php:239 msgid "Sinhalese" -msgstr "" +msgstr "Singalès" #: libraries/mysql_charsets.lib.php:242 msgid "Slovak" @@ -9955,7 +9945,6 @@ msgstr "" #: libraries/operations.lib.php:879 libraries/operations.lib.php:973 #: libraries/operations.lib.php:1327 libraries/rte/rte_routines.lib.php:998 #: templates/columns_definitions/table_fields_definitions.phtml:47 -#, fuzzy #| msgid "Adjust Privileges" msgid "Adjust privileges" msgstr "Ajusta els permisos" @@ -10130,7 +10119,7 @@ msgstr "Repara" #: libraries/operations.lib.php:1609 #: templates/table/structure/display_structure.phtml:186 msgid "Truncate" -msgstr "" +msgstr "Truncar" #: libraries/operations.lib.php:1619 msgid "Coalesce" @@ -10568,6 +10557,7 @@ msgstr "Afegir instrucció %s" #: libraries/plugins/export/ExportSql.class.php:279 msgid "(less efficient as indexes will be generated during table creation)" msgstr "" +"(menys eficient perquè els índexs es generaran durant la creació de la taula)" #: libraries/plugins/export/ExportSql.class.php:288 #, php-format @@ -10948,10 +10938,9 @@ msgstr "Mostra graella" #: libraries/plugins/schema/SchemaPdf.class.php:94 #: templates/database/structure/print_view_data_dictionary_link.phtml:6 -#, fuzzy #| msgid "Data Dictionary" msgid "Data dictionary" -msgstr "Diccionari de Dades" +msgstr "Diccionari de dades" #: libraries/plugins/schema/SchemaPdf.class.php:99 msgid "Order of the tables" @@ -11191,6 +11180,7 @@ msgstr "" #: libraries/plugins/transformations/input/Text_Plain_Iptobinary.class.php:32 msgid "Converts an Internet network address in (IPv4/IPv6) format to binary" msgstr "" +"Converteix una adreça de xarxa d'Internet en format (IPv4/IPv6) a binari" #: libraries/plugins/transformations/input/Text_Plain_JsonEditor.class.php:33 msgid "Syntax highlighted CodeMirror editor for JSON." @@ -11700,10 +11690,9 @@ msgid "Re-type" msgstr "Reescriu" #: libraries/replication_gui.lib.php:895 -#, fuzzy #| msgid "Generate password" msgid "Generate password:" -msgstr "Genera una contrasenya" +msgstr "Genera una contrasenya:" #: libraries/replication_gui.lib.php:933 msgid "Replication started successfully." @@ -11977,6 +11966,8 @@ msgid "" "You do not have sufficient privileges to perform this operation; Please " "refer to the documentation for more details" msgstr "" +"No tens prou permisos per realitzar aquesta operació; si us plau, consulta " +"la documentació per a mes detalls" #: libraries/rte/rte_routines.lib.php:1026 msgid "Security type" @@ -12169,10 +12160,9 @@ msgid "Ignoring unsupported language code." msgstr "Ignorant codi d'idioma no suportat." #: libraries/select_server.lib.php:43 libraries/select_server.lib.php:48 -#, fuzzy #| msgid "Current server" msgid "Current server:" -msgstr "Servidor actual" +msgstr "Servidor actual:" #: libraries/server_bin_log.lib.php:30 msgid "Select binary log to view" @@ -12231,10 +12221,9 @@ msgstr "" #: libraries/server_databases.lib.php:366 #: libraries/server_databases.lib.php:371 -#, fuzzy #| msgid "Enable Statistics" msgid "Enable statistics" -msgstr "Activa Estadístiques" +msgstr "Activa estadístiques" #: libraries/server_databases.lib.php:492 #, php-format @@ -12677,10 +12666,9 @@ msgid "table-specific" msgstr "específic de la taula" #: libraries/server_privileges.lib.php:2628 -#, fuzzy #| msgid "Edit privileges:" msgid "Edit privileges" -msgstr "Edita permisos:" +msgstr "Edita permisos" #: libraries/server_privileges.lib.php:2631 msgid "Revoke" @@ -12823,6 +12811,9 @@ msgid "" "will prevent other users from connecting if the host part of their account " "allows a connection from any (%) host." msgstr "" +"Existeix un compte d'usuari que permet a qualsevol usuari de localhost " +"connectar-se. Això evita que altres usuaris es connectin si la part del host " +"del seu compte permet una connexió des de qualsevol host (%)." #: libraries/server_privileges.lib.php:4528 #, php-format @@ -13103,7 +13094,6 @@ msgid "Clear series" msgstr "Buidar sèrie" #: libraries/server_status_monitor.lib.php:233 -#, fuzzy #| msgid "Series in Chart:" msgid "Series in chart:" msgstr "Series al gràfic:" @@ -13167,7 +13157,7 @@ msgstr "Ordre" #: libraries/server_status_processes.lib.php:96 msgid "Progress" -msgstr "" +msgstr "Progrés" #: libraries/server_status_processes.lib.php:252 #: libraries/server_status_variables.lib.php:39 @@ -13999,12 +13989,12 @@ msgstr "Valor global" #: libraries/server_variables.lib.php:243 msgid "This is a read-only variable and can not be edited" -msgstr "" +msgstr "Això és una variable de només lectura i no es pot editar" #: libraries/sql-parser/src/Component.php:63 #: libraries/sql-parser/src/Component.php:83 msgid "Not implemented yet." -msgstr "" +msgstr "Encara no implementat." #: libraries/sql-parser/src/Components/AlterOperation.php:202 msgid "Unrecognized alter operation." @@ -14013,20 +14003,20 @@ msgstr "Operació de modificació no reconeguda." #: libraries/sql-parser/src/Components/Array2d.php:93 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "S'esperaven %1$d valors, però s'han trobat %2$d." #: libraries/sql-parser/src/Components/Array2d.php:116 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "S'esperava un claudàtor d'obertura seguit per un conjunt de valors." #: libraries/sql-parser/src/Components/ArrayObj.php:103 #: libraries/sql-parser/src/Components/CreateDefinition.php:204 msgid "An opening bracket was expected." -msgstr "" +msgstr "S'esperava un claudàtor d'obertura." #: libraries/sql-parser/src/Components/ArrayObj.php:128 msgid "A comma or a closing bracket was expected" -msgstr "" +msgstr "S'esperava una coma o un claudàtor de tancament" #: libraries/sql-parser/src/Components/CreateDefinition.php:248 msgid "A comma or a closing bracket was expected." @@ -14034,25 +14024,25 @@ msgstr "S'esperava una coma o un claudàtor de tancament." #: libraries/sql-parser/src/Components/CreateDefinition.php:264 msgid "A closing bracket was expected." -msgstr "" +msgstr "S'esperava un claudàtor de tancament." #: libraries/sql-parser/src/Components/DataType.php:127 msgid "Unrecognized data type." -msgstr "" +msgstr "Tipus de dades desconegut." #: libraries/sql-parser/src/Components/Expression.php:234 msgid "Unexpected closing bracket." -msgstr "" +msgstr "Claudàtor de tancament inesperat." #: libraries/sql-parser/src/Components/Expression.php:255 #: libraries/sql-parser/src/Components/Expression.php:292 #: libraries/sql-parser/src/Components/Expression.php:312 msgid "An alias was previously found." -msgstr "" +msgstr "S'ha trobat un àlies anteriorment." #: libraries/sql-parser/src/Components/Expression.php:266 msgid "Unexpected dot." -msgstr "" +msgstr "Punt inesperat." #: libraries/sql-parser/src/Components/Expression.php:336 msgid "An alias was expected." @@ -14065,12 +14055,12 @@ msgstr "S'esperava una expressió." #: libraries/sql-parser/src/Components/Limit.php:92 #: libraries/sql-parser/src/Components/Limit.php:114 msgid "An offset was expected." -msgstr "" +msgstr "S'esperava un desplaçament." #: libraries/sql-parser/src/Components/OptionsArray.php:148 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Aquesta opció està en conflicte amb \"%1$s\"." #: libraries/sql-parser/src/Components/RenameOperation.php:104 msgid "The old name of the table was expected." @@ -14078,7 +14068,7 @@ msgstr "S'esperava el nom antic de la taula." #: libraries/sql-parser/src/Components/RenameOperation.php:114 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "S'esperava la paraula clau \"TO\"." #: libraries/sql-parser/src/Components/RenameOperation.php:131 msgid "The new name of the table was expected." @@ -14094,12 +14084,12 @@ msgstr "Caràcter no esperat." #: libraries/sql-parser/src/Lexer.php:307 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "S'esperava(en) espai(s) en blanc abans del delimitador." #: libraries/sql-parser/src/Lexer.php:325 #: libraries/sql-parser/src/Lexer.php:341 msgid "Expected delimiter." -msgstr "" +msgstr "S'esperava delimitador ." #: libraries/sql-parser/src/Lexer.php:788 #, php-format @@ -14116,11 +14106,11 @@ msgstr "Inici no esperat de declaració." #: libraries/sql-parser/src/Parser.php:421 msgid "Unrecognized statement type." -msgstr "" +msgstr "Tipus de declaració no reconegut." #: libraries/sql-parser/src/Parser.php:505 msgid "No transaction was previously started." -msgstr "" +msgstr "No s'ha iniciat cap transacció anteriorment." #: libraries/sql-parser/src/Statement.php:212 msgid "Unexpected token." @@ -14128,16 +14118,18 @@ msgstr "Símbol (token) no esperat." #: libraries/sql-parser/src/Statement.php:250 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Aquest tipus de clàusula s'ha analitzat anteriorment." #: libraries/sql-parser/src/Statement.php:277 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"S'ha trobat una nova declaració, però no hi ha cap delimitador entre aquesta " +"i la anterior." #: libraries/sql-parser/src/Statement.php:297 msgid "Unrecognized keyword." -msgstr "" +msgstr "Paraula clau no reconeguda." #: libraries/sql-parser/src/Statements/CreateStatement.php:348 msgid "The name of the entity was expected." @@ -14149,7 +14141,7 @@ msgstr "S'esperava al menys la definició d'una columna." #: libraries/sql-parser/src/Statements/CreateStatement.php:478 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "S'esperava una paraula clau \"RETURNS\"." #: libraries/sql.lib.php:224 msgid "Detailed profile" @@ -14609,16 +14601,14 @@ msgid "Username and hostname didn't change." msgstr "El nom d'usuari i de servidor no s'han canviat." #: server_status.php:39 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view server status." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure l'estat del servidor." #: server_status_advisor.php:39 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view the advisor." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure l'assessor." #: server_status_processes.php:36 #, php-format @@ -14632,22 +14622,21 @@ msgid "" msgstr "phpMyAdmin no pot cancel.lar el fil %s. Probablement, ja és tancat." #: server_status_queries.php:55 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view query statistics." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure estadístiques de consultes." #: server_status_variables.php:57 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view status variables." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure variables d'estat." #: server_variables.php:83 -#, fuzzy, php-format +#, php-format #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view server variables and settings. %s" -msgstr "Permisos insuficients per veure usuaris." +msgstr "" +"Permisos insuficients per veure variables del servidor i configuracions. %s" #: setup/frames/config.inc.php:41 setup/frames/index.inc.php:277 msgid "Download" @@ -14953,7 +14942,7 @@ msgstr "" #: templates/columns_definitions/table_fields_definitions.phtml:70 msgid "Virtuality" -msgstr "" +msgstr "Virtualitat" #: templates/columns_definitions/table_fields_definitions.phtml:76 msgid "Move column" @@ -15021,10 +15010,9 @@ msgid "Operator" msgstr "Operador" #: templates/database/designer/database_tables.phtml:29 -#, fuzzy #| msgid "Move columns" msgid "Show/hide columns" -msgstr "Moure columnes" +msgstr "Mostrar/amagar columnes" #: templates/database/designer/database_tables.phtml:40 msgid "See table structure" @@ -16004,6 +15992,9 @@ msgid "" "Percona documentation is at http://www.percona.com/software/documentation/" msgstr "" +"La documentació de Percona és a " +"http://www.percona.com/software/documentation/" #: libraries/advisory_rules.txt:133 msgid "'percona' found in version_comment" @@ -16015,6 +16006,9 @@ msgid "" "Drizzle documentation is at http://www.drizzle.org/content/documentation/" msgstr "" +"La documentació de Drizzle és a " +"http://www.drizzle.org/content/documentation/" #: libraries/advisory_rules.txt:140 #, php-format From 8d202a3dc13a4296ef5809831889f0b86256a31d Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Fri, 25 Sep 2015 11:04:31 +0300 Subject: [PATCH 31/41] Fixes #11497. Cherry-picked udan11/sql-parser@1415469. Signed-off-by: Dan Ungureanu Signed-off-by: Marc Delisle --- libraries/plugins/export/ExportSql.class.php | 6 +-- libraries/sql-parser/src/Components/Key.php | 41 ++++++++++++++++++-- libraries/sql-parser/src/Utils/Table.php | 7 +++- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/libraries/plugins/export/ExportSql.class.php b/libraries/plugins/export/ExportSql.class.php index 62e89b4e33..c0b6aa5f01 100644 --- a/libraries/plugins/export/ExportSql.class.php +++ b/libraries/plugins/export/ExportSql.class.php @@ -2621,9 +2621,9 @@ class ExportSql extends ExportPlugin // Key's columns. if (!empty($field->key)) { foreach ($field->key->columns as $key => $column) { - if (!empty($aliases[$old_database]['tables'][$old_table]['columns'][$column])) { - $field->key->columns[$key] = $aliases[$old_database] - ['tables'][$old_table]['columns'][$column]; + if (!empty($aliases[$old_database]['tables'][$old_table]['columns'][$column['name']])) { + $field->key->columns[$key]['name'] = $aliases[$old_database] + ['tables'][$old_table]['columns'][$column['name']]; $flag = true; } } diff --git a/libraries/sql-parser/src/Components/Key.php b/libraries/sql-parser/src/Components/Key.php index 89371fa9f5..70b2b937e3 100644 --- a/libraries/sql-parser/src/Components/Key.php +++ b/libraries/sql-parser/src/Components/Key.php @@ -95,6 +95,13 @@ class Key extends Component { $ret = new Key(); + /** + * Last parsed column. + * + * @var array + */ + $lastColumn = array(); + /** * The state of the parser. * @@ -135,12 +142,31 @@ class Key extends Component $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->columns = ArrayObj::parse($parser, $list)->values; $state = 2; } else { $ret->name = $token->value; } } elseif ($state === 2) { + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + $state = 3; + } elseif (($token->value === ',') || ($token->value === ')')) { + $state = ($token->value === ',') ? 2 : 4; + if (!empty($lastColumn)) { + $ret->columns[] = $lastColumn; + $lastColumn = array(); + } + } + } else { + $lastColumn['name'] = $token->value; + } + } elseif ($state === 3) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { + $state = 2; + } else { + $lastColumn['length'] = $token->value; + } + } elseif ($state === 4) { $ret->options = OptionsArray::parse($parser, $list, static::$KEY_OPTIONS); ++$list->idx; break; @@ -163,8 +189,17 @@ class Key extends Component if (!empty($component->name)) { $ret .= Context::escape($component->name) . ' '; } - $ret .= '(' . implode(',', Context::escape($component->columns)) . ') ' - . $component->options; + + $columns = array(); + foreach ($component->columns as $column) { + $tmp = Context::escape($column['name']); + if (isset($column['length'])) { + $tmp .= '(' . $column['length'] . ')'; + } + $columns[] = $tmp; + } + + $ret .= '(' . implode(',', $columns) . ') ' . $component->options; return trim($ret); } } diff --git a/libraries/sql-parser/src/Utils/Table.php b/libraries/sql-parser/src/Utils/Table.php index 81699ad6d0..5f0858d4a3 100644 --- a/libraries/sql-parser/src/Utils/Table.php +++ b/libraries/sql-parser/src/Utils/Table.php @@ -45,9 +45,14 @@ class Table continue; } + $columns = array(); + foreach ($field->key->columns as $column) { + $columns[] = $column['name']; + } + $tmp = array( 'constraint' => $field->name, - 'index_list' => $field->key->columns, + 'index_list' => $columns, ); if (!empty($field->references)) { From 440aaaacaeac658f3149253f1a6834ef2f229586 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Fri, 25 Sep 2015 07:15:22 -0400 Subject: [PATCH 32/41] ChangeLog entry Signed-off-by: Marc Delisle --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 40b8ba6fd0..4cb6708302 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ phpMyAdmin - ChangeLog ====================== +4.5.0.2 (2015-09-25) +- issue #11497 Incorrect indexes when exporting + 4.5.0.1 (2015-09-24) - issue #11492 AUTO_INCREMENT statements are partly missing from exports From 07640ba5c740b863f2a972c97bd2837c1bbacc80 Mon Sep 17 00:00:00 2001 From: Zheng Dan Date: Thu, 24 Sep 2015 16:29:32 +0200 Subject: [PATCH 33/41] Translated using Weblate (Chinese (China)) Currently translated at 77.0% (2473 of 3209 strings) [CI skip] --- po/zh_CN.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 5427dad403..1fd8d5365e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-09-24 10:56+0200\n" -"Last-Translator: Yizhou Qiang \n" +"PO-Revision-Date: 2015-09-24 16:29+0200\n" +"Last-Translator: Zheng Dan \n" "Language-Team: Chinese (China) " "\n" "Language: zh_CN\n" @@ -2477,7 +2477,7 @@ msgstr "%s条查询的执行时常:%s秒" #: js/messages.php:602 #, php-format msgid "%s argument(s) passed" -msgstr "" +msgstr "%s 个参数已传递" #: js/messages.php:603 #, fuzzy From 43d10023e7f86e3447920664349ae26156b94cad Mon Sep 17 00:00:00 2001 From: Xavier Navarro Date: Thu, 24 Sep 2015 18:03:43 +0200 Subject: [PATCH 34/41] Translated using Weblate (Catalan) Currently translated at 100.0% (3209 of 3209 strings) [CI skip] --- po/ca.po | 244 +++++++++++++++++++++++++++---------------------------- 1 file changed, 119 insertions(+), 125 deletions(-) diff --git a/po/ca.po b/po/ca.po index f683b31d99..d6a4758301 100644 --- a/po/ca.po +++ b/po/ca.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-08-27 13:57+0200\n" +"PO-Revision-Date: 2015-09-24 18:03+0200\n" "Last-Translator: Xavier Navarro \n" -"Language-Team: Catalan \n" +"Language-Team: Catalan " +"\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.4-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -652,10 +652,9 @@ msgstr "" "informació disponible a %s." #: index.php:163 -#, fuzzy #| msgid "General Settings" msgid "General settings" -msgstr "Paràmetres Generals" +msgstr "Paràmetres generals" #: index.php:191 js/messages.php:525 #: libraries/display_change_password.lib.php:50 @@ -668,7 +667,6 @@ msgid "Server connection collation" msgstr "Ordenació de la connexió del servidor" #: index.php:229 -#, fuzzy #| msgid "Appearance Settings" msgid "Appearance settings" msgstr "Paràmetres d'aparença" @@ -974,14 +972,19 @@ msgid "" "collation; in this case we suggest you revert to the original collation and " "refer to the tips at " msgstr "" +"Aquesta operació intentarà convertir les seves dades al nou joc de " +"caràcters. En casos estranys, especialment on un caràcter no existeix en el " +"nou joc, aquest procés podria causar que les dades apareguin incorrectament; " +"en aquest cas us suggerim tornar al joc de caràcters original i indicar un " +"consell " #: js/messages.php:73 msgid "Garbled Data" -msgstr "" +msgstr "Dades confuses" #: js/messages.php:75 msgid "Are you sure you wish to change the collation and convert the data?" -msgstr "" +msgstr "Estàs segur de voler canviar el joc de caràcters i convertir les dades?" #: js/messages.php:77 msgid "" @@ -992,15 +995,23 @@ msgid "" "column(s) editing feature (the \"Change\" Link) on the table structure page. " "" msgstr "" +"Mitjançant aquesta operació, MySQL intenta assignar els valors de dades " +"entre jocs de caràcters. Si els conjunts de caràcters són incompatibles, hi " +"pot haver pèrdua de dades i aquesta pèrdua no es pot recuperar " +"simplement canviant altra vegada el(s) joc(s) de caràcters de la columna. " +"Per convertir les dades existents, se suggereix utilitzar la característica " +"d'edició de columnes (l'enllaç de \"Canvi\") a la pàgina de l'estructura de " +"taula." #: js/messages.php:85 msgid "" "Are you sure you wish to change all the column collations and convert the " "data?" msgstr "" +"Estàs segur de voler canviar tots els jocs de caràcters de columna i " +"convertir les dades?" #: js/messages.php:88 -#, fuzzy #| msgid "Save & Close" msgid "Save & close" msgstr "Desa i tanca" @@ -1012,10 +1023,9 @@ msgid "Reset" msgstr "Reinicia" #: js/messages.php:90 -#, fuzzy #| msgid "Reset All" msgid "Reset all" -msgstr "Reinicia Tot" +msgstr "Reinicia tot" #: js/messages.php:93 msgid "Missing value in the form!" @@ -1038,7 +1048,6 @@ msgid "Add index" msgstr "Afegir índex" #: js/messages.php:98 -#, fuzzy #| msgid "Edit Index" msgid "Edit index" msgstr "Editar índex" @@ -1089,7 +1098,6 @@ msgstr "Consulta SQL:" #. l10n: Default label for the y-Axis of Charts #: js/messages.php:118 -#, fuzzy #| msgid "Y Values" msgid "Y values" msgstr "Valors Y" @@ -1127,7 +1135,7 @@ msgstr "S'ha creat la plantilla." #: js/messages.php:130 msgid "Template was loaded." -msgstr "" +msgstr "Plantilla carregada." #: js/messages.php:131 msgid "Template was updated." @@ -1187,7 +1195,6 @@ msgid "Query cache used" msgstr "Memòria cau de consultes utilitzada" #: js/messages.php:151 -#, fuzzy #| msgid "System CPU Usage" msgid "System CPU usage" msgstr "Ús de la CPU del sistema" @@ -1225,25 +1232,21 @@ msgid "Used memory" msgstr "Memòria utilitzada" #: js/messages.php:162 -#, fuzzy #| msgid "Total Swap" msgid "Total swap" -msgstr "Intercanvi Total" +msgstr "Intercanvi total" #: js/messages.php:163 -#, fuzzy #| msgid "Cached Swap" msgid "Cached swap" msgstr "Intercanvi en cau" #: js/messages.php:164 -#, fuzzy #| msgid "Used Swap" msgid "Used swap" msgstr "Intercanvi utilitzat" #: js/messages.php:165 -#, fuzzy #| msgid "Free Swap" msgid "Free swap" msgstr "Intercanvi lliure" @@ -1662,7 +1665,6 @@ msgid "No files available on server for import!" msgstr "No hi ha arxius disponibles al servidor per importar!" #: js/messages.php:275 -#, fuzzy #| msgid "Analyse Query" msgid "Analyse query" msgstr "Analitzar consulta" @@ -1728,28 +1730,24 @@ msgid "Loading…" msgstr "Carregar…" #: js/messages.php:301 -#, fuzzy #| msgid "Request Aborted!!" msgid "Request aborted!!" -msgstr "Petició abortada!!" +msgstr "Petició avortada!!" #: js/messages.php:302 -#, fuzzy #| msgid "Processing Request" msgid "Processing request" -msgstr "Petició de procés" +msgstr "Processant petició" #: js/messages.php:303 -#, fuzzy #| msgid "Request Failed!!" msgid "Request failed!!" -msgstr "Petició Fallida!!" +msgstr "Petició fallida!!" #: js/messages.php:304 -#, fuzzy #| msgid "Error in processing request:" msgid "Error in processing request" -msgstr "Error processant a la petició:" +msgstr "Error processant a la petició" #: js/messages.php:305 #, php-format @@ -1767,16 +1765,14 @@ msgid "No databases selected." msgstr "No s'han triat bases de dades." #: js/messages.php:308 -#, fuzzy #| msgid "Dropping Column" msgid "Dropping column" -msgstr "Eliminació de columna" +msgstr "Eliminant columna" #: js/messages.php:309 -#, fuzzy #| msgid "Add primary key" msgid "Adding primary key" -msgstr "Afegir clau principal" +msgstr "Afegint clau principal" #: js/messages.php:310 #: templates/database/designer/aggregate_query_panel.phtml:59 @@ -1793,22 +1789,19 @@ msgid "Click to dismiss this notification" msgstr "Prem per rebutjar aquest avís" #: js/messages.php:314 -#, fuzzy #| msgid "Renaming Databases" msgid "Renaming databases" -msgstr "Reanomenar bases de dades" +msgstr "Reanomenant bases de dades" #: js/messages.php:315 -#, fuzzy #| msgid "Copying Database" msgid "Copying database" msgstr "Copiant base de dades" #: js/messages.php:316 -#, fuzzy #| msgid "Changing Charset" msgid "Changing charset" -msgstr "Canvi de Joc de Caràcters" +msgstr "Canviant de joc de caràcters" #: js/messages.php:320 libraries/Util.class.php:3232 msgid "Enable foreign key checks" @@ -2198,16 +2191,14 @@ msgid "Geometry" msgstr "Geometria" #: js/messages.php:440 -#, fuzzy #| msgid "Inner Ring" msgid "Inner ring" msgstr "Cercle interior" #: js/messages.php:441 -#, fuzzy #| msgid "Outer ring:" msgid "Outer ring" -msgstr "Cercle exterior:" +msgstr "Cercle exterior" #: js/messages.php:445 msgid "Do you want to copy encryption key?" @@ -2455,13 +2446,11 @@ msgid "More" msgstr "Més" #: js/messages.php:531 -#, fuzzy #| msgid "Show Panel" msgid "Show panel" msgstr "Mostra el panell" #: js/messages.php:532 -#, fuzzy #| msgid "Hide Panel" msgid "Hide panel" msgstr "Amagar el panell" @@ -2539,16 +2528,14 @@ msgid "Create view" msgstr "Crea una vista" #: js/messages.php:556 -#, fuzzy #| msgid "Send error reports" msgid "Send error report" -msgstr "Enviar informes d'error" +msgstr "Enviar informe d'error" #: js/messages.php:557 -#, fuzzy #| msgid "Submit Error Report" msgid "Submit error report" -msgstr "Introduir informe d'error" +msgstr "Presentar informe d'error" #: js/messages.php:559 msgid "" @@ -2558,16 +2545,14 @@ msgstr "" "S'ha produït un error fatal de JavaScript. Vols enviar un informe d'errors?" #: js/messages.php:561 -#, fuzzy #| msgid "Change Report Settings" msgid "Change report settings" -msgstr "Canviar les configuracions d'informes" +msgstr "Canviar les configuracions de l'informe" #: js/messages.php:562 -#, fuzzy #| msgid "Show Report Details" msgid "Show report details" -msgstr "Mostra el detall dels informes" +msgstr "Mostra el detall de l'informe" #: js/messages.php:565 msgid "" @@ -2614,7 +2599,7 @@ msgstr "Realment vols esborrar aquesta marca?" #: js/messages.php:600 msgid "Some error occurred while getting SQL debug info." -msgstr "" +msgstr "S'ha produït algun error en obtenir informació de depuració SQL." #: js/messages.php:601 #, php-format @@ -2624,7 +2609,7 @@ msgstr "%s consultes executades %s vegades en %s segons." #: js/messages.php:602 #, php-format msgid "%s argument(s) passed" -msgstr "" +msgstr "%s argument(s) correctes" #: js/messages.php:603 msgid "Show arguments" @@ -2636,7 +2621,7 @@ msgstr "Amaga els arguments" #: js/messages.php:605 libraries/Console.class.php:321 msgid "Time taken:" -msgstr "" +msgstr "Temps dedicat:" #: js/messages.php:606 msgid "" @@ -3231,7 +3216,7 @@ msgstr "Ordre d'execució" #: libraries/Console.class.php:295 msgid "Time taken" -msgstr "" +msgstr "Temps dedicat" #: libraries/Console.class.php:298 msgid "Order by:" @@ -3343,7 +3328,7 @@ msgstr "Columna:" #: libraries/DBQbe.class.php:513 msgid "Alias:" -msgstr "" +msgstr "Àlies:" #: libraries/DBQbe.class.php:566 msgid "Sort:" @@ -3533,7 +3518,6 @@ msgstr "Dins les taules:" #: libraries/DbSearch.class.php:450 libraries/display_export.lib.php:50 #: libraries/replication_gui.lib.php:380 -#, fuzzy #| msgid "Unselect All" msgid "Unselect all" msgstr "Desmarca tot" @@ -3706,7 +3690,6 @@ msgstr "Amb marca:" #: libraries/server_user_groups.lib.php:231 #: templates/database/structure/check_all_tables.phtml:3 #: templates/database/structure/check_all_tables.phtml:4 -#, fuzzy #| msgid "Check All" msgid "Check all" msgstr "Marcar-ho tot" @@ -3925,11 +3908,13 @@ msgstr "" msgid "" "Linting is disabled for this query because it exceeds the maximum length." msgstr "" +"L'anàlisi d'errors està desactivat per a aquesta consulta perquè supera la " +"longitud màxima." #: libraries/Linter.class.php:162 #, php-format msgid "%1$s (near %2$s)" -msgstr "" +msgstr "%1$s (prop de %2$s)" #: libraries/Menu.class.php:200 libraries/ServerStatusData.class.php:442 #: libraries/config/messages.inc.php:933 @@ -4791,7 +4776,7 @@ msgstr "Anàlisi estàtica:" #: libraries/Util.class.php:668 #, php-format msgid "%d errors were found during analysis." -msgstr "" +msgstr "s'han trobat %d errors durant l'anàlisi." #: libraries/Util.class.php:730 libraries/rte/rte_events.lib.php:110 #: libraries/rte/rte_events.lib.php:119 libraries/rte/rte_events.lib.php:150 @@ -4815,14 +4800,13 @@ msgstr "Salta l'explicació de l'SQL" #: libraries/Util.class.php:1189 #, php-format msgid "Analyze Explain at %s" -msgstr "" +msgstr "Analitzar Explain a %s" #: libraries/Util.class.php:1220 msgid "Without PHP Code" msgstr "Sense codi PHP" #: libraries/Util.class.php:1223 libraries/config/messages.inc.php:898 -#, fuzzy #| msgid "Create PHP Code" msgid "Create PHP code" msgstr "Crea codi PHP" @@ -4953,7 +4937,6 @@ msgid "Check privileges for database \"%s\"." msgstr "Comprova els permisos per la base de dades \"%s\"." #: libraries/build_html_for_db.lib.php:181 -#, fuzzy #| msgid "Check Privileges" msgid "Check privileges" msgstr "Comprova els permisos" @@ -5669,6 +5652,8 @@ msgid "" "Find any errors in the query before executing it. Requires CodeMirror to be " "enabled." msgstr "" +"Troba errors a la consulta abans d'executar-la. Requereix que CodeMirror " +"estigui habilitat." #: libraries/config/messages.inc.php:67 msgid "Enable linter" @@ -5750,6 +5735,8 @@ msgstr "Confirma les consultes de DROP" msgid "" "Log SQL queries and their execution time, to be displayed in the console" msgstr "" +"Registre de consultes SQL i el seu temps d'execució, que es mostrarà a la " +"consola" #: libraries/config/messages.inc.php:101 msgid "Tab that is displayed when entering a database." @@ -6030,6 +6017,8 @@ msgid "" "Add IF NOT EXISTS (less efficient as indexes will be generated during table " "creation)" msgstr "" +"Afegir IF NOT EXISTS (menys eficient perquè els índexs es generaran durant " +"la creació de la taula)" #: libraries/config/messages.inc.php:211 msgid "Use ignore inserts" @@ -6089,6 +6078,8 @@ msgstr "Límit de claus externes" #: libraries/config/messages.inc.php:241 msgid "Default value for foreign key checks checkbox for some queries." msgstr "" +"El valor per defecte per a la clau externa activa el checkbox per a algunes " +"consultes." #: libraries/config/messages.inc.php:243 msgid "Foreign key checks" @@ -6665,7 +6656,6 @@ msgid "Maximum tables" msgstr "Màxim de taules" #: libraries/config/messages.inc.php:465 -#, fuzzy #| msgid "" #| "The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] " #| "([kbd]0[/kbd] for no limit)." @@ -6673,8 +6663,9 @@ msgid "" "The number of bytes a script is allowed to allocate, eg. [kbd]32M[/kbd] " "([kbd]-1[/kbd] for no limit and [kbd]0[/kbd] for no change)." msgstr "" -"El nombre d'octets que una ordre està autoritzada a reservar, ex. [kbd]32M[/" -"kbd] ([kbd]0[/kbd] per no posar límit)." +"El nombre d'octets que una ordre està autoritzada a reservar, ex. " +"[kbd]32M[/kbd] ([kbd]-1[/kbd] per no posar límit i [kbd]0[/kbd] per a no " +"canviar)." #: libraries/config/messages.inc.php:468 msgid "Memory limit" @@ -6827,6 +6818,7 @@ msgstr "Mostrar funcions en arbre" #: libraries/config/messages.inc.php:532 msgid "Whether to show functions under database in the navigation tree" msgstr "" +"Si vols mostrar les funcions sota la base de dades a l'arbre de navegació" #: libraries/config/messages.inc.php:533 msgid "Show procedures in tree" @@ -6835,6 +6827,7 @@ msgstr "Mostrar procediments en arbre" #: libraries/config/messages.inc.php:535 msgid "Whether to show procedures under database in the navigation tree" msgstr "" +"Si es mostren els procediments sota la base de dades a l'arbre de navegació" #: libraries/config/messages.inc.php:536 msgid "Show events in tree" @@ -6867,10 +6860,11 @@ msgstr "Ón de mostrar els vincles de fila de taula" #: libraries/config/messages.inc.php:548 msgid "Whether to show row links even in the absence of a unique key." msgstr "" +"Si es mostren els enllaços de fila fins i tot en absència d'una clau única." #: libraries/config/messages.inc.php:550 msgid "Show row links anyway" -msgstr "" +msgstr "Mostrar els enllaços de fila sempre" #: libraries/config/messages.inc.php:552 msgid "Use natural order for sorting table and database names." @@ -7653,7 +7647,6 @@ msgstr "" "taules." #: libraries/config/messages.inc.php:853 -#, fuzzy #| msgid "Show Creation timestamp" msgid "Show creation timestamp" msgstr "Mostra el temps de creació" @@ -7666,7 +7659,6 @@ msgstr "" "actualització per a totes les taules." #: libraries/config/messages.inc.php:857 -#, fuzzy #| msgid "Show Last update timestamp" msgid "Show last update timestamp" msgstr "Mostra data i hora de la darrera actualització" @@ -7679,7 +7671,6 @@ msgstr "" "comprovació per a totes les taules." #: libraries/config/messages.inc.php:861 -#, fuzzy #| msgid "Show Last check timestamp" msgid "Show last check timestamp" msgstr "Mostra el temps de la darrera comprovació" @@ -8274,6 +8265,9 @@ msgid "" "connection that encrypts the password using RSA'; while connecting to " "the server." msgstr "" +"Aquest mètode requereix l'ús d'una \"connexió SSL\" o una \"" +"connexió sense xifrar que xifra la contrasenya utilitzant RSA\"; mentre " +"es connecta al servidor." #: libraries/display_create_database.lib.php:23 msgid "Create database" @@ -8353,10 +8347,9 @@ msgid "Custom - display all possible options" msgstr "Usuari - mostra totes les opcions possibles" #: libraries/display_export.lib.php:335 -#, fuzzy #| msgid "Databases" msgid "Databases:" -msgstr "Bases de dades" +msgstr "Bases de dades:" #: libraries/display_export.lib.php:337 #: libraries/navigation/Navigation.class.php:196 @@ -8565,7 +8558,6 @@ msgstr "" ".sql.zip" #: libraries/display_import.lib.php:224 -#, fuzzy #| msgid "File to Import:" msgid "File to import:" msgstr "Arxiu a importar:" @@ -8579,7 +8571,6 @@ msgid "File uploads are not allowed on this server." msgstr "No es permet pujar arxius en aquest servidor." #: libraries/display_import.lib.php:278 -#, fuzzy #| msgid "Partial Import:" msgid "Partial import:" msgstr "Importació parcial:" @@ -8611,7 +8602,6 @@ msgstr "" "formats), contant des de la primera:" #: libraries/display_import.lib.php:340 -#, fuzzy #| msgid "Other Options:" msgid "Other options:" msgstr "Altres opcions:" @@ -9354,7 +9344,7 @@ msgstr "Romanés" #: libraries/mysql_charsets.lib.php:239 msgid "Sinhalese" -msgstr "" +msgstr "Singalès" #: libraries/mysql_charsets.lib.php:242 msgid "Slovak" @@ -9955,7 +9945,6 @@ msgstr "" #: libraries/operations.lib.php:879 libraries/operations.lib.php:973 #: libraries/operations.lib.php:1327 libraries/rte/rte_routines.lib.php:998 #: templates/columns_definitions/table_fields_definitions.phtml:47 -#, fuzzy #| msgid "Adjust Privileges" msgid "Adjust privileges" msgstr "Ajusta els permisos" @@ -10130,7 +10119,7 @@ msgstr "Repara" #: libraries/operations.lib.php:1609 #: templates/table/structure/display_structure.phtml:186 msgid "Truncate" -msgstr "" +msgstr "Truncar" #: libraries/operations.lib.php:1619 msgid "Coalesce" @@ -10568,6 +10557,7 @@ msgstr "Afegir instrucció %s" #: libraries/plugins/export/ExportSql.class.php:279 msgid "(less efficient as indexes will be generated during table creation)" msgstr "" +"(menys eficient perquè els índexs es generaran durant la creació de la taula)" #: libraries/plugins/export/ExportSql.class.php:288 #, php-format @@ -10948,10 +10938,9 @@ msgstr "Mostra graella" #: libraries/plugins/schema/SchemaPdf.class.php:94 #: templates/database/structure/print_view_data_dictionary_link.phtml:6 -#, fuzzy #| msgid "Data Dictionary" msgid "Data dictionary" -msgstr "Diccionari de Dades" +msgstr "Diccionari de dades" #: libraries/plugins/schema/SchemaPdf.class.php:99 msgid "Order of the tables" @@ -11191,6 +11180,7 @@ msgstr "" #: libraries/plugins/transformations/input/Text_Plain_Iptobinary.class.php:32 msgid "Converts an Internet network address in (IPv4/IPv6) format to binary" msgstr "" +"Converteix una adreça de xarxa d'Internet en format (IPv4/IPv6) a binari" #: libraries/plugins/transformations/input/Text_Plain_JsonEditor.class.php:33 msgid "Syntax highlighted CodeMirror editor for JSON." @@ -11700,10 +11690,9 @@ msgid "Re-type" msgstr "Reescriu" #: libraries/replication_gui.lib.php:895 -#, fuzzy #| msgid "Generate password" msgid "Generate password:" -msgstr "Genera una contrasenya" +msgstr "Genera una contrasenya:" #: libraries/replication_gui.lib.php:933 msgid "Replication started successfully." @@ -11977,6 +11966,8 @@ msgid "" "You do not have sufficient privileges to perform this operation; Please " "refer to the documentation for more details" msgstr "" +"No tens prou permisos per realitzar aquesta operació; si us plau, consulta " +"la documentació per a mes detalls" #: libraries/rte/rte_routines.lib.php:1026 msgid "Security type" @@ -12169,10 +12160,9 @@ msgid "Ignoring unsupported language code." msgstr "Ignorant codi d'idioma no suportat." #: libraries/select_server.lib.php:43 libraries/select_server.lib.php:48 -#, fuzzy #| msgid "Current server" msgid "Current server:" -msgstr "Servidor actual" +msgstr "Servidor actual:" #: libraries/server_bin_log.lib.php:30 msgid "Select binary log to view" @@ -12231,10 +12221,9 @@ msgstr "" #: libraries/server_databases.lib.php:366 #: libraries/server_databases.lib.php:371 -#, fuzzy #| msgid "Enable Statistics" msgid "Enable statistics" -msgstr "Activa Estadístiques" +msgstr "Activa estadístiques" #: libraries/server_databases.lib.php:492 #, php-format @@ -12677,10 +12666,9 @@ msgid "table-specific" msgstr "específic de la taula" #: libraries/server_privileges.lib.php:2628 -#, fuzzy #| msgid "Edit privileges:" msgid "Edit privileges" -msgstr "Edita permisos:" +msgstr "Edita permisos" #: libraries/server_privileges.lib.php:2631 msgid "Revoke" @@ -12823,6 +12811,9 @@ msgid "" "will prevent other users from connecting if the host part of their account " "allows a connection from any (%) host." msgstr "" +"Existeix un compte d'usuari que permet a qualsevol usuari de localhost " +"connectar-se. Això evita que altres usuaris es connectin si la part del host " +"del seu compte permet una connexió des de qualsevol host (%)." #: libraries/server_privileges.lib.php:4528 #, php-format @@ -13103,7 +13094,6 @@ msgid "Clear series" msgstr "Buidar sèrie" #: libraries/server_status_monitor.lib.php:233 -#, fuzzy #| msgid "Series in Chart:" msgid "Series in chart:" msgstr "Series al gràfic:" @@ -13167,7 +13157,7 @@ msgstr "Ordre" #: libraries/server_status_processes.lib.php:96 msgid "Progress" -msgstr "" +msgstr "Progrés" #: libraries/server_status_processes.lib.php:252 #: libraries/server_status_variables.lib.php:39 @@ -13999,12 +13989,12 @@ msgstr "Valor global" #: libraries/server_variables.lib.php:243 msgid "This is a read-only variable and can not be edited" -msgstr "" +msgstr "Això és una variable de només lectura i no es pot editar" #: libraries/sql-parser/src/Component.php:63 #: libraries/sql-parser/src/Component.php:83 msgid "Not implemented yet." -msgstr "" +msgstr "Encara no implementat." #: libraries/sql-parser/src/Components/AlterOperation.php:202 msgid "Unrecognized alter operation." @@ -14013,20 +14003,20 @@ msgstr "Operació de modificació no reconeguda." #: libraries/sql-parser/src/Components/Array2d.php:93 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "S'esperaven %1$d valors, però s'han trobat %2$d." #: libraries/sql-parser/src/Components/Array2d.php:116 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "S'esperava un claudàtor d'obertura seguit per un conjunt de valors." #: libraries/sql-parser/src/Components/ArrayObj.php:103 #: libraries/sql-parser/src/Components/CreateDefinition.php:204 msgid "An opening bracket was expected." -msgstr "" +msgstr "S'esperava un claudàtor d'obertura." #: libraries/sql-parser/src/Components/ArrayObj.php:128 msgid "A comma or a closing bracket was expected" -msgstr "" +msgstr "S'esperava una coma o un claudàtor de tancament" #: libraries/sql-parser/src/Components/CreateDefinition.php:248 msgid "A comma or a closing bracket was expected." @@ -14034,25 +14024,25 @@ msgstr "S'esperava una coma o un claudàtor de tancament." #: libraries/sql-parser/src/Components/CreateDefinition.php:264 msgid "A closing bracket was expected." -msgstr "" +msgstr "S'esperava un claudàtor de tancament." #: libraries/sql-parser/src/Components/DataType.php:127 msgid "Unrecognized data type." -msgstr "" +msgstr "Tipus de dades desconegut." #: libraries/sql-parser/src/Components/Expression.php:234 msgid "Unexpected closing bracket." -msgstr "" +msgstr "Claudàtor de tancament inesperat." #: libraries/sql-parser/src/Components/Expression.php:255 #: libraries/sql-parser/src/Components/Expression.php:292 #: libraries/sql-parser/src/Components/Expression.php:312 msgid "An alias was previously found." -msgstr "" +msgstr "S'ha trobat un àlies anteriorment." #: libraries/sql-parser/src/Components/Expression.php:266 msgid "Unexpected dot." -msgstr "" +msgstr "Punt inesperat." #: libraries/sql-parser/src/Components/Expression.php:336 msgid "An alias was expected." @@ -14065,12 +14055,12 @@ msgstr "S'esperava una expressió." #: libraries/sql-parser/src/Components/Limit.php:92 #: libraries/sql-parser/src/Components/Limit.php:114 msgid "An offset was expected." -msgstr "" +msgstr "S'esperava un desplaçament." #: libraries/sql-parser/src/Components/OptionsArray.php:148 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Aquesta opció està en conflicte amb \"%1$s\"." #: libraries/sql-parser/src/Components/RenameOperation.php:104 msgid "The old name of the table was expected." @@ -14078,7 +14068,7 @@ msgstr "S'esperava el nom antic de la taula." #: libraries/sql-parser/src/Components/RenameOperation.php:114 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "S'esperava la paraula clau \"TO\"." #: libraries/sql-parser/src/Components/RenameOperation.php:131 msgid "The new name of the table was expected." @@ -14094,12 +14084,12 @@ msgstr "Caràcter no esperat." #: libraries/sql-parser/src/Lexer.php:307 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "S'esperava(en) espai(s) en blanc abans del delimitador." #: libraries/sql-parser/src/Lexer.php:325 #: libraries/sql-parser/src/Lexer.php:341 msgid "Expected delimiter." -msgstr "" +msgstr "S'esperava delimitador ." #: libraries/sql-parser/src/Lexer.php:788 #, php-format @@ -14116,11 +14106,11 @@ msgstr "Inici no esperat de declaració." #: libraries/sql-parser/src/Parser.php:421 msgid "Unrecognized statement type." -msgstr "" +msgstr "Tipus de declaració no reconegut." #: libraries/sql-parser/src/Parser.php:505 msgid "No transaction was previously started." -msgstr "" +msgstr "No s'ha iniciat cap transacció anteriorment." #: libraries/sql-parser/src/Statement.php:212 msgid "Unexpected token." @@ -14128,16 +14118,18 @@ msgstr "Símbol (token) no esperat." #: libraries/sql-parser/src/Statement.php:250 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Aquest tipus de clàusula s'ha analitzat anteriorment." #: libraries/sql-parser/src/Statement.php:277 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"S'ha trobat una nova declaració, però no hi ha cap delimitador entre aquesta " +"i la anterior." #: libraries/sql-parser/src/Statement.php:297 msgid "Unrecognized keyword." -msgstr "" +msgstr "Paraula clau no reconeguda." #: libraries/sql-parser/src/Statements/CreateStatement.php:348 msgid "The name of the entity was expected." @@ -14149,7 +14141,7 @@ msgstr "S'esperava al menys la definició d'una columna." #: libraries/sql-parser/src/Statements/CreateStatement.php:478 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "S'esperava una paraula clau \"RETURNS\"." #: libraries/sql.lib.php:224 msgid "Detailed profile" @@ -14609,16 +14601,14 @@ msgid "Username and hostname didn't change." msgstr "El nom d'usuari i de servidor no s'han canviat." #: server_status.php:39 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view server status." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure l'estat del servidor." #: server_status_advisor.php:39 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view the advisor." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure l'assessor." #: server_status_processes.php:36 #, php-format @@ -14632,22 +14622,21 @@ msgid "" msgstr "phpMyAdmin no pot cancel.lar el fil %s. Probablement, ja és tancat." #: server_status_queries.php:55 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view query statistics." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure estadístiques de consultes." #: server_status_variables.php:57 -#, fuzzy #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view status variables." -msgstr "Permisos insuficients per veure usuaris." +msgstr "Permisos insuficients per veure variables d'estat." #: server_variables.php:83 -#, fuzzy, php-format +#, php-format #| msgid "Not enough privilege to view users." msgid "Not enough privilege to view server variables and settings. %s" -msgstr "Permisos insuficients per veure usuaris." +msgstr "" +"Permisos insuficients per veure variables del servidor i configuracions. %s" #: setup/frames/config.inc.php:41 setup/frames/index.inc.php:277 msgid "Download" @@ -14953,7 +14942,7 @@ msgstr "" #: templates/columns_definitions/table_fields_definitions.phtml:70 msgid "Virtuality" -msgstr "" +msgstr "Virtualitat" #: templates/columns_definitions/table_fields_definitions.phtml:76 msgid "Move column" @@ -15021,10 +15010,9 @@ msgid "Operator" msgstr "Operador" #: templates/database/designer/database_tables.phtml:29 -#, fuzzy #| msgid "Move columns" msgid "Show/hide columns" -msgstr "Moure columnes" +msgstr "Mostrar/amagar columnes" #: templates/database/designer/database_tables.phtml:40 msgid "See table structure" @@ -16004,6 +15992,9 @@ msgid "" "Percona documentation is at http://www.percona.com/software/documentation/" msgstr "" +"La documentació de Percona és a " +"http://www.percona.com/software/documentation/" #: libraries/advisory_rules.txt:133 msgid "'percona' found in version_comment" @@ -16015,6 +16006,9 @@ msgid "" "Drizzle documentation is at http://www.drizzle.org/content/documentation/" msgstr "" +"La documentació de Drizzle és a " +"http://www.drizzle.org/content/documentation/" #: libraries/advisory_rules.txt:140 #, php-format From 3a6e44f4217c74ab1a8c2b79d244e9c28b5c7523 Mon Sep 17 00:00:00 2001 From: Zheng Dan Date: Thu, 24 Sep 2015 16:29:36 +0200 Subject: [PATCH 35/41] Translated using Weblate (Chinese (China)) Currently translated at 77.0% (2473 of 3209 strings) [CI skip] --- po/zh_CN.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 9cb12bcccd..90f75943f1 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-09-24 10:56+0200\n" -"Last-Translator: Yizhou Qiang \n" +"PO-Revision-Date: 2015-09-24 16:29+0200\n" +"Last-Translator: Zheng Dan \n" "Language-Team: Chinese (China) " "\n" "Language: zh_CN\n" @@ -2477,7 +2477,7 @@ msgstr "%s条查询的执行时常:%s秒" #: js/messages.php:602 #, php-format msgid "%s argument(s) passed" -msgstr "" +msgstr "%s 个参数已传递" #: js/messages.php:603 #, fuzzy From 1ed1d638f869a25277dbb82d84a68abb0b626b2e Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Fri, 25 Sep 2015 09:57:23 -0400 Subject: [PATCH 36/41] Fix failing tests Signed-off-by: Marc Delisle --- libraries/dbi/DBIDummy.class.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/dbi/DBIDummy.class.php b/libraries/dbi/DBIDummy.class.php index a24e2f1809..fd2b5f9a2c 100644 --- a/libraries/dbi/DBIDummy.class.php +++ b/libraries/dbi/DBIDummy.class.php @@ -638,7 +638,7 @@ $GLOBALS['dummy_queries'] = array( . "`CREATE_OPTIONS` AS `Create_options`, " . "`TABLE_COMMENT` AS `Comment` " . "FROM `information_schema`.`TABLES` t " - . "WHERE BINARY `TABLE_SCHEMA` IN ('db') " + . "WHERE `TABLE_SCHEMA` IN ('db') " . "AND t.`TABLE_NAME` = 'table' ORDER BY Name ASC", 'result' => array() ), @@ -649,6 +649,10 @@ $GLOBALS['dummy_queries'] = array( array( 'query' => "SELECT @@have_partitioning;", 'result' => array() + ), + array( + 'query' => "SELECT @@lower_case_table_names", + 'result' => array() ) ); /** From bb0f7e2766dddf2edd66a931855193a870300eec Mon Sep 17 00:00:00 2001 From: Andrzej Date: Fri, 25 Sep 2015 14:07:57 +0200 Subject: [PATCH 37/41] Translated using Weblate (Polish) Currently translated at 78.8% (2530 of 3209 strings) [CI skip] --- po/pl.po | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/po/pl.po b/po/pl.po index 80e1ace056..fe12de15f7 100644 --- a/po/pl.po +++ b/po/pl.po @@ -4,17 +4,17 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-beta2\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:29-0400\n" -"PO-Revision-Date: 2015-01-21 02:11+0200\n" -"Last-Translator: Krystian Biesaga \n" -"Language-Team: Polish \n" +"PO-Revision-Date: 2015-09-25 14:07+0200\n" +"Last-Translator: Andrzej \n" +"Language-Team: Polish " +"\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.2-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -346,10 +346,9 @@ msgid "" msgstr "Wersja %1$s stworzona, śledzenie dla %2$s jest aktywne." #: db_tracking.php:91 -#, fuzzy #| msgid "No databases selected." msgid "No tables selected." -msgstr "Żadna baza danych nie został wybrana." +msgstr "Nie wybrano tabeli." #: db_tracking.php:145 msgid "Database Log" @@ -1978,14 +1977,14 @@ msgid "No auto-saved query" msgstr "" #: js/messages.php:354 -#, fuzzy, php-format +#, php-format #| msgid "Variable" msgid "Variable %d:" -msgstr "Zmienna" +msgstr "Zmienna %d:" #: js/messages.php:357 libraries/normalization.lib.php:886 msgid "Pick" -msgstr "" +msgstr "Wybierz" #: js/messages.php:358 msgid "Column selector" From 7aa504ea3a84234c7c049cc4683408f9c8c8102d Mon Sep 17 00:00:00 2001 From: Andrzej Date: Fri, 25 Sep 2015 14:07:59 +0200 Subject: [PATCH 38/41] Translated using Weblate (Polish) Currently translated at 78.8% (2530 of 3209 strings) [CI skip] --- po/pl.po | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/po/pl.po b/po/pl.po index a7e6b77964..c886b04bec 100644 --- a/po/pl.po +++ b/po/pl.po @@ -4,17 +4,17 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.6.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2015-09-06 07:31-0400\n" -"PO-Revision-Date: 2015-01-21 02:11+0200\n" -"Last-Translator: Krystian Biesaga \n" -"Language-Team: Polish \n" +"PO-Revision-Date: 2015-09-25 14:07+0200\n" +"Last-Translator: Andrzej \n" +"Language-Team: Polish " +"\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.2-dev\n" +"X-Generator: Weblate 2.5\n" #: changelog.php:37 license.php:30 #, php-format @@ -346,10 +346,9 @@ msgid "" msgstr "Wersja %1$s stworzona, śledzenie dla %2$s jest aktywne." #: db_tracking.php:91 -#, fuzzy #| msgid "No databases selected." msgid "No tables selected." -msgstr "Żadna baza danych nie został wybrana." +msgstr "Nie wybrano tabeli." #: db_tracking.php:145 msgid "Database Log" @@ -1978,14 +1977,14 @@ msgid "No auto-saved query" msgstr "" #: js/messages.php:354 -#, fuzzy, php-format +#, php-format #| msgid "Variable" msgid "Variable %d:" -msgstr "Zmienna" +msgstr "Zmienna %d:" #: js/messages.php:357 libraries/normalization.lib.php:886 msgid "Pick" -msgstr "" +msgstr "Wybierz" #: js/messages.php:358 msgid "Column selector" From b13550af11b6a79401ac688f525e9f460e7038cc Mon Sep 17 00:00:00 2001 From: Deven Bansod Date: Sat, 26 Sep 2015 01:37:43 +0530 Subject: [PATCH 39/41] Fix issue #11500 Signed-off-by: Deven Bansod --- libraries/server_privileges.lib.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 7c62918adf..1396c1e297 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -4913,12 +4913,14 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) ); if (PMA_MYSQL_INT_VERSION >= 50507 + && PMA_Util::getServerType() == 'MySQL' && isset($_REQUEST['authentication_plugin']) ) { $create_user_stmt .= ' IDENTIFIED WITH ' . $_REQUEST['authentication_plugin']; } if (PMA_MYSQL_INT_VERSION >= 50707 + && PMA_Util::getServerType() == 'MySQL' && strpos($create_user_stmt, '%') !== false ) { $create_user_stmt = str_replace( @@ -4944,7 +4946,9 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) ); $real_sql_query = $sql_query = $sql_query_stmt; - if (PMA_MYSQL_INT_VERSION < 50707) { + if (PMA_MYSQL_INT_VERSION < 50707 + || PMA_Util::getServerType() != 'MySQL' + ) { if ($_POST['pred_password'] == 'keep') { $password_set_real = sprintf( $password_set_stmt, From a8e66a58538b0951ec30c8ed65761b31b833578d Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Fri, 25 Sep 2015 13:44:50 -0400 Subject: [PATCH 40/41] ChangeLog entry Signed-off-by: Marc Delisle --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 3bf1b00151..6000b00a0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ phpMyAdmin - ChangeLog - issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system - issue #11495 'PMA_Microhistory' is undefined - issue #11496 Incorrect definition for getTablesWhenOpen() +- issue #11500 Error when creating new user on MariaDB 10.0.21 4.5.0.2 (2015-09-25) - issue #11497 Incorrect indexes when exporting From 62a4e61a65971ebc10ce4989cb54f5ce455f0878 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Fri, 25 Sep 2015 13:48:55 -0400 Subject: [PATCH 41/41] Optimize function call Signed-off-by: Marc Delisle --- libraries/server_privileges.lib.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 1396c1e297..32de29e54f 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -4905,6 +4905,7 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) $slashedUsername = PMA_Util::sqlAddSlashes($username); $slashedHostname = PMA_Util::sqlAddSlashes($hostname); $slashedPassword = PMA_Util::sqlAddSlashes($password); + $serverType = PMA_Util::getServerType(); $create_user_stmt = sprintf( 'CREATE USER \'%s\'@\'%s\'', @@ -4913,14 +4914,14 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) ); if (PMA_MYSQL_INT_VERSION >= 50507 - && PMA_Util::getServerType() == 'MySQL' + && $serverType == 'MySQL' && isset($_REQUEST['authentication_plugin']) ) { $create_user_stmt .= ' IDENTIFIED WITH ' . $_REQUEST['authentication_plugin']; } if (PMA_MYSQL_INT_VERSION >= 50707 - && PMA_Util::getServerType() == 'MySQL' + && $serverType == 'MySQL' && strpos($create_user_stmt, '%') !== false ) { $create_user_stmt = str_replace( @@ -4947,7 +4948,7 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) $real_sql_query = $sql_query = $sql_query_stmt; if (PMA_MYSQL_INT_VERSION < 50707 - || PMA_Util::getServerType() != 'MySQL' + || $serverType != 'MySQL' ) { if ($_POST['pred_password'] == 'keep') { $password_set_real = sprintf( @@ -5032,7 +5033,7 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) $sql_query = ''; } - if (PMA_Util::getServerType() == 'MySQL' + if ($serverType == 'MySQL' && PMA_MYSQL_INT_VERSION >= 50700 ) { $password_set_real = null;