diff --git a/libraries/navigation/NavigationTree.php b/libraries/navigation/NavigationTree.php index 2b7ca44a06..8fb468803c 100644 --- a/libraries/navigation/NavigationTree.php +++ b/libraries/navigation/NavigationTree.php @@ -171,10 +171,13 @@ class NavigationTree * @todo describe a scenario where this code is executed */ if (!$GLOBALS['cfg']['Server']['DisableIS']) { + $dbSeparator = $GLOBALS['dbi']->escapeString(( + $GLOBALS['cfg']['NavigationTreeDbSeparator'] + ); $query = "SELECT (COUNT(DB_first_level) DIV %d) * %d "; $query .= "from ( "; $query .= " SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, "; - $query .= " '" . $GLOBALS['dbi']->escapeString($GLOBALS['cfg']['NavigationTreeDbSeparator']) . "', 1) "; + $query .= " '%s', 1) "; $query .= " DB_first_level "; $query .= " FROM INFORMATION_SCHEMA.SCHEMATA "; $query .= " WHERE `SCHEMA_NAME` < '%s' "; @@ -185,6 +188,7 @@ class NavigationTree $query, (int)$GLOBALS['cfg']['FirstLevelNavigationItems'], (int)$GLOBALS['cfg']['FirstLevelNavigationItems'], + $dbSeparator, $GLOBALS['dbi']->escapeString($GLOBALS['db']) ) ); diff --git a/libraries/navigation/nodes/Node.php b/libraries/navigation/nodes/Node.php index f265fca288..c5ee89d9d8 100644 --- a/libraries/navigation/nodes/Node.php +++ b/libraries/navigation/nodes/Node.php @@ -424,7 +424,9 @@ class Node return $retval; } - $dbSeparator = $GLOBALS['cfg']['NavigationTreeDbSeparator']; + $dbSeparator = $GLOBALS['dbi']->escapeString( + $GLOBALS['cfg']['NavigationTreeDbSeparator'] + ); if (isset($GLOBALS['cfg']['Server']['DisableIS']) && !$GLOBALS['cfg']['Server']['DisableIS'] ) { @@ -434,7 +436,7 @@ class Node $query .= "SELECT DB_first_level "; $query .= "FROM ( "; $query .= "SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, "; - $query .= "'" . $GLOBALS['dbi']->escapeString($dbSeparator) . "', 1) "; + $query .= "'%s', 1) "; $query .= "DB_first_level "; $query .= "FROM INFORMATION_SCHEMA.SCHEMATA "; $query .= $this->_getWhereClause('SCHEMA_NAME', $searchClause); @@ -444,11 +446,19 @@ class Node $query .= ") t2 "; $query .= $this->_getWhereClause('SCHEMA_NAME', $searchClause); $query .= "AND 1 = LOCATE(CONCAT(DB_first_level, "; - $query .= "'" . $GLOBALS['dbi']->escapeString($dbSeparator) . "'), "; + $query .= "'%s'), "; $query .= "CONCAT(SCHEMA_NAME, "; - $query .= "'" . $GLOBALS['dbi']->escapeString($dbSeparator) . "')) "; + $query .= "'%s')) "; $query .= "ORDER BY SCHEMA_NAME ASC"; - $retval = $GLOBALS['dbi']->fetchResult($query); + + $retval = $GLOBALS['dbi']->fetchResult( + sprintf( + $query, + $dbSeparator, + $dbSeparator, + $dbSeparator + ) + ); return $retval; }