protected function retrieve($like_db_name = null)
{
$database_list = array();
$command = "";
if (!$GLOBALS['cfg']['Server']['DisableIS']) {
$command .= "SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`";
if (null !== $like_db_name) {
$command .= " WHERE `SCHEMA_NAME` LIKE '" . $like_db_name . "'";
}
} else {
if ($GLOBALS['dbs_to_test'] === false || null !== $like_db_name) {
$command .= "SHOW DATABASES";
if (null !== $like_db_name) {
$command .= " LIKE '" . $like_db_name . "'";
}
} else {
foreach ($GLOBALS['dbs_to_test'] as $db) {
$database_list = array_merge($database_list, $this->retrieve($db));
}
}
}
if ($command) {
$database_list = $GLOBALS['dbi']->fetchResult($command, null, null, $this->db_link);
}
if ($GLOBALS['cfg']['NaturalOrder']) {
natsort($database_list);
} else {
// need to sort anyway, otherwise information_schema
// goes at the top
sort($database_list);
}
return $database_list;
}