Provide not IS based implementation
Signed-off-by: Madhura Jayaratne <madhura.cj@gmail.com>
This commit is contained in:
parent
e46ff7db49
commit
93d23e4494
@ -157,23 +157,77 @@ class PMA_NavigationTree
|
||||
/*
|
||||
* @todo describe a scenario where this code is executed
|
||||
*/
|
||||
$query = "SELECT (COUNT(DB_first_level) DIV %d) * %d ";
|
||||
$query .= "from ( ";
|
||||
$query .= " SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, ";
|
||||
$query .= " '{$GLOBALS['cfg']['NavigationTreeDbSeparator']}', 1) ";
|
||||
$query .= " DB_first_level ";
|
||||
$query .= " FROM INFORMATION_SCHEMA.SCHEMATA ";
|
||||
$query .= " WHERE `SCHEMA_NAME` < '%s' ";
|
||||
$query .= ") t ";
|
||||
if (! $GLOBALS['cfg']['Server']['DisableIS']) {
|
||||
$query = "SELECT (COUNT(DB_first_level) DIV %d) * %d ";
|
||||
$query .= "from ( ";
|
||||
$query .= " SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, ";
|
||||
$query .= " '{$GLOBALS['cfg']['NavigationTreeDbSeparator']}', 1) ";
|
||||
$query .= " DB_first_level ";
|
||||
$query .= " FROM INFORMATION_SCHEMA.SCHEMATA ";
|
||||
$query .= " WHERE `SCHEMA_NAME` < '%s' ";
|
||||
$query .= ") t ";
|
||||
|
||||
$retval = $GLOBALS['dbi']->fetchValue(
|
||||
sprintf(
|
||||
$query,
|
||||
(int)$GLOBALS['cfg']['FirstLevelNavigationItems'],
|
||||
(int)$GLOBALS['cfg']['FirstLevelNavigationItems'],
|
||||
PMA_Util::sqlAddSlashes($GLOBALS['db'])
|
||||
)
|
||||
);
|
||||
$retval = $GLOBALS['dbi']->fetchValue(
|
||||
sprintf(
|
||||
$query,
|
||||
(int)$GLOBALS['cfg']['FirstLevelNavigationItems'],
|
||||
(int)$GLOBALS['cfg']['FirstLevelNavigationItems'],
|
||||
PMA_Util::sqlAddSlashes($GLOBALS['db'])
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$prefixMap = array();
|
||||
if ($GLOBALS['dbs_to_test'] === false) {
|
||||
$handle = $GLOBALS['dbi']->tryQuery("SHOW DATABASES");
|
||||
if ($handle !== false) {
|
||||
while ($arr = $GLOBALS['dbi']->fetchArray($handle)) {
|
||||
if (strcasecmp($arr[0], $GLOBALS['db']) < 0) {
|
||||
$prefix = strstr(
|
||||
$arr[0],
|
||||
$GLOBALS['cfg']['NavigationTreeDbSeparator'],
|
||||
true
|
||||
);
|
||||
if ($prefix === false) {
|
||||
$prefix = $arr[0];
|
||||
}
|
||||
$prefixMap[$prefix] = 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$databases = array();
|
||||
foreach ($GLOBALS['dbs_to_test'] as $db) {
|
||||
$query = "SHOW DATABASES LIKE '" . $db . "'";
|
||||
$handle = $GLOBALS['dbi']->tryQuery($query);
|
||||
if ($handle !== false) {
|
||||
while ($arr = $GLOBALS['dbi']->fetchArray($handle)) {
|
||||
$databases[] = $arr[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
sort($databases);
|
||||
foreach ($databases as $database) {
|
||||
if (strcasecmp($database, $GLOBALS['db']) < 0) {
|
||||
$prefix = strstr(
|
||||
$database,
|
||||
$GLOBALS['cfg']['NavigationTreeDbSeparator'],
|
||||
true
|
||||
);
|
||||
if ($prefix === false) {
|
||||
$prefix = $database;
|
||||
}
|
||||
$prefixMap[$prefix] = 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$navItems = (int) $GLOBALS['cfg']['FirstLevelNavigationItems'];
|
||||
$retval = floor((count($prefixMap) / $navItems)) * $navItems;
|
||||
}
|
||||
}
|
||||
return $retval;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user