From 5789e6eb517b03c0546b7300595321bee17d8e0b Mon Sep 17 00:00:00 2001 From: Damien Metzger Date: Wed, 3 Jul 2013 11:28:55 +0200 Subject: [PATCH] [*] IN : only display the button to create the database if you can actually create the database --- classes/db/DbMySQLi.php | 7 +++++-- classes/db/DbPDO.php | 9 ++++++--- classes/db/MySQL.php | 7 +++++-- install-dev/models/database.php | 13 +++++++------ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/classes/db/DbMySQLi.php b/classes/db/DbMySQLi.php index 43c4eaf52..258398491 100644 --- a/classes/db/DbMySQLi.php +++ b/classes/db/DbMySQLi.php @@ -53,7 +53,7 @@ class DbMySQLiCore extends Db return $this->link; } - public static function createDatabase($host, $user, $password, $dbname) + public static function createDatabase($host, $user, $password, $dbname, $dropit = false) { if (strpos($host, ':') !== false) { @@ -62,7 +62,10 @@ class DbMySQLiCore extends Db } else $link = @new mysqli($host, $user, $password); - return $link->query('CREATE DATABASE `'.bqSQL($dbname).'`'); + $success = $link->query('CREATE DATABASE `'.bqSQL($dbname).'`'); + if ($dropit) + $success &= $link->query('DROP DATABASE `'.bqSQL($dbname).'`'); + return $success; } /** diff --git a/classes/db/DbPDO.php b/classes/db/DbPDO.php index e257b753c..db7f9fa26 100644 --- a/classes/db/DbPDO.php +++ b/classes/db/DbPDO.php @@ -46,14 +46,17 @@ class DbPDOCore extends Db return new PDO($dsn, $user, $password, array(PDO::ATTR_TIMEOUT => $timeout, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); } - public static function createDatabase($host, $user, $password, $dbname) + public static function createDatabase($host, $user, $password, $dbname, $dropit = false) { try { $link = DbPDO::_getPDO($host, $user, $password, false); - return $link->exec('CREATE DATABASE `'.bqSQL($dbname).'`'); + $success = $link->exec('CREATE DATABASE `'.bqSQL($dbname).'`'); + if ($dropit) + $success &= $link->exec('DROP DATABASE `'.bqSQL($dbname).'`'); } catch (PDOException $e) { - return false; + $success = false; } + return $success; } /** diff --git a/classes/db/MySQL.php b/classes/db/MySQL.php index c681a2ef2..ae58d5ffb 100644 --- a/classes/db/MySQL.php +++ b/classes/db/MySQL.php @@ -47,10 +47,13 @@ class MySQLCore extends Db return $this->link; } - public static function createDatabase($host, $user, $password, $dbname) + public static function createDatabase($host, $user, $password, $dbname, $dropit = false) { $link = mysql_connect($host, $user, $password); - return mysql_query('CREATE DATABASE `'.bqSQL($dbname).'`'); + $success = mysql_query('CREATE DATABASE `'.bqSQL($dbname).'`', $link); + if ($dropit) + $success &= mysql_query('DROP DATABASE `'.bqSQL($dbname).'`', $link); + return $success; } /** diff --git a/install-dev/models/database.php b/install-dev/models/database.php index 3620f677b..bb3d78d2d 100644 --- a/install-dev/models/database.php +++ b/install-dev/models/database.php @@ -81,10 +81,11 @@ class InstallModelDatabase extends InstallAbstractModel break; case 2: - $errors[] = $this->language->l('Connection to MySQL server succeeded, but database "%s" not found', $database).$dbtype.'

- '.sprintf(' - ', - $this->language->l('Attempt to create the database automatically')); + $error = $this->language->l('Connection to MySQL server succeeded, but database "%s" not found', $database).$dbtype; + if ($this->createDatabase($server, $database, $login, $password, true)) + $error .= '

'.sprintf('', $this->language->l('Attempt to create the database automatically')).'

+ '; + $errors[] = $error; break; } } @@ -92,10 +93,10 @@ class InstallModelDatabase extends InstallAbstractModel return $errors; } - public function createDatabase($server, $database, $login, $password) + public function createDatabase($server, $database, $login, $password, $dropit = false) { $class = Db::getClass(); - return $class::createDatabase($server, $login, $password, $database); + return $class::createDatabase($server, $login, $password, $database, $dropit); } public function getBestEngine($server, $database, $login, $password)