Merge branch 'master' of github.com:phpmyadmin/phpmyadmin

This commit is contained in:
Madhura Jayaratne 2016-02-19 19:28:38 +11:00
commit 2ff57f5d36
109 changed files with 59922 additions and 60590 deletions

26
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,26 @@
### Steps to reproduce
1.
2.
3.
### Expected behaviour
Tell us what should happen
### Actual behaviour
Tell us what happens instead
### Server configuration
**Operating system**:
**Web server:**
**Database:**
**PHP version:**
**phpMyAdmin version:**
### Client configuration
**Browser:**
**Operating system:**

5
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,5 @@
Before submitting pull request, please check that every commit:
- [ ] Has proper Signed-Off-By
- [ ] Has commit message which describes it
- [ ] Is needed on it's own, if you have just minor fixes to previous commits, you can squash them

View File

@ -48,6 +48,8 @@ phpMyAdmin - ChangeLog
- issue #11880 Fixed rendering of missing extension error
- issue #11923 Errors on Structure tab when user only has select access on certain columns
- issue #11972 Missing documentation for $cfg['Servers'][$i]['favorite'] and $cfg['NumFavoriteTables']
- issue #11907 Avoid displaying UPDATE query twice
- issue #11850 Fixed CSV import
4.5.5.0 (not yet released)
- issue Undefined index: is_ajax_request

View File

@ -41,7 +41,7 @@ Basic settings
:type: string
:default: ``''``
.. versionremoved:: 4.6.0
.. deprecated:: 4.6.0
This setting is no longer available since phpMyAdmin 4.6.0. Please
adjust your webserver instead.
@ -1306,7 +1306,7 @@ Generic settings
:type: boolean
:default: false
.. versionremoved:: 4.6.0
.. deprecated:: 4.6.0
This setting is no longer available since phpMyAdmin 4.6.0. Please
adjust your webserver instead.

View File

@ -627,6 +627,7 @@ A list of files and corresponding functionality which degrade gracefully when re
* :file:`./setup/` (setup script)
* :file:`./examples/`
* :file:`./sql/` (SQL scripts to configure advanced functionality)
* :file:`./js/openlayers/` (GIS visualization)
.. _faqconfig:

View File

@ -782,6 +782,8 @@ are always ways to make your installation more secure:
* If you are afraid of automated attacks, enabling Captcha by
:config:option:`$cfg['CaptchaLoginPublicKey']` and
:config:option:`$cfg['CaptchaLoginPrivateKey']` might be an option.
* Alternative approach might be using using fail2ban as phpMyAdmin logs failed
authentication attempts to syslog (if available)
Known issues
++++++++++++

View File

@ -670,12 +670,16 @@ if (! empty($id_bookmark) && $_REQUEST['action_bookmark'] == 2) {
htmlspecialchars($_POST['bkm_label'])
);
} elseif ($finished && ! $error) {
if ($import_type == 'query') {
$message = PMA\libraries\Message::success();
} else {
// Do not display the query with message, we do it separately
$display_query = ';';
if ($import_type != 'query') {
$message = PMA\libraries\Message::success(
'<em>'
. __('Import has been successfully finished, %d queries executed.')
. _ngettext(
'Import has been successfully finished, %d query executed.',
'Import has been successfully finished, %d queries executed.',
$executed_queries
)
. '</em>'
);
$message->addParam($executed_queries);

View File

@ -95,32 +95,14 @@ class Console
$output .= '<div class="message welcome"><span>';
$count_bookmarks = count($bookmarks);
if ($count_bookmarks > 0) {
$bookmarks_message = sprintf(
$output .= sprintf(
_ngettext(
'Total %d bookmark',
'Total %d bookmarks',
'Showing %1$d bookmark (both private and shared)',
'Showing %1$d bookmarks (both private and shared)',
$count_bookmarks
),
$count_bookmarks
);
$private_message = sprintf(
'<span class="bookmark_label">%1$s</span>',
__('private')
);
$shared_message = sprintf(
'<span class="bookmark_label shared">%1$s</span>',
__('shared')
);
$output .= sprintf(
/* l10n: First parameter will be replaced with the translation
for Total and the number of bookmarks, second one with the
translation for private and the third one, with the translation
for shared */
__('%1$s, %2$s and %3$s bookmarks included'),
$bookmarks_message,
$private_message,
$shared_message
);
} else {
$output .= __('No bookmarks');
}

View File

@ -1092,18 +1092,18 @@ class Util
}
}
$render_sql = $cfg['ShowSQL'] == true && ! empty($sql_query) && $sql_query !== ';';
if (isset($GLOBALS['using_bookmark_message'])) {
$retval .= $GLOBALS['using_bookmark_message']->getDisplay();
unset($GLOBALS['using_bookmark_message']);
}
// In an Ajax request, $GLOBALS['cell_align_left'] may not be defined. Hence,
// check for it's presence before using it
$retval .= '<div class="result_query"'
. ( isset($GLOBALS['cell_align_left'])
? ' style="text-align: ' . $GLOBALS['cell_align_left'] . '"'
: '' )
. '>' . "\n";
if ($render_sql) {
$retval .= '<div class="result_query"'
. ' style="text-align: ' . $GLOBALS['cell_align_left'] . '"'
. '>' . "\n";
}
if ($message instanceof Message) {
if (isset($GLOBALS['special_message'])) {
@ -1121,7 +1121,7 @@ class Util
$retval .= '</div>';
}
if ($cfg['ShowSQL'] == true && ! empty($sql_query) && $sql_query !== ';') {
if ($render_sql) {
// Html format the query to be displayed
// If we want to show some sql code it is easiest to create it here
/* SQL-Parser-Analyzer */
@ -1342,9 +1342,10 @@ class Util
$retval .= $inline_edit_link . $edit_link . $explain_link . $php_link
. $refresh_link;
$retval .= '</div>';
$retval .= '</div>';
}
$retval .= '</div>';
return $retval;
} // end of the 'getMessage()' function

View File

@ -293,6 +293,11 @@ function PMA_analyseShowGrant()
$GLOBALS['dbs_where_create_table_allowed']
);
PMA\libraries\Util::cacheSet('dbs_to_test', $GLOBALS['dbs_to_test']);
PMA\libraries\Util::cacheSet('proc_priv', $GLOBALS['proc_priv']);
PMA\libraries\Util::cacheSet('table_priv', $GLOBALS['table_priv']);
PMA\libraries\Util::cacheSet('col_priv', $GLOBALS['col_priv']);
PMA\libraries\Util::cacheSet('db_priv', $GLOBALS['db_priv']);
} // end function
$user = $GLOBALS['dbi']->fetchValue("SELECT CURRENT_USER();");

View File

@ -974,6 +974,7 @@ $import_notice = null;
* @param array &$analyses Analyses of the tables
* @param array &$additional_sql Additional SQL statements to be executed
* @param array $options Associative array of options
* @param array &$sql_data 2-element array with sql data
*
* @return void
* @access public
@ -981,7 +982,7 @@ $import_notice = null;
* @link http://wiki.phpmyadmin.net/pma/Import
*/
function PMA_buildSQL($db_name, &$tables, &$analyses = null,
&$additional_sql = null, $options = null
&$additional_sql = null, $options = null, &$sql_data
) {
/* Take care of the options */
if (isset($options['db_collation'])&& ! is_null($options['db_collation'])) {
@ -1021,7 +1022,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = null,
/* Execute the SQL statements create above */
$sql_len = count($sql);
for ($i = 0; $i < $sql_len; ++$i) {
PMA_importRunQuery($sql[$i], $sql[$i]);
PMA_importRunQuery($sql[$i], $sql[$i], $sql_data);
}
/* No longer needed */
@ -1056,7 +1057,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = null,
$additional_sql[$i]
);
/* Execute the resulting statements */
PMA_importRunQuery($additional_sql[$i], $additional_sql[$i]);
PMA_importRunQuery($additional_sql[$i], $additional_sql[$i], $sql_data);
}
}
@ -1108,7 +1109,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = null,
* after it is formed so that we don't have
* to store them in a (possibly large) buffer
*/
PMA_importRunQuery($tempSQLStr, $tempSQLStr);
PMA_importRunQuery($tempSQLStr, $tempSQLStr, $sql_data);
}
}
@ -1199,7 +1200,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = null,
* after it is formed so that we don't have
* to store them in a (possibly large) buffer
*/
PMA_importRunQuery($tempSQLStr, $tempSQLStr);
PMA_importRunQuery($tempSQLStr, $tempSQLStr, $sql_data);
}
/* No longer needed */

View File

@ -22,10 +22,12 @@ function PMA_logUser($user, $status = 'ok')
apache_note('userID', $user);
apache_note('userStatus', $status);
}
if (function_exists('syslog')) {
if (function_exists('syslog') && $status != 'ok') {
@openlog('phpMyAdmin', LOG_NDELAY | LOG_PID, LOG_AUTHPRIV);
@syslog(
LOG_AUTHPRIV,
'phpMyAdmin: ' . $user . ' (' . $status . ') from ' . $_SERVER['REMOTE_ADDR']
LOG_WARNING,
'user denied: ' . $user . ' (' . $status . ') from ' .
$_SERVER['REMOTE_ADDR']
);
}
}

View File

@ -90,9 +90,11 @@ class ImportCsv extends AbstractImportCsv
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $db, $table, $csv_terminated, $csv_enclosed, $csv_escaped,
$csv_new_line, $csv_columns, $err_url;
@ -569,7 +571,7 @@ class ImportCsv extends AbstractImportCsv
* @todo maybe we could add original line to verbose
* SQL in comment
*/
PMA_importRunQuery($sql, $sql);
PMA_importRunQuery($sql, $sql, $sql_data);
}
$line++;
@ -645,14 +647,14 @@ class ImportCsv extends AbstractImportCsv
$create = null;
/* Created and execute necessary SQL statements from data */
PMA_buildSQL($db_name, $tables, $analyses, $create, $options);
PMA_buildSQL($db_name, $tables, $analyses, $create, $options, $sql_data);
unset($tables);
unset($analyses);
}
// Commit any possible data in buffers
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
if (count($values) != 0 && !$error) {
$message = PMA\libraries\Message::error(

View File

@ -90,9 +90,11 @@ class ImportLdi extends AbstractImportCsv
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $finished, $import_file, $compression, $charset_conversion, $table;
global $ldi_local_option, $ldi_replace, $ldi_ignore, $ldi_terminated,
@ -164,8 +166,8 @@ class ImportLdi extends AbstractImportCsv
$sql .= ')';
}
PMA_importRunQuery($sql, $sql);
PMA_importRunQuery();
PMA_importRunQuery($sql, $sql, $sql_data);
PMA_importRunQuery('', '', $sql_data);
$finished = true;
}
}

View File

@ -61,9 +61,11 @@ class ImportMediawiki extends ImportPlugin
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $error, $timeout_passed, $finished;
@ -231,7 +233,7 @@ class ImportMediawiki extends ImportPlugin
);
// Import the current table data into the database
$this->_importDataOneTable($current_table);
$this->_importDataOneTable($current_table, $sql_data);
// Reset table name
$cur_table_name = "";
@ -282,18 +284,20 @@ class ImportMediawiki extends ImportPlugin
/**
* Imports data from a single table
*
* @param array $table containing all table info:
* <code>
* $table[0] - string containing table name
* $table[1] - array[] of table headers
* $table[2] - array[][] of table content rows
* </code>
* @param array $table containing all table info:
* <code>
* $table[0] - string containing table name
* $table[1] - array[] of table headers
* $table[2] - array[][] of table content rows
* </code>
*
* @param array &$sql_data 2-element array with sql data
*
* @global bool $analyze whether to scan for column types
*
* @return void
*/
private function _importDataOneTable($table)
private function _importDataOneTable($table, &$sql_data)
{
$analyze = $this->_getAnalyze();
if ($analyze) {
@ -311,11 +315,11 @@ class ImportMediawiki extends ImportPlugin
$analyses = array();
$analyses [] = PMA_analyzeTable($tables[0]);
$this->_executeImportTables($tables, $analyses);
$this->_executeImportTables($tables, $analyses, $sql_data);
}
// Commit any possible data in buffers
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
}
/**
@ -368,12 +372,13 @@ class ImportMediawiki extends ImportPlugin
* $analyses = array(
* array(array() column_types, array() column_sizes)
* )
* @param array &$sql_data 2-element array with sql data
*
* @global string $db name of the database to import in
*
* @return void
*/
private function _executeImportTables(&$tables, &$analyses)
private function _executeImportTables(&$tables, &$analyses, &$sql_data)
{
global $db;
@ -387,7 +392,7 @@ class ImportMediawiki extends ImportPlugin
$create = null;
// Create and execute necessary SQL statements from data
PMA_buildSQL($db_name, $tables, $analyses, $create, $options);
PMA_buildSQL($db_name, $tables, $analyses, $create, $options, $sql_data);
unset($tables);
unset($analyses);

View File

@ -95,9 +95,11 @@ class ImportOds extends ImportPlugin
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $db, $error, $timeout_passed, $finished;
@ -371,13 +373,13 @@ class ImportOds extends ImportPlugin
$create = null;
/* Created and execute necessary SQL statements from data */
PMA_buildSQL($db_name, $tables, $analyses, $create, $options);
PMA_buildSQL($db_name, $tables, $analyses, $create, $options, $sql_data);
unset($tables);
unset($analyses);
/* Commit any possible data in buffers */
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
}
/**

View File

@ -57,9 +57,11 @@ class ImportShp extends ImportPlugin
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $db, $error, $finished, $compression,
$import_file, $local_import_file, $message;
@ -287,7 +289,7 @@ class ImportShp extends ImportPlugin
// Created and execute necessary SQL statements from data
$null_param = null;
PMA_buildSQL($db_name, $tables, $analyses, $null_param, $options);
PMA_buildSQL($db_name, $tables, $analyses, $null_param, $options, $sql_data);
unset($tables);
unset($analyses);
@ -296,7 +298,7 @@ class ImportShp extends ImportPlugin
$error = false;
// Commit any possible data in buffers
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
}
/**

View File

@ -52,9 +52,11 @@ class ImportXml extends ImportPlugin
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
global $error, $timeout_passed, $finished, $db;
@ -355,13 +357,13 @@ class ImportXml extends ImportPlugin
}
/* Created and execute necessary SQL statements from data */
PMA_buildSQL($db_name, $tables, $analyses, $create, $options);
PMA_buildSQL($db_name, $tables, $analyses, $create, $options, $sql_data);
unset($analyses);
unset($tables);
unset($create);
/* Commit any possible data in buffers */
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
}
}

View File

@ -96,9 +96,11 @@ class Import[Name] extends PMA\libraries\plugins\ImportPlugin
/**
* Handles the whole import logic
*
* @param array &$sql_data 2-element array with sql data
*
* @return void
*/
public function doImport()
public function doImport(&$sql_data = array())
{
// get globals (others are optional)
global $error, $timeout_passed, $finished;
@ -117,10 +119,10 @@ class Import[Name] extends PMA\libraries\plugins\ImportPlugin
$buffer .= $data;
}
// PARSE $buffer here, post sql queries using:
PMA_importRunQuery($sql, $verbose_sql_with_comments);
PMA_importRunQuery($sql, $verbose_sql_with_comments, $sql_data);
} // End of import loop
// Commit any possible data in buffers
PMA_importRunQuery();
PMA_importRunQuery('', '', $sql_data);
}

1455
po/af.po

File diff suppressed because it is too large Load Diff

1460
po/ar.po

File diff suppressed because it is too large Load Diff

1439
po/az.po

File diff suppressed because it is too large Load Diff

1456
po/be.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1439
po/bg.po

File diff suppressed because it is too large Load Diff

1444
po/bn.po

File diff suppressed because it is too large Load Diff

1444
po/br.po

File diff suppressed because it is too large Load Diff

1427
po/brx.po

File diff suppressed because it is too large Load Diff

1459
po/bs.po

File diff suppressed because it is too large Load Diff

1451
po/ca.po

File diff suppressed because it is too large Load Diff

1446
po/ckb.po

File diff suppressed because it is too large Load Diff

1447
po/cs.po

File diff suppressed because it is too large Load Diff

1465
po/cy.po

File diff suppressed because it is too large Load Diff

1439
po/da.po

File diff suppressed because it is too large Load Diff

1443
po/de.po

File diff suppressed because it is too large Load Diff

1443
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1427
po/eo.po

File diff suppressed because it is too large Load Diff

1442
po/es.po

File diff suppressed because it is too large Load Diff

1443
po/et.po

File diff suppressed because it is too large Load Diff

1458
po/eu.po

File diff suppressed because it is too large Load Diff

1441
po/fa.po

File diff suppressed because it is too large Load Diff

1480
po/fi.po

File diff suppressed because it is too large Load Diff

1444
po/fr.po

File diff suppressed because it is too large Load Diff

1427
po/fy.po

File diff suppressed because it is too large Load Diff

1439
po/gl.po

File diff suppressed because it is too large Load Diff

1427
po/gu.po

File diff suppressed because it is too large Load Diff

1458
po/he.po

File diff suppressed because it is too large Load Diff

1444
po/hi.po

File diff suppressed because it is too large Load Diff

1448
po/hr.po

File diff suppressed because it is too large Load Diff

1440
po/hu.po

File diff suppressed because it is too large Load Diff

1439
po/hy.po

File diff suppressed because it is too large Load Diff

1504
po/ia.po

File diff suppressed because it is too large Load Diff

1435
po/id.po

File diff suppressed because it is too large Load Diff

1442
po/it.po

File diff suppressed because it is too large Load Diff

1440
po/ja.po

File diff suppressed because it is too large Load Diff

1429
po/ka.po

File diff suppressed because it is too large Load Diff

1433
po/kk.po

File diff suppressed because it is too large Load Diff

1437
po/km.po

File diff suppressed because it is too large Load Diff

1427
po/kn.po

File diff suppressed because it is too large Load Diff

1436
po/ko.po

File diff suppressed because it is too large Load Diff

1428
po/ksh.po

File diff suppressed because it is too large Load Diff

1427
po/ky.po

File diff suppressed because it is too large Load Diff

1427
po/li.po

File diff suppressed because it is too large Load Diff

1448
po/lt.po

File diff suppressed because it is too large Load Diff

1448
po/lv.po

File diff suppressed because it is too large Load Diff

1463
po/mk.po

File diff suppressed because it is too large Load Diff

1441
po/ml.po

File diff suppressed because it is too large Load Diff

1458
po/mn.po

File diff suppressed because it is too large Load Diff

1451
po/ms.po

File diff suppressed because it is too large Load Diff

1439
po/nb.po

File diff suppressed because it is too large Load Diff

1427
po/ne.po

File diff suppressed because it is too large Load Diff

1448
po/nl.po

File diff suppressed because it is too large Load Diff

1441
po/pa.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1443
po/pl.po

File diff suppressed because it is too large Load Diff

1439
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1443
po/ro.po

File diff suppressed because it is too large Load Diff

1443
po/ru.po

File diff suppressed because it is too large Load Diff

1444
po/si.po

File diff suppressed because it is too large Load Diff

1443
po/sk.po

File diff suppressed because it is too large Load Diff

1451
po/sl.po

File diff suppressed because it is too large Load Diff

1442
po/sq.po

File diff suppressed because it is too large Load Diff

1470
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1442
po/sv.po

File diff suppressed because it is too large Load Diff

1439
po/ta.po

File diff suppressed because it is too large Load Diff

1441
po/te.po

File diff suppressed because it is too large Load Diff

1440
po/th.po

File diff suppressed because it is too large Load Diff

1441
po/tk.po

File diff suppressed because it is too large Load Diff

1443
po/tr.po

File diff suppressed because it is too large Load Diff

1451
po/tt.po

File diff suppressed because it is too large Load Diff

1448
po/ug.po

File diff suppressed because it is too large Load Diff

1443
po/uk.po

File diff suppressed because it is too large Load Diff

1444
po/ur.po

File diff suppressed because it is too large Load Diff

1450
po/uz.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1439
po/vi.po

File diff suppressed because it is too large Load Diff

1427
po/vls.po

File diff suppressed because it is too large Load Diff

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