diff --git a/ChangeLog b/ChangeLog
index 3935ec69ca..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
@@ -19,6 +22,7 @@
- [auth] Fixed error handling for signon auth method.
- bug #3276001 [core] Avoid caching of index.php.
- bug #3306958 [interface] Unnecessary Details slider
+- bug #3308476 [interface] "Show all" not persistent after a sort
3.4.1.0 (2011-05-20)
- bug #3301108 [interface] Synchronize and already configured host
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:
+
+
+
set up pmadb and the phpMyAdmin configuration storage
+
put the table name in $cfg['Servers'][$i]['table_uiprefs'] (e.g. 'pma_table_uiprefs')
+
+
+
$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/js/functions.js b/js/functions.js
index a075fdb3d4..3735397aab 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -1309,6 +1309,53 @@ function PMA_showNoticeForEnum(selectElement) {
}
}
+/**
+ * Generates a dialog box to pop up the create_table form
+ */
+function PMA_createTableDialog( div, url , target){
+ /**
+ * @var button_options Object that stores the options passed to jQueryUI
+ * dialog
+ */
+ var button_options = {};
+ // in the following function we need to use $(this)
+ button_options[PMA_messages['strCancel']] = function() {$(this).parent().dialog('close').remove();}
+
+ var button_options_error = {};
+ button_options_error[PMA_messages['strOK']] = function() {$(this).parent().dialog('close').remove();}
+
+ var $msgbox = PMA_ajaxShowMessage();
+
+ $.get( target , url , function(data) {
+ //in the case of an error, show the error message returned.
+ if (data.success != undefined && data.success == false) {
+ div
+ .append(data.error)
+ .dialog({
+ title: PMA_messages['strCreateTable'],
+ height: 230,
+ width: 900,
+ open: PMA_verifyTypeOfAllColumns,
+ buttons : button_options_error
+ })// end dialog options
+ //remove the redundant [Back] link in the error message.
+ .find('fieldset').remove();
+ } else {
+ div
+ .append(data)
+ .dialog({
+ title: PMA_messages['strCreateTable'],
+ height: 600,
+ width: 900,
+ open: PMA_verifyTypeOfAllColumns,
+ buttons : button_options
+ }); // end dialog options
+ }
+ PMA_ajaxRemoveMessage($msgbox);
+ }) // end $.get()
+
+}
+
/**
* jQuery function that uses jQueryUI's dialogs to confirm with user. Does not
* return a jQuery object yet and hence cannot be chained
@@ -1403,7 +1450,7 @@ jQuery.fn.PMA_sort_table = function(text_selector) {
*/
$(document).ready(function() {
- /**
+ /**
* Attach event handler to the submit action of the create table minimal form
* and retrieve the full table form and display it in a dialog
*
@@ -1412,50 +1459,15 @@ $(document).ready(function() {
$("#create_table_form_minimal.ajax").live('submit', function(event) {
event.preventDefault();
$form = $(this);
-
- /* @todo Validate this form! */
-
- /**
- * @var button_options Object that stores the options passed to jQueryUI
- * dialog
- */
- var button_options = {};
- // in the following function we need to use $(this)
- button_options[PMA_messages['strCancel']] = function() {$(this).dialog('close').remove();}
-
- var button_options_error = {};
- button_options_error[PMA_messages['strOK']] = function() {$(this).dialog('close').remove();}
-
- var $msgbox = PMA_ajaxShowMessage();
PMA_prepareForAjaxRequest($form);
- $.get($form.attr('action'), $form.serialize(), function(data) {
- //in the case of an error, show the error message returned.
- if (data.success != undefined && data.success == false) {
- $('')
- .append(data.error)
- .dialog({
- title: PMA_messages['strCreateTable'],
- height: 230,
- width: 900,
- open: PMA_verifyTypeOfAllColumns,
- buttons : button_options_error
- })// end dialog options
- //remove the redundant [Back] link in the error message.
- .find('fieldset').remove();
- } else {
- $('')
- .append(data)
- .dialog({
- title: PMA_messages['strCreateTable'],
- height: 600,
- width: 900,
- open: PMA_verifyTypeOfAllColumns,
- buttons : button_options
- }); // end dialog options
- }
- PMA_ajaxRemoveMessage($msgbox);
- }) // end $.get()
+ /*variables which stores the common attributes*/
+ var url = $form.serialize();
+ var action = $form.attr('action');
+ var div = $('');
+
+ /*Calling to the createTableDialog function*/
+ PMA_createTableDialog(div, url, action);
// empty table name and number of columns from the minimal form
$form.find('input[name=table],input[name=num_fields]').val('');
diff --git a/js/navigation.js b/js/navigation.js
index 52d13cfd4d..7f9a013119 100644
--- a/js/navigation.js
+++ b/js/navigation.js
@@ -202,4 +202,22 @@ $(document).ready(function(){
window.parent.refreshMain($('#LeftDefaultTabTable')[0].value);
}
});
-});
+
+ /* Create table */
+ $('#newtable a.ajax').click(function(event){
+ event.preventDefault();
+ /*Getting the url */
+ var url = $('#newtable a').attr("href");
+ if (url.substring(0, 15) == "tbl_create.php?") {
+ url = url.substring(15);
+ }
+ url = url +"&num_fields=&ajax_request=true";
+ /*Creating a div on the frame_content frame */
+ var div = parent.frame_content.$('');
+ var target = "tbl_create.php";
+
+ /*Calling to the createTableDialog function*/
+ PMA_createTableDialog(div , url , target);
+ });//end of create new table
+});//end of document get ready
+
diff --git a/js/server_privileges.js b/js/server_privileges.js
index 8b9c5e99c3..314663f2e4 100644
--- a/js/server_privileges.js
+++ b/js/server_privileges.js
@@ -241,11 +241,11 @@ $(document).ready(function() {
$("#reload_privileges_anchor.ajax").live("click", function(event) {
event.preventDefault();
- PMA_ajaxShowMessage(PMA_messages['strReloadingPrivileges']);
+ var $msgbox = PMA_ajaxShowMessage(PMA_messages['strReloadingPrivileges']);
$.get($(this).attr("href"), {'ajax_request': true}, function(data) {
if(data.success == true) {
- PMA_ajaxShowMessage(data.message);
+ PMA_ajaxRemoveMessage($msgbox);
}
else {
PMA_ajaxShowMessage(data.error);
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.inc.php b/libraries/common.inc.php
index d75084b3cf..70b70fe797 100644
--- a/libraries/common.inc.php
+++ b/libraries/common.inc.php
@@ -540,6 +540,7 @@ $_REQUEST['js_frame'] = PMA_ifSetOr($_REQUEST['js_frame'], '');
*/
$GLOBALS['js_include'] = array();
$GLOBALS['js_include'][] = 'jquery/jquery-1.6.1.js';
+$GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
$GLOBALS['js_include'][] = 'update-location.js';
/**
diff --git a/libraries/common.lib.php b/libraries/common.lib.php
index 538d8ac9a4..39b78f9b32 100644
--- a/libraries/common.lib.php
+++ b/libraries/common.lib.php
@@ -812,9 +812,7 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count =
* or array of it
* @param boolean $do_it a flag to bypass this function (used by dump
* functions)
- * @return mixed the "backquoted" database, table or field name if the
- * current MySQL release is >= 3.23.6, the original one
- * else
+ * @return mixed the "backquoted" database, table or field name
* @access public
*/
function PMA_backquote($a_name, $do_it = true)
@@ -1090,10 +1088,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 +1100,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 +1135,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/display_tbl.lib.php b/libraries/display_tbl.lib.php
index 33eae075f8..8b35e4e528 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -445,6 +445,11 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $
global $sql_query, $num_rows;
global $vertical_display, $highlight_columns;
+ // required to generate sort links that will remember whether the
+ // "Show all" button has been clicked
+ $sql_md5 = md5($GLOBALS['sql_query']);
+ $session_max_rows = $_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows'];
+
if ($analyzed_sql == '') {
$analyzed_sql = array();
}
@@ -829,9 +834,10 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $
$sorted_sql_query = $unsorted_sql_query . $sort_order;
}
$_url_params = array(
- 'db' => $db,
- 'table' => $table,
- 'sql_query' => $sorted_sql_query,
+ 'db' => $db,
+ 'table' => $table,
+ 'sql_query' => $sorted_sql_query,
+ 'session_max_rows' => $session_max_rows
);
$order_url = 'sql.php' . PMA_generate_common_url($_url_params);
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/libraries/tbl_properties.inc.php b/libraries/tbl_properties.inc.php
index 395fa7be95..501e243bb6 100644
--- a/libraries/tbl_properties.inc.php
+++ b/libraries/tbl_properties.inc.php
@@ -613,14 +613,22 @@ unset($_form_params);
if ($action == 'tbl_create.php') {
?>