public static function preprocessDataSourceConfig(array $dbconfig)
{
foreach ($dbconfig as &$config) {
if (!isset($config['driver'])) {
list($driverType) = explode(':', $config['dsn'], 2);
$config['driver'] = $driverType;
}
// compatible keys for username and password
if (isset($config['username']) && $config['username']) {
$config['user'] = $config['username'];
}
if (isset($config['password']) && $config['password']) {
$config['pass'] = $config['password'];
}
if (!isset($config['user'])) {
$config['user'] = null;
}
if (!isset($config['pass'])) {
$config['pass'] = null;
}
// build dsn string for PDO
if (!isset($config['dsn'])) {
// Build DSN connection string for PDO
$dsn = self::buildDSNObject($config);
$config['dsn'] = $dsn->__toString();
}
if (!isset($config['query_options'])) {
$config['query_options'] = array();
}
if (!isset($config['connection_options'])) {
$config['connection_options'] = array();
}
if ('mysql' === $config['driver']) {
$config['connection_options'][PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES utf8';
}
}
return $dbconfig;
}