Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
159ff7e4eb
@ -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
|
||||
|
||||
@ -1077,6 +1077,25 @@ ALTER TABLE `pma_column_comments`
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dt id="table_uiprefs">
|
||||
<span id="cfg_Servers_table_uiprefs">$cfg['Servers'][$i]['table_uiprefs']</span> string
|
||||
</dt>
|
||||
<dd>
|
||||
Since release 3.5.0 phpMyAdmin can be configured to remember several things
|
||||
(table sorting
|
||||
<a href="#cfg_RememberSorting" class="configrule">$cfg['RememberSorting']</a>
|
||||
, etc.) for browsing tables.
|
||||
Without configuring the storage, these features still can be used,
|
||||
but the values will disappear after you logout.<br/><br/>
|
||||
|
||||
To allow the usage of these functionality persistently:
|
||||
|
||||
<ul>
|
||||
<li>set up <a href="#pmadb">pmadb</a> and the phpMyAdmin configuration storage</li>
|
||||
<li>put the table name in <tt>$cfg['Servers'][$i]['table_uiprefs']</tt> (e.g. 'pma_table_uiprefs')</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dt id="tracking">
|
||||
<span id="cfg_Servers_tracking">$cfg['Servers'][$i]['tracking']</span> string
|
||||
</dt>
|
||||
@ -1934,6 +1953,9 @@ $cfg['TrustedProxies'] =
|
||||
each row on a vertical lineup.
|
||||
</dd>
|
||||
|
||||
<dt id="cfg_RememberSorting">$cfg['RememberSorting'] boolean</dt>
|
||||
<dd>If enabled, when browsing tables, the sorting of each table is remembered.</dd>
|
||||
|
||||
<dt id="cfg_HeaderFlipType">$cfg['HeaderFlipType'] string</dt>
|
||||
<dd>
|
||||
The HeaderFlipType can be set to 'auto', 'css' or 'fake'. When using
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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
|
||||
|
||||
@ -686,7 +686,6 @@ if (!empty($qry_select)) {
|
||||
// 2. FROM
|
||||
|
||||
// Create LEFT JOINS out of Relations
|
||||
// Code originally by Mike Beck <mike.beck@ibmiller.de>
|
||||
// If we can use Relations we could make some left joins.
|
||||
// First find out if relations are available in this database.
|
||||
|
||||
|
||||
@ -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('<br /><br />');
|
||||
$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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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|<number>)
|
||||
|
||||
@ -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.');
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -111,7 +111,8 @@ $forms['Main_frame']['Browse'] = array(
|
||||
'LimitChars',
|
||||
'ModifyDeleteAtLeft',
|
||||
'ModifyDeleteAtRight',
|
||||
'DefaultDisplay');
|
||||
'DefaultDisplay',
|
||||
'RememberSorting');
|
||||
$forms['Main_frame']['Edit'] = array(
|
||||
'ProtectBinary',
|
||||
'ShowFunctionFields',
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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`
|
||||
--
|
||||
|
||||
25
sql.php
25
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)
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user