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

This commit is contained in:
Madhura Jayaratne 2015-05-13 08:24:04 +05:30
commit 6fc418eb02
4 changed files with 185 additions and 125 deletions

View File

@ -43,6 +43,8 @@ phpMyAdmin - ChangeLog
- bug Honor proxy settings when getting Git commit information
- bug Missing title on link
- bug #4512 ForceSSL Redirect Check
- bug Undefined index collation_connection
- bug Error when the reporting server is down
4.4.6.0 (2015-05-07)
- bug #4890 webkitStorageInfo and webkitIndexedDB is deprecated

View File

@ -1045,8 +1045,9 @@ class PMA_Config
if (!PMA_DRIZZLE) {
// just to shorten the lines
$collation = 'collation_connection';
if (isset($_COOKIE['pma_collation_connection'])
|| isset($_POST[$collation])
if (isset($GLOBALS[$collation])
&& (isset($_COOKIE['pma_collation_connection'])
|| isset($_POST[$collation]))
) {
if ((! isset($config_data[$collation])
&& $GLOBALS[$collation] != 'utf8_general_ci')

View File

@ -738,6 +738,56 @@ class PMA_DisplayResults
} // end function _getTableNavigationButton()
/**
* Possibly return a page selector for table navigation
*
* @param string $table_navigation_html the current navigation HTML
*
* @return array ($table_navigation_html, $nbTotalPage)
*
* @access private
*
*/
private function _getHtmlPageSelector($table_navigation_html)
{
$pageNow = @floor(
$_SESSION['tmpval']['pos']
/ $_SESSION['tmpval']['max_rows']
) + 1;
$nbTotalPage = @ceil(
$this->__get('unlim_num_rows')
/ $_SESSION['tmpval']['max_rows']
);
if ($nbTotalPage > 1) {
$table_navigation_html .= '<td>';
$_url_params = array(
'db' => $this->__get('db'),
'table' => $this->__get('table'),
'sql_query' => $this->__get('sql_query'),
'goto' => $this->__get('goto'),
'is_browse_distinct' => $this->__get('is_browse_distinct'),
);
//<form> to keep the form alignment of button < and <<
// and also to know what to execute when the selector changes
$table_navigation_html .= '<form action="sql.php'
. PMA_URL_getCommon($_url_params)
. '" method="post">';
$table_navigation_html .= PMA_Util::pageselector(
'pos',
$_SESSION['tmpval']['max_rows'],
$pageNow, $nbTotalPage, 200, 5, 5, 20, 10
);
$table_navigation_html .= '</form>'
. '</td>';
}
return array($table_navigation_html, $nbTotalPage);
}
/**
* Get a navigation bar to browse among the results of a SQL query
*
@ -781,45 +831,12 @@ class PMA_DisplayResults
$nbTotalPage = 1;
//page redirection
// (unless we are showing all records)
if ($_SESSION['tmpval']['max_rows'] != self::ALL_ROWS) { //if1
$pageNow = @floor(
$_SESSION['tmpval']['pos']
/ $_SESSION['tmpval']['max_rows']
) + 1;
$nbTotalPage = @ceil(
$this->__get('unlim_num_rows')
/ $_SESSION['tmpval']['max_rows']
);
if ($nbTotalPage > 1) { //if2
$table_navigation_html .= '<td>';
$_url_params = array(
'db' => $this->__get('db'),
'table' => $this->__get('table'),
'sql_query' => $this->__get('sql_query'),
'goto' => $this->__get('goto'),
'is_browse_distinct' => $this->__get('is_browse_distinct'),
);
//<form> to keep the form alignment of button < and <<
// and also to know what to execute when the selector changes
$table_navigation_html .= '<form action="sql.php'
. PMA_URL_getCommon($_url_params)
. '" method="post">';
$table_navigation_html .= PMA_Util::pageselector(
'pos',
$_SESSION['tmpval']['max_rows'],
$pageNow, $nbTotalPage, 200, 5, 5, 20, 10
);
$table_navigation_html .= '</form>'
. '</td>';
} //_if2
} //_if1
if ($_SESSION['tmpval']['max_rows'] != self::ALL_ROWS) {
list(
$table_navigation_html,
$nbTotalPage
) = $this->_getHtmlPageSelector($table_navigation_html);
}
$showing_all = false;
if ($_SESSION['tmpval']['max_rows'] == self::ALL_ROWS) {
@ -1110,6 +1127,112 @@ class PMA_DisplayResults
} // end of the '_getAdditionalFieldsForTableNavigation()' function
/**
* Get the headers of the results table, for all of the columns
*
* @param array $displayParts which elements to display
* @param array $analyzed_sql the analyzed query
* @param string $sort_expression sort expression
* @param string $sort_expression_nodirection sort expression
* without direction
* @param string $sort_direction sort direction
* @param boolean $is_limited_display with limited operations
* or not
* @param string $unsorted_sql_query query without the sort part
*
* @return string html content
*
* @access private
*
* @see getTableHeaders()
*/
private function _getTableHeadersForColumns(
$displayParts, $analyzed_sql,
$sort_expression, $sort_expression_nodirection,
$sort_direction, $is_limited_display, $unsorted_sql_query
) {
$html = '';
// required to generate sort links that will remember whether the
// "Show all" button has been clicked
$sql_md5 = md5($this->__get('sql_query'));
$session_max_rows = $is_limited_display
? 0
: $_SESSION['tmpval']['query'][$sql_md5]['max_rows'];
// Following variable are needed for use in isset/empty or
// use with array indexes/safe use in the for loop
$highlight_columns = $this->__get('highlight_columns');
$fields_meta = $this->__get('fields_meta');
// Prepare Display column comments if enabled
// ($GLOBALS['cfg']['ShowBrowseComments']).
$comments_map = $this->_getTableCommentsArray($analyzed_sql);
list($col_order, $col_visib) = $this->_getColumnParams($analyzed_sql);
// optimize: avoid calling a method on each iteration
$number_of_columns = $this->__get('fields_cnt');
for ($j = 0; $j < $number_of_columns; $j++) {
// assign $i with the appropriate column order
$i = $col_order ? $col_order[$j] : $j;
// 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)])
)
? true
: false;
// Prepare comment-HTML-wrappers for each row, if defined/enabled.
$comments = $this->_getCommentForRow($comments_map, $fields_meta[$i]);
$display_params = $this->__get('display_params');
if (($displayParts['sort_lnk'] == '1') && ! $is_limited_display) {
list($order_link, $sorted_header_html)
= $this->_getOrderLinkAndSortedHeaderHtml(
$fields_meta[$i], $sort_expression,
$sort_expression_nodirection, $i, $unsorted_sql_query,
$session_max_rows, $comments,
$sort_direction, $col_visib,
$col_visib[$j]
);
$html .= $sorted_header_html;
$display_params['desc'][] = ' <th '
. 'class="draggable'
. ($condition_field ? ' condition' : '')
. '" data-column="' . htmlspecialchars($fields_meta[$i]->name)
. '">' . "\n" . $order_link . $comments . ' </th>' . "\n";
} else {
// Results can't be sorted
$html
.= $this->_getDraggableClassForNonSortableColumns(
$col_visib, $col_visib[$j], $condition_field,
$fields_meta[$i], $comments
);
$display_params['desc'][] = ' <th '
. 'class="draggable'
. ($condition_field ? ' condition"' : '')
. '" data-column="' . htmlspecialchars($fields_meta[$i]->name)
. '">' . ' '
. htmlspecialchars($fields_meta[$i]->name)
. $comments . ' </th>';
} // end else
$this->__set('display_params', $display_params);
} // end for
return $html;
}
/**
* Get the headers of the results table
*
@ -1135,20 +1258,11 @@ class PMA_DisplayResults
) {
$table_headers_html = '';
// Following variable are needed for use in isset/empty or
// Needed for use in isset/empty or
// use with array indexes/safe use in foreach
$fields_meta = $this->__get('fields_meta');
$highlight_columns = $this->__get('highlight_columns');
$printview = $this->__get('printview');
$display_params = $this->__get('display_params');
// required to generate sort links that will remember whether the
// "Show all" button has been clicked
$sql_md5 = md5($this->__get('sql_query'));
$session_max_rows = $is_limited_display
? 0
: $_SESSION['tmpval']['query'][$sql_md5]['max_rows'];
if ($analyzed_sql == '') {
$analyzed_sql = array();
}
@ -1163,6 +1277,8 @@ class PMA_DisplayResults
$table_headers_html .= $drop_down_html;
} else {
$unsorted_sql_query = '';
}
// Output data needed for grid editing
@ -1213,74 +1329,16 @@ class PMA_DisplayResults
// 2.0 If sorting links should be used, checks if the query is a "JOIN"
// statement (see 2.1.3)
// 2.0.1 Prepare Display column comments if enabled
// ($GLOBALS['cfg']['ShowBrowseComments']).
$comments_map = $this->_getTableCommentsArray($analyzed_sql);
// See if we have to highlight any header fields of a WHERE query.
// Uses SQL-Parser results.
$this->_setHighlightedColumnGlobalField($analyzed_sql);
list($col_order, $col_visib) = $this->_getColumnParams($analyzed_sql);
for ($j = 0; $j < $this->__get('fields_cnt'); $j++) {
// assign $i with appropriate column order
$i = $col_order ? $col_order[$j] : $j;
// 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)])
)
? true
: false;
// 2.0 Prepare comment-HTML-wrappers for each row, if defined/enabled.
$comments = $this->_getCommentForRow($comments_map, $fields_meta[$i]);
$display_params = $this->__get('display_params');
if (($displayParts['sort_lnk'] == '1') && ! $is_limited_display) {
list($order_link, $sorted_header_html)
= $this->_getOrderLinkAndSortedHeaderHtml(
$fields_meta[$i], $sort_expression,
$sort_expression_nodirection, $i, $unsorted_sql_query,
$session_max_rows, $comments,
$sort_direction, $col_visib,
$col_visib[$j]
);
$table_headers_html .= $sorted_header_html;
$display_params['desc'][] = ' <th '
. 'class="draggable'
. ($condition_field ? ' condition' : '')
. '" data-column="' . htmlspecialchars($fields_meta[$i]->name)
. '">' . "\n" . $order_link . $comments . ' </th>' . "\n";
} else {
// 2.2 Results can't be sorted
$table_headers_html
.= $this->_getDraggableClassForNonSortableColumns(
$col_visib, $col_visib[$j], $condition_field,
$fields_meta[$i], $comments
);
$display_params['desc'][] = ' <th '
. 'class="draggable'
. ($condition_field ? ' condition"' : '')
. '" data-column="' . htmlspecialchars($fields_meta[$i]->name)
. '">' . "\n" . ' '
. htmlspecialchars($fields_meta[$i]->name)
. "\n" . $comments . ' </th>';
} // end else (2.2)
$this->__set('display_params', $display_params);
} // end for
// Get the headers for all of the columns
$table_headers_html .= $this->_getTableHeadersForColumns(
$displayParts, $analyzed_sql, $sort_expression,
$sort_expression_nodirection, $sort_direction,
$is_limited_display, $unsorted_sql_query
);
// Display column at rightside - checkboxes or empty column
if (! $printview) {
@ -1877,13 +1935,13 @@ class PMA_DisplayResults
* Prepare parameters and html for sorted table header fields
*
* @param array $fields_meta set of field properties
* @param array $sort_expression sort expression
* @param array $sort_expression_nodirection sort expression without direction
* @param string $sort_expression sort expression
* @param string $sort_expression_nodirection sort expression without direction
* @param integer $column_index the index of the column
* @param string $unsorted_sql_query the unsorted sql query
* @param integer $session_max_rows maximum rows resulted by sql
* @param string $comments comment for row
* @param array $sort_direction sort direction
* @param string $sort_direction sort direction
* @param boolean $col_visib column is visible(false)
* array column isn't visible(string array)
* @param string $col_visib_j element of $col_visib array
@ -1974,13 +2032,13 @@ class PMA_DisplayResults
/**
* Prepare parameters and html for sorted table header fields
*
* @param array $sort_expression sort expression
* @param array $sort_expression_nodirection sort expression without direction
* @param string $sort_expression sort expression
* @param string $sort_expression_nodirection sort expression without direction
* @param string $sort_tbl The name of the table to which
* the current column belongs to
* @param string $name_to_use_in_sort The current column under
* consideration
* @param array $sort_direction sort direction
* @param string $sort_direction sort direction
* @param array $fields_meta set of field properties
* @param integer $column_index The index number to current column
*
@ -2769,7 +2827,7 @@ class PMA_DisplayResults
}
$table_body_html .= $this->_getRowValues(
$dt_result, $row, $row_no, $col_order, $map,
$grid_edit_class, $col_visib, $where_clause,
$grid_edit_class, $col_visib,
$url_sql_query, $analyzed_sql
);
@ -2879,7 +2937,6 @@ class PMA_DisplayResults
* @param string $grid_edit_class the class for all editable columns
* @param boolean $col_visib column is visible(false)
* array column isn't visible(string array)
* @param string $where_clause where clause
* @param string $url_sql_query the analyzed sql query
* @param array $analyzed_sql the analyzed query
*
@ -2891,7 +2948,7 @@ class PMA_DisplayResults
*/
private function _getRowValues(
&$dt_result, $row, $row_no, $col_order, $map,
$grid_edit_class, $col_visib, $where_clause,
$grid_edit_class, $col_visib,
$url_sql_query, $analyzed_sql
) {

View File

@ -197,7 +197,7 @@ function PMA_sendErrorReport($report)
)
);
$context = PMA_Util::handleContext($context);
$response = file_get_contents(
$response = @file_get_contents(
SUBMISSION_URL,
false,
stream_context_create($context)