commit
d85e440aa1
|
@ -1,5 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
class DatabaseSetupException extends Exception
|
||||||
|
{
|
||||||
|
private $hint;
|
||||||
|
|
||||||
|
public function __construct($message, $hint, $code = 0, Exception $previous = null) {
|
||||||
|
$this->hint = $hint;
|
||||||
|
parent::__construct($message, $code, $previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString() {
|
||||||
|
return __CLASS__ . ": [{$this->code}]: {$this->message} ({$this->hint})\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getHint() {
|
||||||
|
return $this->hint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class OC_Setup {
|
class OC_Setup {
|
||||||
public static function install($options) {
|
public static function install($options) {
|
||||||
$error = array();
|
$error = array();
|
||||||
|
@ -69,10 +87,16 @@ class OC_Setup {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
self::setupMySQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username);
|
self::setupMySQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username);
|
||||||
|
} catch (DatabaseSetupException $e) {
|
||||||
|
$error[] = array(
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'hint' => $e->getHint()
|
||||||
|
);
|
||||||
|
return($error);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$error[] = array(
|
$error[] = array(
|
||||||
'error' => 'MySQL username and/or password not valid',
|
'error' => $e->getMessage(),
|
||||||
'hint' => 'You need to enter either an existing account or the administrator.'
|
'hint' => ''
|
||||||
);
|
);
|
||||||
return($error);
|
return($error);
|
||||||
}
|
}
|
||||||
|
@ -166,7 +190,7 @@ class OC_Setup {
|
||||||
//check if the database user has admin right
|
//check if the database user has admin right
|
||||||
$connection = @mysql_connect($dbhost, $dbuser, $dbpass);
|
$connection = @mysql_connect($dbhost, $dbuser, $dbpass);
|
||||||
if(!$connection) {
|
if(!$connection) {
|
||||||
throw new Exception('MySQL username and/or password not valid');
|
throw new DatabaseSetupException('MySQL username and/or password not valid','You need to enter either an existing account or the administrator.');
|
||||||
}
|
}
|
||||||
$oldUser=OC_Config::getValue('dbuser', false);
|
$oldUser=OC_Config::getValue('dbuser', false);
|
||||||
|
|
||||||
|
@ -229,8 +253,14 @@ class OC_Setup {
|
||||||
// the anonymous user would take precedence when there is one.
|
// the anonymous user would take precedence when there is one.
|
||||||
$query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
|
$query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
|
||||||
$result = mysql_query($query, $connection);
|
$result = mysql_query($query, $connection);
|
||||||
|
if (!$result) {
|
||||||
|
throw new DatabaseSetupException("MySQL user '" . "$name" . "'@'localhost' already exists","Delete this user from MySQL.");
|
||||||
|
}
|
||||||
$query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
|
$query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
|
||||||
$result = mysql_query($query, $connection);
|
$result = mysql_query($query, $connection);
|
||||||
|
if (!$result) {
|
||||||
|
throw new DatabaseSetupException("MySQL user '" . "$name" . "'@'%' already exists","Delete this user from MySQL.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function setupPostgreSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username) {
|
private static function setupPostgreSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username) {
|
||||||
|
|
Loading…
Reference in New Issue