Skip to content

Commit

Permalink
Reduce nesting levels.
Browse files Browse the repository at this point in the history
Signed-off-by: Hugues Peccatte <hugues.peccatte@gmail.com>
  • Loading branch information
Tithugues committed Nov 22, 2014
1 parent d8f1c34 commit 404e99a
Showing 1 changed file with 75 additions and 69 deletions.
144 changes: 75 additions & 69 deletions libraries/navigation/NavigationTree.class.php
Expand Up @@ -159,82 +159,88 @@ public function __construct()
private function _getNavigationDbPos()
{
$retval = 0;
if (! empty($GLOBALS['db'])) {
/*
* @todo describe a scenario where this code is executed
*/
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'])
)
);
} 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];
}
}
if (empty($GLOBALS['db'])) {
return $retval;
}

/*
* @todo describe a scenario where this code is executed
*/
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'])
)
);

return $retval;
}

$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) {
break;
}
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;
}

$prefix = strstr(
$arr[0],
$GLOBALS['cfg']['NavigationTreeDbSeparator'],
true
);
if ($prefix === false) {
$prefix = $arr[0];
}
$prefixMap[$prefix] = 1;
}
}
} else {
$databases = array();
foreach ($GLOBALS['dbs_to_test'] as $db) {
$query = "SHOW DATABASES LIKE '" . $db . "'";
$handle = $GLOBALS['dbi']->tryQuery($query);
if ($handle === false) {
continue;
}
while ($arr = $GLOBALS['dbi']->fetchArray($handle)) {
$databases[] = $arr[0];
}
}
sort($databases);
foreach ($databases as $database) {
if (strcasecmp($database, $GLOBALS['db']) >= 0) {
break;
}

$navItems = (int) $GLOBALS['cfg']['FirstLevelNavigationItems'];
$retval = floor((count($prefixMap) / $navItems)) * $navItems;
$prefix = strstr(
$database,
$GLOBALS['cfg']['NavigationTreeDbSeparator'],
true
);
if ($prefix === false) {
$prefix = $database;
}
$prefixMap[$prefix] = 1;
}
}

$navItems = (int) $GLOBALS['cfg']['FirstLevelNavigationItems'];
$retval = floor((count($prefixMap) / $navItems)) * $navItems;
return $retval;
}

Expand Down

0 comments on commit 404e99a

Please sign in to comment.