Merge remote-tracking branch 'origin/master' into useNamespaces_master

This commit is contained in:
Hugues Peccatte 2015-09-26 13:50:49 +02:00
commit 71b62bcef9
34 changed files with 818 additions and 443 deletions

View File

@ -11,8 +11,18 @@ 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
- 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.0 (not yet released)
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
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
@ -112,7 +122,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

View File

@ -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
<http://www.php.net/mcrypt>`_ extension is strongly suggested.
* When using the cookie authentication (the default), the `openssl
<http://www.php.net/openssl>`_ extension is strongly suggested.
* To support upload progress bars, see :ref:`faq2_9`.

View File

@ -410,7 +410,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();

View File

@ -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 +
@ -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) {

View File

@ -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 {

View File

@ -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));
}
}

View File

@ -1190,10 +1190,9 @@ class 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[Util::backquote($fields_meta[$i]->name)])
)
$name = $fields_meta[$i]->name;
$condition_field = (isset($highlight_columns[$name])
|| isset($highlight_columns[Util::backquote($name)]))
? true
: false;

View File

@ -321,7 +321,7 @@ class Footer
$this->_scripts->addCode(
sprintf(
'if (! (history && history.pushState)) '
. 'PMA_Microhistory.primer = {'
. 'PMA_MicroHistory.primer = {'
. ' url: "%s",'
. ' scripts: %s,'
. ' menuHash: "%s"'

View File

@ -110,7 +110,7 @@ class StorageEngine
if (PMA_MYSQL_INT_VERSION >= 50708) {
$disabled = Util::cacheGet(
'disabled_storage_engines',
function() {
function () {
return $GLOBALS['dbi']->fetchValue(
'SELECT @@disabled_storage_engines'
);

View File

@ -4424,161 +4424,6 @@ class 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 = 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 = 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.
@ -5035,7 +4880,7 @@ class Util
* @return array $tables list of tables
*
*/
public function getTablesWhenOpen($db, $db_info_result)
public static function getTablesWhenOpen($db, $db_info_result)
{
$sot_cache = $tables = array();

View File

@ -0,0 +1,272 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Responsible for retrieving version information and notifiying about latest version
*
* @package PhpMyAdmin
*/
use PMA\libraries\Util;
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* Responsible for retrieving version information and notifiying about latest version
*
* @package PhpMyAdmin
*
*/
class VersionInformation
{
/**
* Returns information with latest version from phpmyadmin.net
*
* @return object JSON decoded object with the data
*/
public 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 = 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 = 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 the available PHP and MySQL versions
*
* @param array $releases array of information related to each version
*
* @return array containing the version and date of latest compatible 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 Util::cacheGet('PMA_MYSQL_STR_VERSION');
}
}
?>

View File

@ -1020,7 +1020,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();

View File

@ -161,7 +161,7 @@ class DatabaseStructureController extends DatabaseController
return;
}
require_once 'libraries/replication.inc.php';
include_once 'libraries/replication.inc.php';
PageSettings::showGroup('DbStructure');

View File

@ -629,7 +629,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()
),
@ -640,6 +640,10 @@ $GLOBALS['dummy_queries'] = array(
array(
'query' => "SELECT @@have_partitioning;",
'result' => array()
),
array(
'query' => "SELECT @@lower_case_table_names",
'result' => array()
)
);
/**

View File

@ -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';
}
/**

View File

@ -1742,13 +1742,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');
}
@ -2712,9 +2711,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;
}
}

View File

@ -4962,6 +4962,7 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password)
$slashedUsername = Util::sqlAddSlashes($username);
$slashedHostname = Util::sqlAddSlashes($hostname);
$slashedPassword = Util::sqlAddSlashes($password);
$serverType = Util::getServerType();
$create_user_stmt = sprintf(
'CREATE USER \'%s\'@\'%s\'',
@ -4970,12 +4971,14 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password)
);
if (PMA_MYSQL_INT_VERSION >= 50507
&& $serverType == 'MySQL'
&& isset($_REQUEST['authentication_plugin'])
) {
$create_user_stmt .= ' IDENTIFIED WITH '
. $_REQUEST['authentication_plugin'];
}
if (PMA_MYSQL_INT_VERSION >= 50707
&& $serverType == 'MySQL'
&& strpos($create_user_stmt, '%') !== false
) {
$create_user_stmt = str_replace(
@ -5000,7 +5003,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
|| $serverType != 'MySQL'
) {
if ($_POST['pred_password'] == 'keep') {
$password_set_real = sprintf(
$password_set_stmt,
@ -5083,7 +5088,7 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password)
$sql_query = '';
}
if (Util::getServerType() == 'MySQL'
if ($serverType == 'MySQL'
&& PMA_MYSQL_INT_VERSION >= 50700
) {
$password_set_real = null;
@ -5114,7 +5119,6 @@ function PMA_getRoutineType($dbname, $routineName)
{
$routineData = $GLOBALS['dbi']->getRoutines($dbname);
$routines = array();
foreach ($routineData as $routine) {
if ($routine['name'] === $routineName) {
return $routine['type'];

View File

@ -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);
}
}

View File

@ -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)) {

View File

@ -105,7 +105,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) {

244
po/ca.po
View File

@ -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 <xvnavarro@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/phpmyadmin/"
"master/ca/>\n"
"Language-Team: Catalan "
"<https://hosted.weblate.org/projects/phpmyadmin/master/ca/>\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. "
"</b>"
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 <b>no</b> es pot recuperar "
"simplement canviant altra vegada el(s) joc(s) de caràcters de la columna. <b>"
"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.</b>"
#: 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 <code>%2$s</code>)"
msgstr ""
msgstr "%1$s (prop de <code>%2$s</code>)"
#: 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</i>'; while connecting to "
"the server."
msgstr ""
"Aquest mètode requereix l'ús d'una \"<i>connexió SSL</i>\" o una \"<i>"
"connexió sense xifrar que xifra la contrasenya utilitzant RSA</i>\"; 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 ""
"<b>.sql.zip</b>"
#: 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 <a href=\"http://www.percona.com/software/"
"documentation/\">http://www.percona.com/software/documentation/</a>"
msgstr ""
"La documentació de Percona és a <a href=\""
"http://www.percona.com/software/documentation/\"> "
"http://www.percona.com/software/documentation/</a>"
#: libraries/advisory_rules.txt:133
msgid "'percona' found in version_comment"
@ -16015,6 +16006,9 @@ msgid ""
"Drizzle documentation is at <a href=\"http://www.drizzle.org/content/"
"documentation/\">http://www.drizzle.org/content/documentation/</a>"
msgstr ""
"La documentació de Drizzle és a <a href=\""
"http://www.drizzle.org/content/documentation/\"> "
"http://www.drizzle.org/content/documentation/</a>"
#: libraries/advisory_rules.txt:140
#, php-format

View File

@ -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 <sqrt@entless.org>\n"
"Language-Team: German <https://hosted.weblate.org/projects/phpmyadmin/master/"
"de/>\n"
"Language-Team: German "
"<https://hosted.weblate.org/projects/phpmyadmin/master/de/>\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"

View File

@ -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 <krystian4842@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/phpmyadmin/master/"
"pl/>\n"
"PO-Revision-Date: 2015-09-25 14:07+0200\n"
"Last-Translator: Andrzej <andrzej@kynu.pl>\n"
"Language-Team: Polish "
"<https://hosted.weblate.org/projects/phpmyadmin/master/pl/>\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"

View File

@ -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 <gui@webseibt.net>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"phpmyadmin/master/pt_BR/>\n"
"PO-Revision-Date: 2015-09-23 17:13+0200\n"
"Last-Translator: Victor Laureano <victor.laureano@gmail.com>\n"
"Language-Team: Portuguese (Brazil) "
"<https://hosted.weblate.org/projects/phpmyadmin/master/pt_BR/>\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 ""

View File

@ -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 <martin@whistler.sk>\n"
"Language-Team: Slovak "
"<https://hosted.weblate.org/projects/phpmyadmin/master/sk/>\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"

View File

@ -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) <https://hosted.weblate.org/projects/"
"phpmyadmin/master/zh_CN/>\n"
"PO-Revision-Date: 2015-09-24 16:29+0200\n"
"Last-Translator: Zheng Dan <clanboy@163.com>\n"
"Language-Team: Chinese (China) "
"<https://hosted.weblate.org/projects/phpmyadmin/master/zh_CN/>\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,32 +2453,31 @@ 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."
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
msgid "%s argument(s) passed"
msgstr ""
msgstr "%s 个参数已传递"
#: js/messages.php:603
#, fuzzy

View File

@ -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

View File

@ -18,6 +18,7 @@ if (!defined('PHPMYADMIN')) {
* Core libraries.
*/
require_once './libraries/display_select_lang.lib.php';
require_once './libraries/VersionInformation.php';
require_once './setup/lib/index.lib.php';
require_once './libraries/config/FormDisplay.tpl.php';

View File

@ -108,7 +108,8 @@ function PMA_versionCheck()
$message_id = uniqid('version_check');
// Fetch data
$version_data = PMA\libraries\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\libraries\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\libraries\Util::versionToInt(
$version_local = $versionInformation->versionToInt(
$GLOBALS['PMA_Config']->get('PMA_VERSION')
);
if ($version_local === false) {

View File

@ -66,72 +66,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\libraries\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\libraries\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
*

View File

@ -0,0 +1,259 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Tests for methods in VersionInformation class
*
* @package PhpMyAdmin-test
*/
/*
* Include to test.
*/
require_once 'libraries/VersionInformation.php';
/**
* Tests for methods in VersionInformation class
*
* @package PhpMyAdmin-test
*/
class VersionInformationTest extends PHPUnit_Framework_TestCase
{
private $_releases;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*
* @return void
*/
protected function setUp()
{
$this->_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'));
}
}

View File

@ -389,7 +389,7 @@ class DBI_PMA_Relation_Cleanup extends 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) {

View File

@ -639,7 +639,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' "

View File

@ -9,19 +9,30 @@
// Sets up the session
define('PMA_MINIMUM_COMMON', true);
require_once 'libraries/common.inc.php';
require_once 'libraries/VersionInformation.php';
// Always send the correct headers
header('Content-type: application/json; charset=UTF-8');
$version = PMA\libraries\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 : ''),
)
);
}