Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugues Peccatte <hugues.peccatte@gmail.com>2014-04-20 18:04:53 +0400
committerHugues Peccatte <hugues.peccatte@gmail.com>2014-04-22 00:14:31 +0400
commit6cb5756e7dbbbd40d2fb24a3974fd13eb5777f80 (patch)
tree051daedb187a0f1e0abd21f7f398288382cf0112 /libraries
parente0c64783a32a21cfc731e807744d32933278e0be (diff)
Manage a config proporty to limit the number of items at first level in navigation panel.
Signed-off-by: Hugues Peccatte <hugues.peccatte@gmail.com>
Diffstat (limited to 'libraries')
-rw-r--r--libraries/config.default.php7
-rw-r--r--libraries/config.values.php1
-rw-r--r--libraries/config/messages.inc.php5
-rw-r--r--libraries/config/setup.forms.php1
-rw-r--r--libraries/config/user_preferences.forms.php1
-rw-r--r--libraries/navigation/Nodes/Node.class.php42
6 files changed, 55 insertions, 2 deletions
diff --git a/libraries/config.default.php b/libraries/config.default.php
index 1953cea6b6..31cd2151f5 100644
--- a/libraries/config.default.php
+++ b/libraries/config.default.php
@@ -848,6 +848,13 @@ $cfg['Error_Handler']['display'] = false;
*/
/**
+ * maximum number of items displayed on first level in navigation panel
+ *
+ * @global integer $cfg['FirstLevelNavigationItems']
+ */
+$cfg['FirstLevelNavigationItems'] = 25;
+
+/**
* maximum number of items displayed in navigation panel
*
* @global integer $cfg['MaxNavigationItems']
diff --git a/libraries/config.values.php b/libraries/config.values.php
index d5b63ad45e..b8012291db 100644
--- a/libraries/config.values.php
+++ b/libraries/config.values.php
@@ -211,6 +211,7 @@ $cfg_db['_validators'] = array(
'CharTextareaRows' => 'validatePositiveNumber',
'ExecTimeLimit' => 'validateNonNegativeNumber',
'Export/sql_max_query_size' => 'validatePositiveNumber',
+ 'FirstLevelNavigationItems' => 'validatePositiveNumber',
'ForeignKeyMaxLimit' => 'validatePositiveNumber',
'Import/csv_enclosed' => array(array('validateByRegex', '/^.?$/')),
'Import/csv_escaped' => array(array('validateByRegex', '/^.$/')),
diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php
index 2c2c5c9d4b..07f59b65ba 100644
--- a/libraries/config/messages.inc.php
+++ b/libraries/config/messages.inc.php
@@ -398,6 +398,11 @@ $strConfigMaxDbList_cmt = __('Users cannot set a higher value');
$strConfigMaxDbList_desc
= __('Maximum number of databases displayed in database list.');
$strConfigMaxDbList_name = __('Maximum databases');
+$strConfigFirstLevelNavigationItems_desc = __(
+ 'The number of items that can be displayed on each page on first level of the '
+ . 'navigation tree.'
+);
+$strConfigFirstLevelNavigationItems_name = __('Maximum items on first level');
$strConfigMaxNavigationItems_desc = __(
'The number of items that can be displayed on each page of the navigation tree.'
);
diff --git a/libraries/config/setup.forms.php b/libraries/config/setup.forms.php
index ddd01711af..1c612378e5 100644
--- a/libraries/config/setup.forms.php
+++ b/libraries/config/setup.forms.php
@@ -170,6 +170,7 @@ $forms['Navi_panel']['Navi_panel'] = array(
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
+ 'FirstLevelNavigationItems',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
'NavigationTreeDisableDatabaseExpansion',
diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php
index 19601c119f..51b481fa76 100644
--- a/libraries/config/user_preferences.forms.php
+++ b/libraries/config/user_preferences.forms.php
@@ -83,6 +83,7 @@ $forms['Navi_panel']['Navi_panel'] = array(
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
+ 'FirstLevelNavigationItems',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
'NavigationTreeDisableDatabaseExpansion',
diff --git a/libraries/navigation/Nodes/Node.class.php b/libraries/navigation/Nodes/Node.class.php
index 5354985de1..2cfe8bc90a 100644
--- a/libraries/navigation/Nodes/Node.class.php
+++ b/libraries/navigation/Nodes/Node.class.php
@@ -360,11 +360,49 @@ class Node
*/
public function getData($type, $pos, $searchClause = '')
{
- $query = "SELECT `SCHEMA_NAME` ";
+ /*$query = "SELECT `SCHEMA_NAME` ";
$query .= "FROM `INFORMATION_SCHEMA`.`SCHEMATA` ";
$query .= $this->_getWhereClause($searchClause);
$query .= "ORDER BY `SCHEMA_NAME` ASC ";
- $query .= "LIMIT $pos, {$GLOBALS['cfg']['MaxNavigationItems']}";
+ $query .= "LIMIT $pos, {$GLOBALS['cfg']['MaxNavigationItems']}";*/
+
+ $query = "SELECT `SCHEMA_NAME` ";
+ $query .= "FROM `INFORMATION_SCHEMA`.`SCHEMATA`, ";
+ $query .= " (";
+ $query .= " select DB_first_level ";
+ $query .= " from ( ";
+ $query .= " SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, ";
+ $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}', 1) ";
+ $query .= "DB_first_level ";
+ $query .= " FROM INFORMATION_SCHEMA.SCHEMATA ";
+ $query .= $this->_getWhereClause($searchClause);
+ $query .= " ) t ";
+ $query .= " ORDER BY DB_first_level ASC ";
+ $query .= " LIMIT $pos, {$GLOBALS['cfg']['FirstLevelNavigationItems']}";
+ $query .= " ) t2 ";
+ $query .= "where 1 = locate(concat(DB_first_level, ";
+ $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}'), ";
+ $query .= "concat(SCHEMA_NAME, ";
+ $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}')) ";
+ $query .= "order by SCHEMA_NAME ASC";
+ /*echo $query;
+
+ SELECT `SCHEMA_NAME`
+ FROM `INFORMATION_SCHEMA`.`SCHEMATA`,
+ (
+ select DB_first_level
+ from (
+ SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level
+ FROM INFORMATION_SCHEMA.SCHEMATA
+ WHERE TRUE
+ ) t
+ ORDER BY DB_first_level ASC
+ LIMIT 0, 5
+ ) t2
+ where 1 = locate(concat(DB_first_level, '_'), concat(SCHEMA_NAME, '_'))
+ order by SCHEMA_NAME ASC
+ */
+
return $GLOBALS['dbi']->fetchResult($query);
}