diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index efc5c24ebb..e3c8c2590f 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -572,8 +572,8 @@ function PMA_getMoveFarwardButtonsForTableNavigation(
/**
- * Prepare feilds followed by Show button
- * for table navigation
+ * Prepare feilds followed by Show button for table navigation
+ * Start row, Number of rows, Headers every
*
* @param string $html_sql_query the sql encoded by html special characters
* @param string $goto the URL to go back in case of errors
@@ -2486,7 +2486,9 @@ function PMA_getVerticalTable()
}
$vertical_table_html .= $vertical_display['textbtn']
- . PMA_getCheckBoxesForMultipleRowOperations('_left')
+ . PMA_getCheckBoxesForMultipleRowOperations(
+ $vertical_display, '_left'
+ )
. '' . "\n";
} // end if
@@ -2497,7 +2499,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['edit']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('edit');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display ,'edit'
+ );
} // end if
// Prepares "copy" link at top if required
@@ -2507,7 +2511,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['copy']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('copy');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display ,'copy'
+ );
} // end if
// Prepares "delete" link at top if required
@@ -2517,7 +2523,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['delete']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('delete');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display, 'delete'
+ );
} // end if
if (PMA_isSelect()) {
@@ -2567,7 +2575,9 @@ function PMA_getVerticalTable()
) {
$vertical_table_html .= '
' . "\n" . $vertical_display['textbtn']
- . PMA_getCheckBoxesForMultipleRowOperations('_right')
+ . PMA_getCheckBoxesForMultipleRowOperations(
+ $vertical_display, '_right'
+ )
. ' ' . "\n";
} // end if
@@ -2578,7 +2588,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['edit']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('edit');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display, 'edit'
+ );
} // end if
// Prepares "copy" link at bottom if required
@@ -2588,7 +2600,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['copy']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('copy');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display, 'copy'
+ );
} // end if
// Prepares "delete" link at bottom if required
@@ -2598,7 +2612,9 @@ function PMA_getVerticalTable()
&& ((count($vertical_display['delete']) > 0)
|| !empty($vertical_display['textbtn']))
) {
- $vertical_table_html .= PMA_getOperationLinksForVerticleTable('delete');
+ $vertical_table_html .= PMA_getOperationLinksForVerticleTable(
+ $vertical_display, 'delete'
+ );
}
return $vertical_table_html;
@@ -2609,19 +2625,16 @@ function PMA_getVerticalTable()
/**
* Prepare edit, copy and delete links for verticle table
*
+ * @param array $vertical_display the information to display
* @param string $operation edit/copy/delete
*
* @return string $links_html html content
*
- * @global array $vertical_display the information to display
- *
* @see PMA_getVerticalTable()
*/
-function PMA_getOperationLinksForVerticleTable($operation)
+function PMA_getOperationLinksForVerticleTable($vertical_display, $operation)
{
- global $vertical_display;
-
$link_html = '' . "\n";
if (! is_array($vertical_display['row_delete'])) {
@@ -2651,17 +2664,14 @@ function PMA_getOperationLinksForVerticleTable($operation)
/**
* Get checkboxes for multiple row data operations
*
- * @param $dir _left / _right
+ * @param array $vertical_display the information to display
+ * @param string $dir _left / _right
*
- * @return $checkBoxes_html html content
- *
- * @global array $vertical_display the information to display
+ * @return $checkBoxes_html html content
*
* @see PMA_getVerticalTable()
*/
-function PMA_getCheckBoxesForMultipleRowOperations($dir) {
-
- global $vertical_display;
+function PMA_getCheckBoxesForMultipleRowOperations($vertical_display, $dir) {
$checkBoxes_html = '';
$cell_displayed = 0;
@@ -2960,223 +2970,34 @@ function PMA_getTable(&$dt_result, &$the_disp_mode, $analyzed_sql)
// 1.2 Defines offsets for the next and previous pages
if ($is_display['nav_bar'] == '1') {
-
- if ($_SESSION['tmp_user_values']['max_rows'] == 'all') {
- $pos_next = 0;
- $pos_prev = 0;
- } else {
-
- $pos_next = $_SESSION['tmp_user_values']['pos']
- + $_SESSION['tmp_user_values']['max_rows'];
-
- $pos_prev = $_SESSION['tmp_user_values']['pos']
- - $_SESSION['tmp_user_values']['max_rows'];
-
- if ($pos_prev < 0) {
- $pos_prev = 0;
- }
- }
+ list($pos_next, $pos_prev) = PMA_getOffsets();
} // end if
// 1.3 Find the sort expression
-
// we need $sort_expression and $sort_expression_nodirection
- // even if there are many table references
- if (! empty($analyzed_sql[0]['order_by_clause'])) {
-
- $sort_expression = trim(
- str_replace(' ', ' ', $analyzed_sql[0]['order_by_clause'])
- );
- /**
- * Get rid of ASC|DESC
- */
- preg_match('@(.*)([[:space:]]*(ASC|DESC))@si', $sort_expression, $matches);
-
- $sort_expression_nodirection = isset($matches[1])
- ? trim($matches[1])
- : $sort_expression;
-
- $sort_direction = isset($matches[2]) ? trim($matches[2]) : '';
- unset($matches);
-
- } else {
- $sort_expression = $sort_expression_nodirection = $sort_direction = '';
- }
-
+ // even if there are many table references
+ list($sort_expression, $sort_expression_nodirection, $sort_direction)
+ = PMA_getSortParams($analyzed_sql[0]['order_by_clause']);
+
+
// 1.4 Prepares display of first and last value of the sorted column
- if (! empty($sort_expression_nodirection)) {
-
- if (strpos($sort_expression_nodirection, '.') === false) {
- $sort_table = $table;
- $sort_column = $sort_expression_nodirection;
- } else {
- list($sort_table, $sort_column)
- = explode('.', $sort_expression_nodirection);
- }
-
- $sort_table = PMA_unQuote($sort_table);
- $sort_column = PMA_unQuote($sort_column);
-
- // find the sorted column index in row result
- // (this might be a multi-table query)
- $sorted_column_index = false;
-
- foreach ($fields_meta as $key => $meta) {
- if (($meta->table == $sort_table) && ($meta->name == $sort_column)) {
- $sorted_column_index = $key;
- break;
- }
- }
-
- if ($sorted_column_index !== false) {
-
- // fetch first row of the result set
- $row = PMA_DBI_fetch_row($dt_result);
-
- // initializing default arguments
- $default_function = 'PMA_mimeDefaultFunction';
- $transform_function = $default_function;
- $transform_options = array();
-
- // check for non printable sorted row data
- $meta = $fields_meta[$sorted_column_index];
-
- if (stristr($meta->type, 'BLOB') || ($meta->type == 'geometry')) {
-
- $column_for_first_row = PMA_handleNonPrintableContents(
- $meta->type, $row[$sorted_column_index], $transform_function,
- $transform_options, $default_function, $meta, null
- );
-
- } else {
- $column_for_first_row = $row[$sorted_column_index];
- }
-
- $column_for_first_row = strtoupper(
- substr($column_for_first_row, 0, $GLOBALS['cfg']['LimitChars'])
- );
-
- // fetch last row of the result set
- PMA_DBI_data_seek($dt_result, $num_rows - 1);
- $row = PMA_DBI_fetch_row($dt_result);
-
- // check for non printable sorted row data
- $meta = $fields_meta[$sorted_column_index];
- if (stristr($meta->type, 'BLOB') || ($meta->type == 'geometry')) {
-
- $column_for_last_row = PMA_handleNonPrintableContents(
- $meta->type, $row[$sorted_column_index], $transform_function,
- $transform_options, $default_function, $meta, null
- );
-
- } else {
- $column_for_last_row = $row[$sorted_column_index];
- }
-
- $column_for_last_row = strtoupper(
- substr($column_for_last_row, 0, $GLOBALS['cfg']['LimitChars'])
- );
-
- // reset to first row for the loop in PMA_getTableBody()
- PMA_DBI_data_seek($dt_result, 0);
-
- // we could also use here $sort_expression_nodirection
- $sorted_column_message = ' [' . htmlspecialchars($sort_column)
- . ': ' . htmlspecialchars($column_for_first_row) . ' - '
- . htmlspecialchars($column_for_last_row) . ' ]';
-
- unset($row, $column_for_first_row, $column_for_last_row, $meta,
- $default_function, $transform_function, $transform_options);
-
- }
- unset($sorted_column_index, $sort_table, $sort_column);
- }
+ $sorted_column_message = PMA_getSortedColumnMessage(
+ $dt_result, $fields_meta, $num_rows,
+ $sort_expression_nodirection, $table
+ );
+
// 2. ----- Prepare to display the top of the page -----
// 2.1 Prepares a messages with position informations
- if (($is_display['nav_bar'] == '1') && isset($pos_next)) {
-
- if (isset($unlim_num_rows) && $unlim_num_rows != $total) {
- $selectstring = ', ' . $unlim_num_rows . ' ' . __('in query');
- } else {
- $selectstring = '';
- }
+ if (($is_display['nav_bar'] == '1') && isset($pos_next)) {
- if (! empty($analyzed_sql[0]['limit_clause'])) {
-
- $limit_data = PMA_analyzeLimitClause($analyzed_sql[0]['limit_clause']);
- $first_shown_rec = $limit_data['start'];
-
- if ($limit_data['length'] < $total) {
- $last_shown_rec = $limit_data['start'] + $limit_data['length'] - 1;
- } else {
- $last_shown_rec = $limit_data['start'] + $total - 1;
- }
-
- } elseif (($_SESSION['tmp_user_values']['max_rows'] == 'all')
- || ($pos_next > $total)
- ) {
-
- $first_shown_rec = $_SESSION['tmp_user_values']['pos'];
- $last_shown_rec = $total - 1;
-
- } else {
-
- $first_shown_rec = $_SESSION['tmp_user_values']['pos'];
- $last_shown_rec = $pos_next - 1;
-
- }
-
- if (PMA_Table::isView($db, $table)
- && ($total == $GLOBALS['cfg']['MaxExactCountViews'])
- ) {
-
- $message = PMA_Message::notice(
- __('This view has at least this number of rows. Please refer to %sdocumentation%s.')
- );
-
- $message->addParam('[a@./Documentation.html#cfg_MaxExactCount@_blank]');
- $message->addParam('[/a]');
- $message_view_warning = PMA_showHint($message);
-
- } else {
- $message_view_warning = false;
- }
-
- $message = PMA_Message::success(__('Showing rows'));
- $message->addMessage($first_shown_rec);
-
- if ($message_view_warning) {
-
- $message->addMessage('...', ' - ');
- $message->addMessage($message_view_warning);
- $message->addMessage('(');
-
- } else {
-
- $message->addMessage($last_shown_rec, ' - ');
- $message->addMessage(' (');
- $message->addMessage($pre_count . PMA_formatNumber($total, 0));
- $message->addString(__('total'));
-
- if (!empty($after_count)) {
- $message->addMessage($after_count);
- }
-
- $message->addMessage($selectstring, '');
- $message->addMessage(', ', '');
-
- }
-
- $messagge_qt = PMA_Message::notice(__('Query took %01.4f sec') . ')');
- $messagge_qt->addParam($GLOBALS['querytime']);
-
- $message->addMessage($messagge_qt, '');
- if (isset($sorted_column_message)) {
- $message->addMessage($sorted_column_message, '');
- }
+ $message = PMA_setMessageInformation(
+ $db, $table, $sorted_column_message,
+ $analyzed_sql[0]['limit_clause'], $unlim_num_rows,
+ $total, $pos_next, $pre_count, $after_count
+ );
$table_html .= PMA_getMessage($message, $sql_query, 'success');
@@ -3292,99 +3113,11 @@ function PMA_getTable(&$dt_result, &$the_disp_mode, $analyzed_sql)
if ($is_display['del_lnk'] == 'dr' && $is_display['del_lnk'] != 'kp') {
- $delete_text = $is_display['del_lnk'] == 'dr' ? __('Delete') : __('Kill');
-
- $_url_params = array(
- 'db' => $db,
- 'table' => $table,
- 'sql_query' => $sql_query,
- 'goto' => $goto,
- );
- $uncheckall_url = 'sql.php' . PMA_generate_common_url($_url_params);
-
- $_url_params['checkall'] = '1';
- $checkall_url = 'sql.php' . PMA_generate_common_url($_url_params);
-
- if ($_SESSION['tmp_user_values']['disp_direction'] == 'vertical') {
-
- $checkall_params['onclick']
- = 'if (setCheckboxes(\'resultsForm\', true)) return false;';
- $uncheckall_params['onclick']
- = 'if (setCheckboxes(\'resultsForm\', false)) return false;';
-
- } else {
-
- $checkall_params['onclick']
- = 'if (markAllRows(\'resultsForm\')) return false;';
- $uncheckall_params['onclick']
- = 'if (unMarkAllRows(\'resultsForm\')) return false;';
-
- }
-
- $checkall_link = PMA_linkOrButton(
- $checkall_url, __('Check All'), $checkall_params, false
+ $table_html .= PMA_getMultiRowOperationLinks(
+ $dt_result, $fields_cnt, $fields_meta, $num_rows, $analyzed_sql,
+ $db, $table, $sql_query, $goto, $is_display['del_lnk']
);
-
- $uncheckall_link = PMA_linkOrButton(
- $uncheckall_url, __('Uncheck All'), $uncheckall_params, false
- );
-
- if ($_SESSION['tmp_user_values']['disp_direction'] != 'vertical') {
-
- $table_html .= ' ';
- }
-
- $table_html .= $checkall_link . "\n"
- . ' / ' . "\n"
- . $uncheckall_link . "\n"
- . '' . __('With selected:') . ' ' . "\n";
- $table_html .= PMA_getButtonOrImage(
- 'submit_mult', 'mult_submit', 'submit_mult_change',
- __('Change'), 'b_edit.png', 'edit'
- );
-
- $table_html .= PMA_getButtonOrImage(
- 'submit_mult', 'mult_submit', 'submit_mult_delete',
- $delete_text, 'b_drop.png', 'delete'
- );
-
- if (isset($analyzed_sql[0]) && $analyzed_sql[0]['querytype'] == 'SELECT') {
- $table_html .= PMA_getButtonOrImage(
- 'submit_mult', 'mult_submit', 'submit_mult_export',
- __('Export'), 'b_tblexport.png', 'export'
- );
- }
-
- $table_html .= "\n";
-
- $table_html .= ' ' . "\n";
-
- if (! empty($GLOBALS['url_query'])) {
- $table_html .= ' ' . "\n";
- }
-
- // fetch last row of the result set
- PMA_DBI_data_seek($dt_result, $num_rows - 1);
- $row = PMA_DBI_fetch_row($dt_result);
-
- // $clause_is_unique is needed by PMA_getTable() to generate the proper param
- // in the multi-edit and multi-delete form
- list($where_clause, $clause_is_unique, $condition_array)
- = PMA_getUniqueCondition($dt_result, $fields_cnt, $fields_meta, $row);
-
- // reset to first row for the loop in PMA_getTableBody()
- PMA_DBI_data_seek($dt_result, 0);
-
- $table_html .= ' ' . "\n";
-
- $table_html .= '' . "\n";
}
// 5. ----- Get the navigation bar at the bottom if required -----
@@ -3410,6 +3143,421 @@ function PMA_getTable(&$dt_result, &$the_disp_mode, $analyzed_sql)
} // end of the 'PMA_getTable()' function
+/**
+ * Get offsets for next page and previous page
+ *
+ * @return array array with two elements - $pos_next, $pos_prev
+ *
+ * @see PMA_getTable()
+ */
+function PMA_getOffsets()
+{
+
+ if ($_SESSION['tmp_user_values']['max_rows'] == 'all') {
+ $pos_next = 0;
+ $pos_prev = 0;
+ } else {
+
+ $pos_next = $_SESSION['tmp_user_values']['pos']
+ + $_SESSION['tmp_user_values']['max_rows'];
+
+ $pos_prev = $_SESSION['tmp_user_values']['pos']
+ - $_SESSION['tmp_user_values']['max_rows'];
+
+ if ($pos_prev < 0) {
+ $pos_prev = 0;
+ }
+ }
+
+ return array($pos_next, $pos_prev);
+
+}
+
+
+/**
+ * Get sort parameters
+ *
+ * @param string $order_by_clause
+ *
+ * @return array 3 element array: $sort_expression,
+ * $sort_expression_nodirection, $sort_direction
+ *
+ * @see PMA_getTable()
+ */
+function PMA_getSortParams($order_by_clause)
+{
+
+ if (! empty($order_by_clause)) {
+
+ $sort_expression = trim(
+ str_replace(' ', ' ', $order_by_clause)
+ );
+ /**
+ * Get rid of ASC|DESC
+ */
+ preg_match('@(.*)([[:space:]]*(ASC|DESC))@si', $sort_expression, $matches);
+
+ $sort_expression_nodirection = isset($matches[1])
+ ? trim($matches[1])
+ : $sort_expression;
+
+ $sort_direction = isset($matches[2]) ? trim($matches[2]) : '';
+ unset($matches);
+
+ } else {
+ $sort_expression = $sort_expression_nodirection = $sort_direction = '';
+ }
+
+ return array($sort_expression, $sort_expression_nodirection, $sort_direction);
+
+}
+
+
+/**
+ * Prepare sorted column message
+ *
+ * @param integer &$dt_result the link id associated to the query
+ * which results have to be displayed
+ * @param array $fields_meta the list of fields properties
+ * @param integer $num_rows the total number of rows returned
+ * by the SQL query
+ * @param string $sort_expression_nodirection sort expression without direction
+ * @param string $table the table name
+ *
+ * @return string html content
+ * null if not found sorted column
+ *
+ * @see PMA_getTable()
+ */
+function PMA_getSortedColumnMessage(&$dt_result, $fields_meta,
+ $num_rows, $sort_expression_nodirection, $table
+) {
+
+ if (! empty($sort_expression_nodirection)) {
+
+ if (strpos($sort_expression_nodirection, '.') === false) {
+ $sort_table = $table;
+ $sort_column = $sort_expression_nodirection;
+ } else {
+ list($sort_table, $sort_column)
+ = explode('.', $sort_expression_nodirection);
+ }
+
+ $sort_table = PMA_unQuote($sort_table);
+ $sort_column = PMA_unQuote($sort_column);
+
+ // find the sorted column index in row result
+ // (this might be a multi-table query)
+ $sorted_column_index = false;
+
+ foreach ($fields_meta as $key => $meta) {
+ if (($meta->table == $sort_table) && ($meta->name == $sort_column)) {
+ $sorted_column_index = $key;
+ break;
+ }
+ }
+
+ if ($sorted_column_index !== false) {
+
+ // fetch first row of the result set
+ $row = PMA_DBI_fetch_row($dt_result);
+
+ // initializing default arguments
+ $default_function = 'PMA_mimeDefaultFunction';
+ $transform_function = $default_function;
+ $transform_options = array();
+
+ // check for non printable sorted row data
+ $meta = $fields_meta[$sorted_column_index];
+
+ if (stristr($meta->type, 'BLOB') || ($meta->type == 'geometry')) {
+
+ $column_for_first_row = PMA_handleNonPrintableContents(
+ $meta->type, $row[$sorted_column_index], $transform_function,
+ $transform_options, $default_function, $meta, null
+ );
+
+ } else {
+ $column_for_first_row = $row[$sorted_column_index];
+ }
+
+ $column_for_first_row = strtoupper(
+ substr($column_for_first_row, 0, $GLOBALS['cfg']['LimitChars'])
+ );
+
+ // fetch last row of the result set
+ PMA_DBI_data_seek($dt_result, $num_rows - 1);
+ $row = PMA_DBI_fetch_row($dt_result);
+
+ // check for non printable sorted row data
+ $meta = $fields_meta[$sorted_column_index];
+ if (stristr($meta->type, 'BLOB') || ($meta->type == 'geometry')) {
+
+ $column_for_last_row = PMA_handleNonPrintableContents(
+ $meta->type, $row[$sorted_column_index], $transform_function,
+ $transform_options, $default_function, $meta, null
+ );
+
+ } else {
+ $column_for_last_row = $row[$sorted_column_index];
+ }
+
+ $column_for_last_row = strtoupper(
+ substr($column_for_last_row, 0, $GLOBALS['cfg']['LimitChars'])
+ );
+
+ // reset to first row for the loop in PMA_getTableBody()
+ PMA_DBI_data_seek($dt_result, 0);
+
+ // we could also use here $sort_expression_nodirection
+ return ' [' . htmlspecialchars($sort_column)
+ . ': ' . htmlspecialchars($column_for_first_row) . ' - '
+ . htmlspecialchars($column_for_last_row) . ' ]';
+ }
+ }
+
+ return null;
+
+}
+
+
+/**
+ * Set the content need to be show in message
+ *
+ * @param string $db the database name
+ * @param string $table the table name
+ * @param string $sorted_column_message the message for sorted column
+ * @param string $limit_clause the limit clause of analyzed query
+ * @param integer $unlim_num_rows the total number of rows returned by
+ * the SQL query without any appended
+ * "LIMIT" clause programmatically
+ * @param integer $total the total number of rows returned by
+ * the SQL query without any
+ * programmatically appended LIMIT clause
+ * @param integer $pos_next the offset for next page
+ * @param string $pre_count the string renders before row count
+ * @param string $after_count the string renders after row count
+ *
+ * @return PMA_Message $message an object of PMA_Message
+ *
+ * @see PMA_getTable()
+ */
+function PMA_setMessageInformation(
+ $db, $table, $sorted_column_message, $limit_clause, $unlim_num_rows,
+ $total, $pos_next, $pre_count, $after_count
+) {
+
+ if (isset($unlim_num_rows) && ($unlim_num_rows != $total)) {
+ $selectstring = ', ' . $unlim_num_rows . ' ' . __('in query');
+ } else {
+ $selectstring = '';
+ }
+
+ if (! empty($limit_clause)) {
+
+ $limit_data = PMA_analyzeLimitClause($limit_clause);
+ $first_shown_rec = $limit_data['start'];
+
+ if ($limit_data['length'] < $total) {
+ $last_shown_rec = $limit_data['start'] + $limit_data['length'] - 1;
+ } else {
+ $last_shown_rec = $limit_data['start'] + $total - 1;
+ }
+
+ } elseif (($_SESSION['tmp_user_values']['max_rows'] == 'all')
+ || ($pos_next > $total)
+ ) {
+
+ $first_shown_rec = $_SESSION['tmp_user_values']['pos'];
+ $last_shown_rec = $total - 1;
+
+ } else {
+
+ $first_shown_rec = $_SESSION['tmp_user_values']['pos'];
+ $last_shown_rec = $pos_next - 1;
+
+ }
+
+ if (PMA_Table::isView($db, $table)
+ && ($total == $GLOBALS['cfg']['MaxExactCountViews'])
+ ) {
+
+ $message = PMA_Message::notice(
+ __('This view has at least this number of rows. Please refer to %sdocumentation%s.')
+ );
+
+ $message->addParam('[a@./Documentation.html#cfg_MaxExactCount@_blank]');
+ $message->addParam('[/a]');
+ $message_view_warning = PMA_showHint($message);
+
+ } else {
+ $message_view_warning = false;
+ }
+
+ $message = PMA_Message::success(__('Showing rows'));
+ $message->addMessage($first_shown_rec);
+
+ if ($message_view_warning) {
+
+ $message->addMessage('...', ' - ');
+ $message->addMessage($message_view_warning);
+ $message->addMessage('(');
+
+ } else {
+
+ $message->addMessage($last_shown_rec, ' - ');
+ $message->addMessage(' (');
+ $message->addMessage($pre_count . PMA_formatNumber($total, 0));
+ $message->addString(__('total'));
+
+ if (!empty($after_count)) {
+ $message->addMessage($after_count);
+ }
+
+ $message->addMessage($selectstring, '');
+ $message->addMessage(', ', '');
+
+ }
+
+ $messagge_qt = PMA_Message::notice(__('Query took %01.4f sec') . ')');
+ $messagge_qt->addParam($GLOBALS['querytime']);
+
+ $message->addMessage($messagge_qt, '');
+ if (! is_null($sorted_column_message)) {
+ $message->addMessage($sorted_column_message, '');
+ }
+
+ return $message;
+
+}
+
+
+/**
+ * Prepare multi field edit/delete links
+ *
+ * @param integer &$dt_result the link id associated to the query
+ * which results have to be displayed
+ * @param integer $fields_cnt the total number of fields returned by
+ * the SQL query
+ * @param array $fields_meta the list of fields properties
+ * @param integer $num_rows the total number of rows returned
+ * by the SQL query
+ * @param array $analyzed_sql the analyzed query
+ * @param string $db the database name
+ * @param string $table the table name
+ * @param string $sql_query the current SQL query
+ * @param string $goto the URL to go back in case of errors
+ * @param string $del_link the display element - 'del_link'
+ *
+ * @return string $links_html html content
+ *
+ * @see PMA_getTable()
+ */
+function PMA_getMultiRowOperationLinks(
+ &$dt_result, $fields_cnt, $fields_meta, $num_rows, $analyzed_sql,
+ $db, $table, $sql_query, $goto, $del_link
+) {
+
+ $links_html = '';
+ $delete_text = ($del_link == 'dr') ? __('Delete') : __('Kill');
+
+ $_url_params = array(
+ 'db' => $db,
+ 'table' => $table,
+ 'sql_query' => $sql_query,
+ 'goto' => $goto,
+ );
+ $uncheckall_url = 'sql.php' . PMA_generate_common_url($_url_params);
+
+ $_url_params['checkall'] = '1';
+ $checkall_url = 'sql.php' . PMA_generate_common_url($_url_params);
+
+ if ($_SESSION['tmp_user_values']['disp_direction'] == 'vertical') {
+
+ $checkall_params['onclick']
+ = 'if (setCheckboxes(\'resultsForm\', true)) return false;';
+ $uncheckall_params['onclick']
+ = 'if (setCheckboxes(\'resultsForm\', false)) return false;';
+
+ } else {
+
+ $checkall_params['onclick']
+ = 'if (markAllRows(\'resultsForm\')) return false;';
+ $uncheckall_params['onclick']
+ = 'if (unMarkAllRows(\'resultsForm\')) return false;';
+
+ }
+
+ $checkall_link = PMA_linkOrButton(
+ $checkall_url, __('Check All'), $checkall_params, false
+ );
+
+ $uncheckall_link = PMA_linkOrButton(
+ $uncheckall_url, __('Uncheck All'), $uncheckall_params, false
+ );
+
+ if ($_SESSION['tmp_user_values']['disp_direction'] != 'vertical') {
+
+ $links_html .= ' ';
+ }
+
+ $links_html .= $checkall_link . "\n"
+ . ' / ' . "\n"
+ . $uncheckall_link . "\n"
+ . '' . __('With selected:') . ' ' . "\n";
+
+ $links_html .= PMA_getButtonOrImage(
+ 'submit_mult', 'mult_submit', 'submit_mult_change',
+ __('Change'), 'b_edit.png', 'edit'
+ );
+
+ $links_html .= PMA_getButtonOrImage(
+ 'submit_mult', 'mult_submit', 'submit_mult_delete',
+ $delete_text, 'b_drop.png', 'delete'
+ );
+
+ if (isset($analyzed_sql[0]) && $analyzed_sql[0]['querytype'] == 'SELECT') {
+ $links_html .= PMA_getButtonOrImage(
+ 'submit_mult', 'mult_submit', 'submit_mult_export',
+ __('Export'), 'b_tblexport.png', 'export'
+ );
+ }
+
+ $links_html .= "\n";
+
+ $links_html .= ' ' . "\n";
+
+ if (! empty($GLOBALS['url_query'])) {
+ $links_html .= ' ' . "\n";
+ }
+
+ // fetch last row of the result set
+ PMA_DBI_data_seek($dt_result, $num_rows - 1);
+ $row = PMA_DBI_fetch_row($dt_result);
+
+ // $clause_is_unique is needed by PMA_getTable() to generate the proper param
+ // in the multi-edit and multi-delete form
+ list($where_clause, $clause_is_unique, $condition_array)
+ = PMA_getUniqueCondition($dt_result, $fields_cnt, $fields_meta, $row);
+
+ // reset to first row for the loop in PMA_getTableBody()
+ PMA_DBI_data_seek($dt_result, 0);
+
+ $links_html .= ' ' . "\n";
+
+ $links_html .= '' . "\n";
+
+ return $links_html;
+
+}
+
+
/**
* replace some html-unfriendly stuff
*/