diff --git a/libraries/common.inc.php b/libraries/common.inc.php
index 7855417285..522790e774 100644
--- a/libraries/common.inc.php
+++ b/libraries/common.inc.php
@@ -1103,18 +1103,6 @@ if (isset($_REQUEST['ajax_request']) && $_REQUEST['ajax_request'] == true) {
$GLOBALS['is_ajax_request'] = false;
}
-/**
- * @global boolean $GLOBALS['grid_edit']
- *
- * Set to true if this is a request made during an grid edit process. This
- * request is made to retrieve the non-truncated/transformed values.
- */
-if (isset($_REQUEST['grid_edit']) && $_REQUEST['grid_edit'] == true) {
- $GLOBALS['grid_edit'] = true;
-} else {
- $GLOBALS['grid_edit'] = false;
-}
-
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
PMA_fatalError(__("GLOBALS overwrite attempt"));
}
diff --git a/libraries/parse_analyze.inc.php b/libraries/parse_analyze.inc.php
index c8dab441a3..57cd7f7c02 100644
--- a/libraries/parse_analyze.inc.php
+++ b/libraries/parse_analyze.inc.php
@@ -74,6 +74,18 @@ $is_count = isset($analyzed_sql[0]['queryflags']['is_count']);
// check for a real SELECT ... FROM
$is_select = isset($analyzed_sql[0]['queryflags']['select_from']);
+// check for CALL
+// Since multiple query execution is anyway handled,
+// ignore the WHERE clause of the first sql statement
+// which might contain a phrase like 'call '
+if (isset($analyzed_sql[0]['queryflags']['is_procedure'])
+ && empty($analyzed_sql[0]['where_clause'])
+) {
+ $is_procedure = true;
+} else {
+ $is_procedure = false;
+}
+
// aggregates all the results into one array
$analyzed_sql_results = array(
"parsed_sql" => $parsed_sql,
@@ -92,7 +104,8 @@ $analyzed_sql_results = array(
"is_group" => $is_group,
"is_func" => $is_func,
"is_count" => $is_count,
- "is_select" => $is_select
+ "is_select" => $is_select,
+ "is_procedure" => $is_procedure
);
diff --git a/libraries/sql.lib.php b/libraries/sql.lib.php
index 031b5d4edb..e32fb9c4e5 100644
--- a/libraries/sql.lib.php
+++ b/libraries/sql.lib.php
@@ -78,7 +78,7 @@ function PMA_getTableNameBySQL($sql, $tables)
*
* @return string $table_html html content
*/
-function getTableHtmlForMultipleQueries(
+function PMA_getTableHtmlForMultipleQueries(
$displayResultsObject, $db, $sql_data, $goto, $pmaThemeImage,
$text_dir, $printview, $url_query, $disp_mode, $sql_limit_to_append,
$editable
@@ -381,7 +381,8 @@ function PMA_getHtmlForRelationalColumnDropdown($db, $table, $column, $curr_valu
}
/**
- * Get the HTML for the header of the page in print view
+ * Get the HTML for the header of the page in print view if print view is selected.
+ * Otherwise returns null.
*
* @param string $db current database
* @param string $sql_query current sql query
@@ -391,80 +392,160 @@ function PMA_getHtmlForRelationalColumnDropdown($db, $table, $column, $curr_valu
*/
function PMA_getHtmlForPrintViewHeader($db, $sql_query, $num_rows)
{
- $hostname = '';
- if ( $GLOBALS['cfg']['Server']['verbose']) {
- $hostname = $GLOBALS['cfg']['Server']['verbose'];
- } else {
- $hostname = $GLOBALS['cfg']['Server']['host'];
- if (! empty( $GLOBALS['cfg']['Server']['port'])) {
- $hostname .= $GLOBALS['cfg']['Server']['port'];
+ $response = PMA_Response::getInstance();
+ $header = $response->getHeader();
+ if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
+ PMA_Util::checkParameters(array('db', 'full_sql_query'));
+ $header->enablePrintView();
+ $hostname = '';
+ if ( $GLOBALS['cfg']['Server']['verbose']) {
+ $hostname = $GLOBALS['cfg']['Server']['verbose'];
+ } else {
+ $hostname = $GLOBALS['cfg']['Server']['host'];
+ if (! empty( $GLOBALS['cfg']['Server']['port'])) {
+ $hostname .= $GLOBALS['cfg']['Server']['port'];
+ }
}
+
+ $versions = "phpMyAdmin " . PMA_VERSION;
+ $versions .= " / ";
+ $versions .= "MySQL " . PMA_MYSQL_STR_VERSION;
+
+ $print_view_header = '';
+ $print_view_header .= "
" . __('SQL result') . "
";
+ $print_view_header .= "";
+ $print_view_header .= "" . __('Host:')
+ . " $hostname
";
+ $print_view_header .= "" . __('Database:') . " "
+ . htmlspecialchars($db) . "
";
+ $print_view_header .= "" . __('Generation Time:') . " "
+ . PMA_Util::localisedDate() . "
";
+ $print_view_header .= "" . __('Generated by:')
+ . " $versions
";
+ $print_view_header .= "" . __('SQL query:') . " "
+ . htmlspecialchars($sql_query) . ";";
+ if (isset($num_rows)) {
+ $print_view_header .= "
";
+ $print_view_header .= "" . __('Rows:') . " $num_rows";
+ }
+ $print_view_header .= "
";
+ } else {
+ $print_view_header = null;
}
-
- $versions = "phpMyAdmin " . PMA_VERSION;
- $versions .= " / ";
- $versions .= "MySQL " . PMA_MYSQL_STR_VERSION;
-
- $header = '';
- $header .= "" . __('SQL result') . "
";
- $header .= "";
- $header .= "" . __('Host:') . " $hostname
";
- $header .= "" . __('Database:') . " "
- . htmlspecialchars($db) . "
";
- $header .= "" . __('Generation Time:') . " "
- . PMA_Util::localisedDate() . "
";
- $header .= "" . __('Generated by:') . " $versions
";
- $header .= "" . __('SQL query:') . " "
- . htmlspecialchars($sql_query) . ";";
- if (isset($num_rows)) {
- $header .= "
";
- $header .= "" . __('Rows:') . " $num_rows";
- }
- $header .= "
";
-
- return $header;
+
+ return $print_view_header;
}
/**
- * Get the HTML for the profiling table and accompanying chart
+ * Get the HTML for the profiling table and accompanying chart if profiling is set.
+ * Otherwise returns null
*
- * @param string $url_query the url query
- * @param string $pma_token the pma token
+ * @param string $url_query url query
+ * @param string $db current database
* @param array $profiling_results array containing the profiling info
*
* @return string $profiling_table html for the profiling table and chart
*/
-function PMA_getHtmlForProfilingChart($url_query, $pma_token, $profiling_results)
+function PMA_getHtmlForProfilingChart($url_query, $db, $profiling_results)
{
+ if (isset($profiling_results)) {
+ $pma_token = $_SESSION[' PMA_token '];
+ $url_query = (isset($url_query) ? $url_query : PMA_generate_common_url($db));
+
+ $profiling_table = '';
+ $profiling_table .= '' . "\n";
+ } else {
+ $profiling_table = null;
+ }
+ return $profiling_table;
+}
+
+/**
+ * Function to get HTML for detailed profiling results table, profiling stats, and
+ * $chart_json for displaying the chart.
+ *
+ * @param array $profiling_results profiling results
+ * @return mixed
+ */
+function PMA_analyzeAndGetTableHtmlForProfilingResults(
+ $profiling_results
+) {
$profiling_stats = array(
'total_time' => 0,
'states' => array(),
);
- $profiling_table = '';
-
- $profiling_table .= '' . "\n";
-
- return $profiling_table;
+ return $table;
}
/**
@@ -653,56 +707,79 @@ function PMA_getHtmlForOptionsList($values, $selected_values)
}
/**
- * Get HTML for the Bookmark form
- *
- * @param string $db the current database
- * @param string $goto goto page url
- * @param string $bkm_sql_query the query to be bookmarked
- * @param string $bkm_user the user creating the bookmark
- *
- * @return void
+ * Function to get html for bookmark support if bookmarks are enabled. Else will
+ * return null
+ *
+ * @param string $disp_mode display mode
+ * @param bool $cfgBookmark confguration setting for bookmarking
+ * @param string $sql_query sql query
+ * @param string $db current database
+ * @param string $table current table
+ * @param string $complete_query complete query
+ * @param string $bkm_user bookmarking user
+ *
+ * @return string $html
*/
-function PMA_getHtmlForBookmark($db, $goto, $bkm_sql_query, $bkm_user)
-{
- $html = '';
-
+function PMA_getHtmlForBookmark($disp_mode, $cfgBookmark, $sql_query, $db, $table,
+ $complete_query, $bkm_user
+) {
+ if ($disp_mode[7] == '1'
+ && (! empty($cfgBookmark) && empty($_GET['id_bookmark']))
+ && ! empty($sql_query)
+ ) {
+ $html = "\n";
+ $goto = 'sql.php?'
+ . PMA_generate_common_url($db, $table)
+ . '&sql_query=' . urlencode($sql_query)
+ . '&id_bookmark=1';
+ $bkm_sql_query = urlencode(
+ isset($complete_query) ? $complete_query : $sql_query
+ );
+ $html = '';
+
+ } else {
+ $html = null;
+ }
+
return $html;
}
@@ -1245,9 +1322,9 @@ function PMA_hasCurrentDbChanged($db)
* @param String $db current database
* @param String $table current table
* @param String $dropped_column dropped column if any
- * @param bool $purge
- * @param array $extra_data
- *
+ * @param bool $purge whether purge set or not
+ * @param array $extra_data extra data
+ *
* @return array $extra_data
*/
function PMA_cleanupRelations($db, $table, $dropped_column, $purge, $extra_data)
@@ -1386,16 +1463,17 @@ function PMA_countQueryResults(
/**
* Function to handle all aspects relating to executing the query
- *
- * @param array $analyzed_sql_results
- * @param String $full_sql_query full sql query
- * @param boolean $is_gotofile whether to go to a file
- * @param String $db current database
- * @param String $table current table
- * @param boolean $find_real_end whether to find the real end
- * @param String $import_text sql command
- * @param String $bkm_user bookmarking user
- *
+ *
+ * @param array $analyzed_sql_results analyzed sql results
+ * @param String $full_sql_query full sql query
+ * @param boolean $is_gotofile whether to go to a file
+ * @param String $db current database
+ * @param String $table current table
+ * @param boolean $find_real_end whether to find the real end
+ * @param String $import_text sql command
+ * @param String $bkm_user bookmarking user
+ * @param array $extra_data extra data
+ *
* @return mixed
*/
function PMA_executeTheQuery($analyzed_sql_results, $full_sql_query, $is_gotofile,
@@ -1422,8 +1500,8 @@ function PMA_executeTheQuery($analyzed_sql_results, $full_sql_query, $is_gotofil
// If there are no errors and bookmarklabel was given,
// store the query as a bookmark
if (! empty($_POST['bkm_label']) && ! empty($import_text)) {
- PMA_storeTheQueryAsBookmark($db, $bkm_user,
- $import_text, $_POST['bkm_label'],
+ PMA_storeTheQueryAsBookmark(
+ $db, $bkm_user, $import_text, $_POST['bkm_label'],
isset($_POST['bkm_replace']) ? $_POST['bkm_replace'] : null
);
} // end store bookmarks
@@ -1445,8 +1523,8 @@ function PMA_executeTheQuery($analyzed_sql_results, $full_sql_query, $is_gotofil
$analyzed_sql_results, isset($find_real_end) ? $find_real_end : null
);
- $unlim_num_rows = PMA_countQueryResults($num_rows,
- $analyzed_sql_results['is_select'], $justBrowsing, $db,
+ $unlim_num_rows = PMA_countQueryResults(
+ $num_rows, $analyzed_sql_results['is_select'], $justBrowsing, $db,
$table, $analyzed_sql_results['parsed_sql'], $analyzed_sql_results
);
@@ -1500,8 +1578,8 @@ function PMA_deleteTransformationInfo($db, $table, $analyzed_sql)
*
* @return string $message
*/
-function PMA_getMessageForNoRowsReturned(
- $message_to_show, $analyzed_sql_results, $num_rows
+function PMA_getMessageForNoRowsReturned($message_to_show, $analyzed_sql_results,
+ $num_rows
) {
if ($analyzed_sql_results['is_delete']) {
$message = PMA_Message::getMessageForDeletedRows($num_rows);
@@ -1570,8 +1648,8 @@ function PMA_getMessageForNoRowsReturned(
*
* @return void
*/
-function PMA_sendAjaxResponseForNoResultsReturned(
- $message, $analyzed_sql, $displayResultsObject, $showSql, $extra_data
+function PMA_sendAjaxResponseForNoResultsReturned($message, $analyzed_sql,
+ $displayResultsObject, $showSql, $extra_data
) {
/**
* @todo find a better way to make getMessage() in Header.class.php
@@ -1643,12 +1721,247 @@ function PMA_sendResponseForNoResultsReturned($analyzed_sql_results, $db, $table
$num_rows
);
if ($GLOBALS['is_ajax_request'] == true) {
- PMA_sendAjaxResponseForNoResultsReturned($message,
- $analyzed_sql_results['analyzed_sql'],
+ PMA_sendAjaxResponseForNoResultsReturned(
+ $message, $analyzed_sql_results['analyzed_sql'],
$displayResultsObject, $cfg['ShowSQL'],
isset($extra_data) ? $extra_data : null
);
}
exit();
}
+
+/**
+ * Function to send response for ajax grid edit
+ *
+ * @param object $result result of the executed query
+ *
+ * @return void
+ */
+function PMA_sendResponseForGridEdit($result)
+{
+ $row = $GLOBALS['dbi']->fetchRow($result);
+ $response = PMA_Response::getInstance();
+ $response->addJSON('value', $row[0]);
+ exit;
+}
+
+/**
+ * Function to get html for the sql query results div
+ *
+ * @param string $previous_update_query_html html for the previously executed query
+ * @param string $profiling_chart_html html for profiling
+ * @param object $missing_unique_column_msg message for the missing unique column
+ * @param object $bookmark_created_msg message for bookmark creation
+ * @param string $table_html html for the table for displaying sql
+ * results
+ * @param string $indexes_problems_html html for displaying errors in indexes
+ * @param string $bookmark_support_html html for displaying bookmark form
+ * @param string $print_button_html html for the print button in printview
+ *
+ * @return string $html_output
+ */
+function PMA_getHtmlForSqlQueryResults($previous_update_query_html,
+ $profiling_chart_html, $missing_unique_column_msg, $bookmark_created_msg,
+ $table_html, $indexes_problems_html, $bookmark_support_html, $print_button_html
+) {
+ //begin the sqlqueryresults div here. container div
+ $html_output = '';
+ $html_output .= isset($previous_update_query_html)
+ ? $previous_update_query_html : '';
+ $html_output .= isset($profiling_chart_html) ? $profiling_chart_html : '';
+ $html_output .= isset($missing_unique_column_msg)
+ ? $missing_unique_column_msg->getDisplay() : '';
+ $html_output .= isset($bookmark_created_msg)
+ ? $bookmark_created_msg->getDisplay() : '';
+ $html_output .= $table_html;
+ $html_output .= isset($indexes_problems_html) ? $indexes_problems_html : '';
+ $html_output .= isset($bookmark_support_html) ? $bookmark_support_html : '';
+ $html_output .= isset($print_button_html) ? $print_button_html : '';
+ $html_output .= '
'; // end sqlqueryresults div
+
+ return $html_output;
+}
+
+/**
+ * Returns a message for successful creation of a bookmark or null if a bookmark
+ * was not created
+ *
+ * @return object $bookmark_created_msg
+ */
+function PMA_getBookmarkCreatedMessage()
+{
+ if (isset($_GET['label'])) {
+ $bookmark_created_msg = PMA_message::success(__('Bookmark %s created'));
+ $bookmark_created_msg->addParam($_GET['label']);
+ } else {
+ $bookmark_created_msg = null;
+ }
+
+ return $bookmark_created_msg;
+}
+
+/**
+ * Function to get html for the sql query results table
+ *
+ * @param array $sql_data sql data
+ * @param object $displayResultsObject instance of DisplayResult.class
+ * @param string $db current database
+ * @param string $goto goto page url
+ * @param string $pmaThemeImage theme image uri
+ * @param string $text_dir text directory
+ * @param string $url_query url query
+ * @param string $disp_mode display mode
+ * @param string $sql_limit_to_append sql limit to append
+ * @param bool $editable whether the result table is editable or not
+ * @param int $unlim_num_rows unlimited number of rows
+ * @param int $num_rows number of rows
+ * @param bool $showtable whether to show table or not
+ * @param object $result result of the executed query
+ * @param int $querytime query execution time
+ * @param array $analyzed_sql_results analyzed sql results
+ * @param bool $is_procedure whether it is a procedure call or not
+ *
+ * @return type
+ */
+function PMA_getHtmlForSqlQueryResultsTable($sql_data, $displayResultsObject, $db,
+ $goto, $pmaThemeImage, $text_dir, $url_query, $disp_mode, $sql_limit_to_append,
+ $editable, $unlim_num_rows, $num_rows, $showtable, $result, $querytime,
+ $analyzed_sql_results, $is_procedure
+) {
+ $printview = isset($_REQUEST['printview']) ? $_REQUEST['printview'] : null;
+ if (! empty($sql_data) && ($sql_data['valid_queries'] > 1) || $is_procedure) {
+ $_SESSION['is_multi_query'] = true;
+ $table_html = PMA_getTableHtmlForMultipleQueries(
+ $displayResultsObject, $db, $sql_data, $goto,
+ $pmaThemeImage, $text_dir, $printview, $url_query,
+ $disp_mode, $sql_limit_to_append, $editable
+ );
+ } else {
+ if (isset($result) && $result) {
+ $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result);
+ $fields_cnt = count($fields_meta);
+ }
+ $_SESSION['is_multi_query'] = false;
+ $displayResultsObject->setProperties(
+ $unlim_num_rows, $fields_meta, $analyzed_sql_results['is_count'],
+ $analyzed_sql_results['is_export'], $analyzed_sql_results['is_func'],
+ $analyzed_sql_results['is_analyse'], $num_rows,
+ $fields_cnt, $querytime, $pmaThemeImage, $text_dir,
+ $analyzed_sql_results['is_maint'], $analyzed_sql_results['is_explain'],
+ $analyzed_sql_results['is_show'], $showtable, $printview, $url_query,
+ $editable
+ );
+
+ $table_html = $displayResultsObject->getTable(
+ $result, $disp_mode, $analyzed_sql_results['analyzed_sql']
+ );
+ $GLOBALS['dbi']->freeResult($result);
+ }
+
+ return $table_html;
+}
+
+/**
+ * Function to get html for the previous query if there is such. If not will return
+ * null
+ *
+ * @param string $disp_query display query
+ * @param bool $showSql whether to show sql
+ * @param array $sql_data sql data
+ * @param string $disp_message display message
+ *
+ * @return string $previous_update_query_html
+ */
+function PMA_getHtmlForPreviousUpdateQuery($disp_query, $showSql, $sql_data,
+ $disp_message
+) {
+ // previous update query (from tbl_replace)
+ if (isset($disp_query) && ($showSql == true) && empty($sql_data)) {
+ $previous_update_query_html = PMA_Util::getMessage(
+ $disp_message, $disp_query, 'success'
+ );
+ } else {
+ $previous_update_query_html = null;
+ }
+
+ return $previous_update_query_html;
+}
+
+/**
+ * To get the message if a column index is missing. If not will return null
+ *
+ * @param string $table current table
+ * @param string $db current database
+ * @param boolean $editable whether the results table can be editable or not
+ * @param string $disp_mode display mode
+ *
+ * @return object $message
+ */
+function PMA_getMessageIfMissingColumnIndex($table, $db, $editable, $disp_mode)
+{
+ if (!empty($table) && ($GLOBALS['dbi']->isSystemSchema($db) || !$editable)) {
+ $missing_unique_column_msg = PMA_message::notice(
+ __(
+ 'Table %s does not contain a unique column.'
+ . ' Grid edit, checkbox, Edit, Copy and Delete features'
+ . ' are not available.'
+ )
+ );
+ $missing_unique_column_msg->addParam($table);
+ } else {
+ $missing_unique_column_msg = null;
+ }
+
+ return $missing_unique_column_msg;
+}
+
+/**
+ * Function to get html to display problems in indexes
+ *
+ * @param string $query_type query type
+ * @param boolean $selected selected
+ *
+ * @return void
+ */
+function PMA_getHtmlForIndexesProblems($query_type, $selected)
+{
+ // BEGIN INDEX CHECK See if indexes should be checked.
+ if (isset($query_type)
+ && $query_type == 'check_tbl'
+ && isset($selected)
+ && is_array($selected)
+ ) {
+ $indexes_problems_html = '';
+ foreach ($selected as $idx => $tbl_name) {
+ $check = PMA_Index::findDuplicates($tbl_name, $db);
+ if (! empty($check)) {
+ $indexes_problems_html .= sprintf(
+ __('Problems with indexes of table `%s`'), $tbl_name
+ );
+ $indexes_problems_html .= $check;
+ }
+ }
+ } else {
+ $indexes_problems_html = null;
+ }
+
+ return $indexes_problems_html;
+}
+
+/**
+ * Function to get the html for the print button in printview
+ *
+ * @return string $print_button_html html for the print button
+ */
+function PMA_getHtmlForPrintButton()
+{
+ // Do print the page if required
+ if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
+ $print_button_html = PMA_Util::getButton();
+ } else {
+ $print_button_html = null;
+ }
+
+ return $print_button_html;
+}
?>
diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php
index c4cba5b16e..59275313cf 100644
--- a/libraries/sqlparser.lib.php
+++ b/libraries/sqlparser.lib.php
@@ -993,6 +993,7 @@ function PMA_SQP_analyze($arr)
* ['queryflags']['is_func'] = 1; for the presence of SUM|AVG|STD|STDDEV
* |MIN|MAX|BIT_OR|BIT_AND
* ['queryflags']['is_count'] = 1; for the presence of SELECT COUNT
+ * ['queryflags']['is_procedure'] = 1; for the presence of CALL
*
* query clauses
* -------------
@@ -1721,6 +1722,11 @@ function PMA_SQP_analyze($arr)
if ($upper_data == 'OFFSET') {
$subresult['queryflags']['offset'] = 1;
}
+
+ // for the presence of CALL
+ if ($upper_data == 'CALL') {
+ $subresult['queryflags']['is_procedure'] = 1;
+ }
// if this is a real SELECT...FROM
if ($upper_data == 'FROM'
diff --git a/sql.php b/sql.php
index 53ce7ff605..f97c16f294 100644
--- a/sql.php
+++ b/sql.php
@@ -130,8 +130,8 @@ require_once 'libraries/parse_analyze.inc.php';
* into account this case.
*/
if (PMA_hasNoRightsToDropDatabase(
- $analyzed_sql_results, $cfg['AllowUserDropDatabase'], $is_superuser)
-) {
+ $analyzed_sql_results, $cfg['AllowUserDropDatabase'], $is_superuser
+)) {
PMA_Util::mysqlDie(
__('"DROP DATABASE" statements are disabled.'),
'',
@@ -186,7 +186,6 @@ if (PMA_isRememberSortingOrder($analyzed_sql_results)) {
PMA_handleSortOrder($db, $table, $analyzed_sql, $full_sql_query);
}
-$sql_limit_to_append = '';
// Do append a "LIMIT" clause?
if (PMA_isAppendLimitClause($analyzed_sql_results)) {
list($sql_limit_to_append,
@@ -194,17 +193,8 @@ if (PMA_isAppendLimitClause($analyzed_sql_results)) {
) = PMA_appendLimitClause(
$full_sql_query, $analyzed_sql, isset($display_query)
);
-}
-
-// Since multiple query execution is anyway handled,
-// ignore the WHERE clause of the first sql statement
-// which might contain a phrase like 'call '
-if (preg_match("/\bcall\b/i", $full_sql_query)
- && empty($analyzed_sql[0]['where_clause'])
-) {
- $is_procedure = true;
} else {
- $is_procedure = false;
+ $sql_limit_to_append = '';
}
$reload = PMA_hasCurrentDbChanged($db);
@@ -222,167 +212,33 @@ list($result, $num_rows, $unlim_num_rows, $profiling_results,
// No rows returned -> move back to the calling page
if ((0 == $num_rows && 0 == $unlim_num_rows) || $is_affected) {
- PMA_sendResponseForNoResultsReturned($analyzed_sql_results, $db, $table,
+ PMA_sendResponseForNoResultsReturned(
+ $analyzed_sql_results, $db, $table,
isset($message_to_show) ? $message_to_show : null,
$num_rows, $displayResultsObject, $extra_data, $cfg
);
} else {
- $html_output='';
// At least one row is returned -> displays a table with results
- //If we are retrieving the full value of a truncated field or the original
+ // If we are retrieving the full value of a truncated field or the original
// value of a transformed field, show it here and exit
- if ($GLOBALS['grid_edit'] == true) {
- $row = $GLOBALS['dbi']->fetchRow($result);
- $response = PMA_Response::getInstance();
- $response->addJSON('value', $row[0]);
- exit;
- }
-
- if (isset($_REQUEST['ajax_request']) && isset($_REQUEST['table_maintenance'])) {
- $response = PMA_Response::getInstance();
- $header = $response->getHeader();
- $scripts = $header->getScripts();
- $scripts->addFile('makegrid.js');
- $scripts->addFile('sql.js');
-
- // Gets the list of fields properties
- if (isset($result) && $result) {
- $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result);
- $fields_cnt = count($fields_meta);
- }
-
- if (empty($disp_mode)) {
- // see the "PMA_setDisplayMode()" function in
- // libraries/DisplayResults.class.php
- $disp_mode = 'urdr111101';
- }
-
- // hide edit and delete links for information_schema
- if ($GLOBALS['dbi']->isSystemSchema($db)) {
- $disp_mode = 'nnnn110111';
- }
-
- if (isset($message)) {
- $message = PMA_Message::success($message);
- $html_output .= PMA_Util::getMessage(
- $message, $GLOBALS['sql_query'], 'success'
- );
- }
-
- // Should be initialized these parameters before parsing
- $showtable = isset($showtable) ? $showtable : null;
- $printview = isset($_REQUEST['printview']) ? $_REQUEST['printview'] : null;
- $url_query = isset($url_query) ? $url_query : null;
-
- if (!empty($sql_data) && ($sql_data['valid_queries'] > 1)) {
-
- $_SESSION['is_multi_query'] = true;
- $html_output .= getTableHtmlForMultipleQueries(
- $displayResultsObject, $db, $sql_data, $goto,
- $pmaThemeImage, $text_dir, $printview, $url_query,
- $disp_mode, $sql_limit_to_append, false
- );
- } else {
- $_SESSION['is_multi_query'] = false;
- $displayResultsObject->setProperties(
- $unlim_num_rows, $fields_meta, $is_count, $is_export, $is_func,
- $is_analyse, $num_rows, $fields_cnt, $querytime, $pmaThemeImage,
- $text_dir, $is_maint, $is_explain, $is_show, $showtable,
- $printview, $url_query, false
- );
-
- $html_output .= $displayResultsObject->getTable(
- $result, $disp_mode, $analyzed_sql
- );
- $response = PMA_Response::getInstance();
- $response->addHTML($html_output);
- exit();
- }
- }
-
- // Displays the headers
- if (isset($show_query)) {
- unset($show_query);
- }
- if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
- PMA_Util::checkParameters(array('db', 'full_sql_query'));
-
- $response = PMA_Response::getInstance();
- $header = $response->getHeader();
- $header->enablePrintView();
-
- $html_output .= PMA_getHtmlForPrintViewHeader(
- $db, $full_sql_query, $num_rows
- );
- } else {
- $response = PMA_Response::getInstance();
- $header = $response->getHeader();
- $scripts = $header->getScripts();
- $scripts->addFile('makegrid.js');
- $scripts->addFile('sql.js');
-
- unset($message);
-
- if (! $GLOBALS['is_ajax_request']) {
- if (strlen($table)) {
- include 'libraries/tbl_common.inc.php';
- $url_query .= '&goto=tbl_sql.php&back=tbl_sql.php';
- include 'libraries/tbl_info.inc.php';
- } elseif (strlen($db)) {
- include 'libraries/db_common.inc.php';
- include 'libraries/db_info.inc.php';
- } else {
- include 'libraries/server_common.inc.php';
- }
- } else {
- //we don't need to buffer the output in getMessage here.
- //set a global variable and check against it in the function
- $GLOBALS['buffer_message'] = false;
- }
- }
-
- if (strlen($db)) {
- $cfgRelation = PMA_getRelationsParam();
+ if ($_REQUEST['grid_edit'] == true) {
+ PMA_sendResponseForGridEdit($result);
}
// Gets the list of fields properties
if (isset($result) && $result) {
$fields_meta = $GLOBALS['dbi']->getFieldsMeta($result);
- $fields_cnt = count($fields_meta);
}
-
- //begin the sqlqueryresults div here. container div
- $html_output .= 'getHeader();
+ $scripts = $header->getScripts();
+
// hide edit and delete links:
// - for information_schema
// - if the result set does not contain all the columns of a unique key
@@ -391,103 +247,107 @@ if ((0 == $num_rows && 0 == $unlim_num_rows) || $is_affected) {
= $justBrowsing
&& trim($analyzed_sql[0]['select_expr_clause']) == '*'
&& PMA_Table::isUpdatableView($db, $table);
+
+ $has_unique = PMA_resultSetContainsUniqueKey(
+ $db, $table, $fields_meta
+ );
+
$editable = $has_unique || $updatableView;
+
+ // Displays the results in a table
+ if (empty($disp_mode)) {
+ // see the "PMA_setDisplayMode()" function in
+ // libraries/DisplayResults.class.php
+ $disp_mode = 'urdr111101';
+ }
if (!empty($table) && ($GLOBALS['dbi']->isSystemSchema($db) || !$editable)) {
$disp_mode = 'nnnn110111';
- $msg = PMA_message::notice(
- __(
- 'Table %s does not contain a unique column.'
- . ' Grid edit, checkbox, Edit, Copy and Delete features'
- . ' are not available.'
- )
- );
- $msg->addParam($table);
- $html_output .= $msg->getDisplay();
}
-
- if (isset($_GET['label'])) {
- $msg = PMA_message::success(__('Bookmark %s created'));
- $msg->addParam($_GET['label']);
- $html_output .= $msg->getDisplay();
+ if ( isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
+ $disp_mode = 'nnnn000000';
}
-
- // Should be initialized these parameters before parsing
- $showtable = isset($showtable) ? $showtable : null;
- $printview = isset($_REQUEST['printview']) ? $_REQUEST['printview'] : null;
- $url_query = isset($url_query) ? $url_query : null;
-
- if (! empty($sql_data) && ($sql_data['valid_queries'] > 1) || $is_procedure) {
-
- $_SESSION['is_multi_query'] = true;
- $html_output .= getTableHtmlForMultipleQueries(
- $displayResultsObject, $db, $sql_data, $goto,
- $pmaThemeImage, $text_dir, $printview, $url_query,
- $disp_mode, $sql_limit_to_append, $editable
- );
- } else {
- $_SESSION['is_multi_query'] = false;
- $displayResultsObject->setProperties(
- $unlim_num_rows, $fields_meta, $is_count, $is_export, $is_func,
- $is_analyse, $num_rows, $fields_cnt, $querytime, $pmaThemeImage,
- $text_dir, $is_maint, $is_explain, $is_show, $showtable,
- $printview, $url_query, $editable
- );
-
- $html_output .= $displayResultsObject->getTable(
- $result, $disp_mode, $analyzed_sql
- );
- $GLOBALS['dbi']->freeResult($result);
- }
-
- // BEGIN INDEX CHECK See if indexes should be checked.
- if (isset($query_type)
- && $query_type == 'check_tbl'
- && isset($selected)
- && is_array($selected)
- ) {
- foreach ($selected as $idx => $tbl_name) {
- $check = PMA_Index::findDuplicates($tbl_name, $db);
- if (! empty($check)) {
- $html_output .= sprintf(
- __('Problems with indexes of table `%s`'), $tbl_name
- );
- $html_output .= $check;
- }
+
+ if (isset($_REQUEST['table_maintenance'])) {
+ $scripts->addFile('makegrid.js');
+ $scripts->addFile('sql.js');
+ if (isset($message)) {
+ $message = PMA_Message::success($message);
+ $table_maintenance_html = PMA_Util::getMessage(
+ $message, $GLOBALS['sql_query'], 'success'
+ );
}
- } // End INDEX CHECK
-
- // Bookmark support if required
- if ($disp_mode[7] == '1'
- && (! empty($cfg['Bookmark']) && empty($_GET['id_bookmark']))
- && ! empty($sql_query)
- ) {
- $html_output .= "\n";
- $goto = 'sql.php?'
- . PMA_generate_common_url($db, $table)
- . '&sql_query=' . urlencode($sql_query)
- . '&id_bookmark=1';
- $bkm_sql_query = urlencode(
- isset($complete_query) ? $complete_query : $sql_query
+ $table_maintenance_html .= PMA_getHtmlForSqlQueryResultsTable(
+ isset($sql_data) ? $sql_data : null, $displayResultsObject, $db, $goto,
+ $pmaThemeImage, $text_dir, $url_query, $disp_mode, $sql_limit_to_append,
+ false, $unlim_num_rows, $num_rows, $showtable, $result, $querytime,
+ $analyzed_sql_results, false
);
- $html_output .= PMA_getHtmlForBookmark(
- $db, $goto, $bkm_sql_query, $cfg['Bookmark']['user']
- );
- } // end bookmark support
+ if (empty($sql_data) || ($sql_data['valid_queries'] = 1)) {
+ $response->addHTML($table_maintenance_html);
+ exit();
+ }
+ }
- // Do print the page if required
- if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
- $html_output .= PMA_Util::getButton();
- } // end print case
- $html_output .= '
'; // end sqlqueryresults div
- $response = PMA_Response::getInstance();
- $response->addHTML($html_output);
+ if (!isset($_REQUEST['printview']) || $_REQUEST['printview'] != '1') {
+ $scripts->addFile('makegrid.js');
+ $scripts->addFile('sql.js');
+ unset($message);
+ //we don't need to buffer the output in getMessage here.
+ //set a global variable and check against it in the function
+ $GLOBALS['buffer_message'] = false;
+ }
+
+ $print_view_header_html = PMA_getHtmlForPrintViewHeader(
+ $db, $full_sql_query, $num_rows
+ );
+
+ $previous_update_query_html = PMA_getHtmlForPreviousUpdateQuery(
+ isset($disp_query) ? $disp_query : null,
+ $cfg['ShowSQL'], isset($sql_data) ? $sql_data : null,
+ isset($disp_message) ? $disp_message : null
+ );
+
+ $profiling_chart_html = PMA_getHtmlForProfilingChart(
+ $disp_mode, $db, isset($profiling_results) ? $profiling_results : null
+ );
+
+ $missing_unique_column_msg = PMA_getMessageIfMissingColumnIndex(
+ $table, $db, $editable, $disp_mode
+ );
+
+ $bookmark_created_msg = PMA_getBookmarkCreatedMessage();
+
+ $table_html = PMA_getHtmlForSqlQueryResultsTable(
+ isset($sql_data) ? $sql_data : null, $displayResultsObject, $db, $goto,
+ $pmaThemeImage, $text_dir, $url_query, $disp_mode, $sql_limit_to_append,
+ $editable, $unlim_num_rows, $num_rows, $showtable, $result, $querytime,
+ $analyzed_sql_results, $is_procedure
+ );
+
+ $indexes_problems_html = PMA_getHtmlForIndexesProblems(
+ isset($query_type) ? $query_type : null,
+ isset($selected) ? $selected : null
+ );
+
+ $bookmark_support_html = PMA_getHtmlForBookmark(
+ $disp_mode, isset($cfg['Bookmark']) ? $cfg['Bookmark'] : '', $sql_query,
+ $db, $table, isset($complete_query) ? $complete_query : $sql_query,
+ $cfg['Bookmark']['user']
+ );
+
+ $print_button_html = PMA_getHtmlForPrintButton();
+
+ $html_output = isset($table_maintenance_html) ? $table_maintenance_html : '';
+
+ $html_output .= isset($print_view_header_html) ? $print_view_header_html : '';
+
+ $html_output .= PMA_getHtmlForSqlQueryResults(
+ $previous_update_query_html, $profiling_chart_html,
+ $missing_unique_column_msg, $bookmark_created_msg,
+ $table_html, $indexes_problems_html, $bookmark_support_html,
+ $print_button_html
+ );
+
+ $response->addHTML($html_output);
} // end rows returned
-
-$_SESSION['is_multi_query'] = false;
-
-
-if (! isset($_REQUEST['table_maintenance'])) {
- exit;
-}
-
?>