diff --git a/ChangeLog b/ChangeLog index 7457914719..915e38c2d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,9 @@ + Patch #3256122 [search] Show/hide db search results + Patch #3302354 Add gettext wrappers around a message + Remove deprecated function PMA_DBI_get_fields ++ rfe #2098927 Remember recent tables ++ rfe #3078542 Remember the last sort order for each table ++ AJAX for Create table in navigation panel 3.4.2.0 (not yet released) - bug #3301249 [interface] Iconic table operations does not remove inline edit label diff --git a/Documentation.html b/Documentation.html index 3bbb832dd4..2ff0881ba0 100644 --- a/Documentation.html +++ b/Documentation.html @@ -1077,6 +1077,25 @@ ALTER TABLE `pma_column_comments` +
+ $cfg['Servers'][$i]['table_uiprefs'] string +
+
+ Since release 3.5.0 phpMyAdmin can be configured to remember several things + (table sorting + $cfg['RememberSorting'] + , etc.) for browsing tables. + Without configuring the storage, these features still can be used, + but the values will disappear after you logout.

+ + To allow the usage of these functionality persistently: + + +
+
$cfg['Servers'][$i]['tracking'] string
@@ -1934,6 +1953,9 @@ $cfg['TrustedProxies'] = each row on a vertical lineup. +
$cfg['RememberSorting'] boolean
+
If enabled, when browsing tables, the sorting of each table is remembered.
+
$cfg['HeaderFlipType'] string
The HeaderFlipType can be set to 'auto', 'css' or 'fake'. When using diff --git a/config.sample.inc.php b/config.sample.inc.php index 95d3a1a911..edffd03345 100644 --- a/config.sample.inc.php +++ b/config.sample.inc.php @@ -53,6 +53,7 @@ $cfg['Servers'][$i]['AllowNoPassword'] = false; // $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; // $cfg['Servers'][$i]['history'] = 'pma_history'; // $cfg['Servers'][$i]['recent'] = 'pma_recent'; +// $cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs'; // $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; // $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; // $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; diff --git a/db_datadict.php b/db_datadict.php index e9d18fdf1e..9941ef4440 100644 --- a/db_datadict.php +++ b/db_datadict.php @@ -135,7 +135,7 @@ while ($row = PMA_DBI_fetch_assoc($rowset)) { $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); } - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if (!empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/db_qbe.php b/db_qbe.php index a076798741..a5bd7a7e4e 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -686,7 +686,6 @@ if (!empty($qry_select)) { // 2. FROM // Create LEFT JOINS out of Relations -// Code originally by Mike Beck // If we can use Relations we could make some left joins. // First find out if relations are available in this database. diff --git a/libraries/Table.class.php b/libraries/Table.class.php index d41eadc8d9..c73eb31e5a 100644 --- a/libraries/Table.class.php +++ b/libraries/Table.class.php @@ -11,6 +11,10 @@ */ class PMA_Table { + /** + * UI preferences property: sorted column + */ + const PROP_SORTED_COLUMN = 'sorted_col'; static $cache = array(); @@ -39,6 +43,11 @@ class PMA_Table */ var $settings = array(); + /** + * @var array UI preferences + */ + var $uiprefs; + /** * @var array errors occured */ @@ -1185,5 +1194,142 @@ class PMA_Table return $return; } + + /** + * Return UI preferences for this table from phpMyAdmin database. + * + * @uses PMA_query_as_controluser() + * @uses PMA_DBI_fetch_array() + * @uses json_decode() + * + * @return array + */ + protected function getUiPrefsFromDb() + { + $pma_table = PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) .".". + PMA_backquote($GLOBALS['cfg']['Server']['table_uiprefs']); + + // Read from phpMyAdmin database + $sql_query = + " SELECT `prefs` FROM " . $pma_table . + " WHERE `username` = '" . $GLOBALS['cfg']['Server']['user'] . "'" . + " AND `db_name` = '" . $this->db_name . "'" . + " AND `table_name` = '" . $this->name . "'"; + + $row = PMA_DBI_fetch_array(PMA_query_as_controluser($sql_query)); + if (isset($row[0])) { + return json_decode($row[0], true); + } else { + return array(); + } + } + + /** + * Save this table's UI preferences into phpMyAdmin database. + * + * @uses PMA_DBI_try_query() + * @uses json_decode() + * @uses PMA_Message + * + * @return true|PMA_Message + */ + protected function saveUiPrefsToDb() + { + $pma_table = PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) .".". + PMA_backquote($GLOBALS['cfg']['Server']['table_uiprefs']); + + $username = $GLOBALS['cfg']['Server']['user']; + $sql_query = + " REPLACE INTO " . $pma_table . + " VALUES ('" . $username . "', '" . $this->db_name . "', '" . + $this->name . "', '" . PMA_sqlAddslashes(json_encode($this->uiprefs)) . "')"; + + $success = PMA_DBI_try_query($sql_query, $GLOBALS['controllink']); + + if (!$success) { + $message = PMA_Message::error(__('Could not save table UI preferences')); + $message->addMessage('

'); + $message->addMessage(PMA_Message::rawError(PMA_DBI_getError($GLOBALS['controllink']))); + return $message; + } + return true; + } + + /** + * Loads the UI preferences for this table. + * If pmadb and table_uiprefs is set, it will load the UI preferences from + * phpMyAdmin database. + * + * @uses getUiPrefsFromDb() + */ + protected function loadUiPrefs() + { + // set session variable if it's still undefined + if (! isset($_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name])) { + $_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name] = + // check whether we can get from pmadb + (strlen($GLOBALS['cfg']['Server']['pmadb']) + && strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) ? + $this->getUiPrefsFromDb() : array(); + } + $this->uiprefs =& $_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name]; + } + + /** + * Get UI preferences array for this table. + * If pmadb and table_uiprefs is set, it will get the UI preferences from + * phpMyAdmin database. + * + * @return array + */ + public function getUiPrefs() + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + return $this->uiprefs; + } + + /** + * Get a property from UI preferences. + * Return false if the property is not found. + * Available property: + * - PROP_SORTED_COLUMN + * + * @uses loadUiPrefs() + * + * @param string $property + * @return mixed + */ + public function getUiProp($property) + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + return isset($this->uiprefs[$property]) ? $this->uiprefs[$property] : false; + } + + /** + * Set a property from UI preferences. + * If pmadb and table_uiprefs is set, it will save the UI preferences to + * phpMyAdmin database. + * + * @param string $property + * @param mixed $value + * @return true|PMA_Message + */ + public function setUiProp($property, $value) + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + $this->uiprefs[$property] = $value; + // check if pmadb is set + if (strlen($GLOBALS['cfg']['Server']['pmadb']) + && strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) { + return $this->saveUiprefsToDb(); + } + return true; + } } ?> diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 538d8ac9a4..633acb2c3c 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -1090,10 +1090,11 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view $edit_link = 'server_sql.php'; } - // Want to have the query explained (Mike Beck 2002-05-22) + // Want to have the query explained // but only explain a SELECT (that has not been explained) /* SQL-Parser-Analyzer */ $explain_link = ''; + $is_select = false; if (! empty($cfg['SQLQuery']['Explain']) && ! $query_too_big) { $explain_params = $url_params; // Detect if we are validating as well @@ -1101,7 +1102,6 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view if (! empty($GLOBALS['validatequery'])) { $explain_params['validatequery'] = 1; } - $is_select = false; if (preg_match('@^SELECT[[:space:]]+@i', $sql_query)) { $explain_params['sql_query'] = 'EXPLAIN ' . $sql_query; $_message = __('Explain SQL'); @@ -1137,7 +1137,7 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view $url_qpart = PMA_generate_common_url($url_params); // Also we would like to get the SQL formed in some nice - // php-code (Mike Beck 2002-05-22) + // php-code if (! empty($cfg['SQLQuery']['ShowAsPHP']) && ! $query_too_big) { $php_params = $url_params; diff --git a/libraries/config.default.php b/libraries/config.default.php index 5c0b1b2d14..aa883d2dc7 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -345,6 +345,13 @@ $cfg['Servers'][$i]['designer_coords'] = ''; */ $cfg['Servers'][$i]['recent'] = ''; +/** + * table to store UI preferences for tables + * - leave blank for no "persistent" UI preferences + * SUGGESTED: 'pma_table_uiprefs' + */ +$cfg['Servers'][$i]['table_uiprefs'] = ''; + /** * table to store SQL tracking * - leave blank for no SQL tracking @@ -2264,6 +2271,13 @@ $cfg['ModifyDeleteAtRight'] = false; */ $cfg['DefaultDisplay'] = 'horizontal'; +/** + * remember the last way a table sorted + * + * @global string $cfg['RememberSorting'] + */ +$cfg['RememberSorting'] = true; + /** * default display direction for altering/creating columns (tbl_properties) * (horizontal|vertical|) diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php index e8ce0df96b..034214c4c2 100644 --- a/libraries/config/messages.inc.php +++ b/libraries/config/messages.inc.php @@ -346,6 +346,8 @@ $strConfigQueryWindowWidth_desc = __('Query window width (in pixels)'); $strConfigQueryWindowWidth_name = __('Query window width'); $strConfigRecodingEngine_desc = __('Select which functions will be used for character set conversion'); $strConfigRecodingEngine_name = __('Recoding engine'); +$strConfigRememberSorting_desc = __('When browsing tables, the sorting of each table is remembered'); +$strConfigRememberSorting_name = __('Remember table\'s sorting'); $strConfigRepeatCells_desc = __('Repeat the headers every X cells, [kbd]0[/kbd] deactivates this feature'); $strConfigRepeatCells_name = __('Repeat headers'); $strConfigReplaceHelpImg_desc = __('Show help button instead of Documentation text'); @@ -420,6 +422,8 @@ $strConfigServers_table_coords_desc = __('Leave blank for no PDF schema support, $strConfigServers_table_coords_name = __('PDF schema: table coordinates'); $strConfigServers_table_info_desc = __('Table to describe the display columns, leave blank for no support; suggested: [kbd]pma_table_info[/kbd]'); $strConfigServers_table_info_name = __('Display columns table'); +$strConfigServers_table_uiprefs_desc = __('Leave blank for no "persistent" tables\'UI preferences across sessions, suggested: [kbd]pma_table_uiprefs[/kbd]'); +$strConfigServers_table_uiprefs_name = __('UI preferences table'); $strConfigServers_tracking_add_drop_database_desc = __('Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database.'); $strConfigServers_tracking_add_drop_database_name = __('Add DROP DATABASE'); $strConfigServers_tracking_add_drop_table_desc = __('Whether a DROP TABLE IF EXISTS statement will be added as first line to the log when creating a table.'); diff --git a/libraries/config/setup.forms.php b/libraries/config/setup.forms.php index 7269823d2d..5cf5111ce2 100644 --- a/libraries/config/setup.forms.php +++ b/libraries/config/setup.forms.php @@ -74,6 +74,7 @@ $forms['Servers']['Server_pmadb'] = array('Servers' => array(1 => array( 'column_info' => 'pma_column_info', 'history' => 'pma_history', 'recent' => 'pma_recent', + 'table_uiprefs' => 'pma_table_uiprefs', 'tracking' => 'pma_tracking', 'table_coords' => 'pma_table_coords', 'pdf_pages' => 'pma_pdf_pages', @@ -200,7 +201,8 @@ $forms['Main_frame']['Browse'] = array( 'LimitChars', 'ModifyDeleteAtLeft', 'ModifyDeleteAtRight', - 'DefaultDisplay'); + 'DefaultDisplay', + 'RememberSorting'); $forms['Main_frame']['Edit'] = array( 'ProtectBinary', 'ShowFunctionFields', diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php index ffe036632f..68619c9f43 100644 --- a/libraries/config/user_preferences.forms.php +++ b/libraries/config/user_preferences.forms.php @@ -111,7 +111,8 @@ $forms['Main_frame']['Browse'] = array( 'LimitChars', 'ModifyDeleteAtLeft', 'ModifyDeleteAtRight', - 'DefaultDisplay'); + 'DefaultDisplay', + 'RememberSorting'); $forms['Main_frame']['Edit'] = array( 'ProtectBinary', 'ShowFunctionFields', diff --git a/libraries/export/htmlword.php b/libraries/export/htmlword.php index f5425bc4e0..d23640a600 100644 --- a/libraries/export/htmlword.php +++ b/libraries/export/htmlword.php @@ -210,7 +210,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && ! empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/latex.php b/libraries/export/latex.php index 5ff1868910..2a434aed9e 100644 --- a/libraries/export/latex.php +++ b/libraries/export/latex.php @@ -330,7 +330,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/odt.php b/libraries/export/odt.php index b70388dd3c..d1324f0ecb 100644 --- a/libraries/export/odt.php +++ b/libraries/export/odt.php @@ -265,7 +265,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/sql.php b/libraries/export/sql.php index acfdf11f83..19f987364b 100644 --- a/libraries/export/sql.php +++ b/libraries/export/sql.php @@ -777,7 +777,7 @@ function PMA_getTableComments($db, $table, $crlf, $do_relation = false, $do_mim $schema_create = ''; - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/texytext.php b/libraries/export/texytext.php index 8ed6a742ac..1895bcf5ac 100644 --- a/libraries/export/texytext.php +++ b/libraries/export/texytext.php @@ -192,7 +192,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && ! empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/relation.lib.php b/libraries/relation.lib.php index 87521a9131..20ddf97b7b 100644 --- a/libraries/relation.lib.php +++ b/libraries/relation.lib.php @@ -142,6 +142,10 @@ function PMA_printRelationsParamDiagnostic($cfgRelation) PMA_printDiagMessageForFeature(__('Persistent recently used tables'), 'recentwork', $messages); + PMA_printDiagMessageForParameter('table_uiprefs', isset($cfgRelation['table_uiprefs']), $messages, 'table_uiprefs'); + + PMA_printDiagMessageForFeature(__('Persistent tables\' UI preferences'), 'uiprefswork', $messages); + PMA_printDiagMessageForParameter('tracking', isset($cfgRelation['tracking']), $messages, 'tracking'); PMA_printDiagMessageForFeature(__('Tracking'), 'trackingwork', $messages); @@ -225,6 +229,7 @@ function PMA__getRelationsParam() $cfgRelation['mimework'] = false; $cfgRelation['historywork'] = false; $cfgRelation['recentwork'] = false; + $cfgRelation['uiprefswork'] = false; $cfgRelation['trackingwork'] = false; $cfgRelation['designerwork'] = false; $cfgRelation['userconfigwork'] = false; @@ -278,6 +283,8 @@ function PMA__getRelationsParam() $cfgRelation['history'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['recent']) { $cfgRelation['recent'] = $curr_table[0]; + } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_uiprefs']) { + $cfgRelation['table_uiprefs'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['tracking']) { $cfgRelation['tracking'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['userconfig']) { @@ -292,9 +299,11 @@ function PMA__getRelationsParam() $cfgRelation['displaywork'] = true; } } + if (isset($cfgRelation['table_coords']) && isset($cfgRelation['pdf_pages'])) { $cfgRelation['pdfwork'] = true; } + if (isset($cfgRelation['column_info'])) { $cfgRelation['commwork'] = true; @@ -336,6 +345,10 @@ function PMA__getRelationsParam() $cfgRelation['recentwork'] = true; } + if (isset($cfgRelation['table_uiprefs'])) { + $cfgRelation['uiprefswork'] = true; + } + if (isset($cfgRelation['tracking'])) { $cfgRelation['trackingwork'] = true; } @@ -357,9 +370,9 @@ function PMA__getRelationsParam() if ($cfgRelation['relwork'] && $cfgRelation['displaywork'] && $cfgRelation['pdfwork'] && $cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfgRelation['historywork'] - && $cfgRelation['recentwork'] && $cfgRelation['trackingwork'] - && $cfgRelation['userconfigwork'] && $cfgRelation['bookmarkwork'] - && $cfgRelation['designerwork']) { + && $cfgRelation['recentwork'] && $cfgRelation['uiprefswork'] + && $cfgRelation['trackingwork'] && $cfgRelation['userconfigwork'] + && $cfgRelation['bookmarkwork'] && $cfgRelation['designerwork']) { $cfgRelation['allworks'] = true; } diff --git a/libraries/schema/Pdf_Relation_Schema.class.php b/libraries/schema/Pdf_Relation_Schema.class.php index ef602641a6..39fa62bc1f 100644 --- a/libraries/schema/Pdf_Relation_Schema.class.php +++ b/libraries/schema/Pdf_Relation_Schema.class.php @@ -1064,7 +1064,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema $pdf->SetFontSize(14); $pdf->SetLineWidth(0.2); $pdf->SetDisplayMode('fullpage'); - // Get the name of this pdfpage to use as filename (Mike Beck) + // Get the name of this pdfpage to use as filename $_name_sql = 'SELECT page_descr FROM ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages']) . ' WHERE page_nr = ' . $pageNumber; $_name_rs = PMA_query_as_controluser($_name_sql); @@ -1189,7 +1189,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema */ $result = PMA_DBI_query('SHOW FIELDS FROM ' . PMA_backquote($table) . ';', null, PMA_DBI_QUERY_STORE); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if (!empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/scripts/create_tables.sql b/scripts/create_tables.sql index 2d6cb56886..a537462229 100644 --- a/scripts/create_tables.sql +++ b/scripts/create_tables.sql @@ -117,6 +117,21 @@ CREATE TABLE IF NOT EXISTS `pma_recent` ( -- -------------------------------------------------------- +-- +-- Table structure for table `pma_table_uiprefs` +-- + +CREATE TABLE IF NOT EXISTS `pma_table_uiprefs` ( + `username` varchar(64) COLLATE utf8_bin NOT NULL, + `db_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `prefs` blob NOT NULL, + PRIMARY KEY (`username`,`db_name`,`table_name`) +) ENGINE=MyISAM COMMENT='tables'' UI preferences' + DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- -------------------------------------------------------- + -- -- Table structure for table `pma_relation` -- diff --git a/sql.php b/sql.php index d07022b568..1053a9d5f2 100644 --- a/sql.php +++ b/sql.php @@ -356,6 +356,31 @@ if ($is_select) { // see line 141 $is_maint = true; } +// Handle remembered sorting order, only for single table query +if ($GLOBALS['cfg']['RememberSorting'] + && basename($GLOBALS['PMA_PHP_SELF']) == 'sql.php' + && ! ($is_count || $is_export || $is_func || $is_analyse) + && isset($analyzed_sql[0]['queryflags']['select_from']) + && count($analyzed_sql[0]['table_ref']) == 1 + ) { + $pmatable = new PMA_Table($table, $db); + if (empty($analyzed_sql[0]['order_by_clause'])) { + $sorted_col = $pmatable->getUiProp(PMA_Table::PROP_SORTED_COLUMN); + if ($sorted_col) { + // retrieve the remembered sorting order for current table + $sql_order_to_append = ' ORDER BY ' . $sorted_col . ' '; + $sql_query = $analyzed_sql[0]['section_before_limit'] . $sql_order_to_append . $analyzed_sql[0]['section_after_limit']; + + // update the $analyzed_sql + $analyzed_sql[0]['section_before_limit'] .= $sql_order_to_append; + $analyzed_sql[0]['order_by_clause'] = $sorted_col; + } + } else { + // store the remembered table into session + $pmatable->setUiProp(PMA_Table::PROP_SORTED_COLUMN, $analyzed_sql[0]['order_by_clause']); + } +} + // Do append a "LIMIT" clause? if ((! $cfg['ShowAll'] || $_SESSION['tmp_user_values']['max_rows'] != 'all') && ! ($is_count || $is_export || $is_func || $is_analyse) diff --git a/tbl_printview.php b/tbl_printview.php index f2b80abfc6..6bfe3be191 100644 --- a/tbl_printview.php +++ b/tbl_printview.php @@ -114,7 +114,7 @@ foreach ($the_tables as $key => $table) { 0, 1); $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations // Find which tables are related with the current one and write it in // an array $res_rel = PMA_getForeigners($db, $table);