fix not being able to create new password, after r53051: allow to specify multiple ;-separated hosts for database

This commit is contained in:
Ralf Becker 2015-07-07 12:41:11 +00:00
parent c73f4bcb4c
commit cc15b6812a

View File

@ -584,6 +584,8 @@ class egw_db
} }
unset($this->Link_ID); unset($this->Link_ID);
$this->Link_ID = 0; $this->Link_ID = 0;
if (!empty($this->setupType)) $this->type = $this->setupType;
} }
/** /**
@ -1177,14 +1179,23 @@ class egw_db
$currentPassword = $this->Password; $currentPassword = $this->Password;
$currentDatabase = $this->Database; $currentDatabase = $this->Database;
if ($adminname != '')
{
$this->User = $adminname;
$this->Password = $adminpasswd;
$this->Database = $this->Type == 'pgsql' ? 'template1' : 'mysql';
}
$this->disconnect();
$sqls = array(); $sqls = array();
switch ($this->Type) switch ($this->Type)
{ {
case 'pgsql': case 'pgsql':
$meta_db = 'template1';
$sqls[] = "CREATE DATABASE $currentDatabase"; $sqls[] = "CREATE DATABASE $currentDatabase";
break; break;
case 'mysql': case 'mysql':
case 'mysqli':
case 'mysqlt':
$create = "CREATE DATABASE `$currentDatabase`"; $create = "CREATE DATABASE `$currentDatabase`";
if ($charset && isset($this->Link_ID->charset2mysql[$charset]) && (float) $this->ServerInfo['version'] >= 4.1) if ($charset && isset($this->Link_ID->charset2mysql[$charset]) && (float) $this->ServerInfo['version'] >= 4.1)
{ {
@ -1192,19 +1203,11 @@ class egw_db
} }
$sqls[] = $create; $sqls[] = $create;
$sqls[] = "GRANT ALL ON `$currentDatabase`.* TO $currentUser@'$grant_host' IDENTIFIED BY ".$this->quote($currentPassword); $sqls[] = "GRANT ALL ON `$currentDatabase`.* TO $currentUser@'$grant_host' IDENTIFIED BY ".$this->quote($currentPassword);
$meta_db = 'mysql';
break; break;
default: default:
echo "<p>db::create_database(user='$adminname',\$pw) not yet implemented for DB-type '$this->Type'</p>\n"; echo "<p>db::create_database(user='$adminname',\$pw) not yet implemented for DB-type '$this->Type'</p>\n";
break; break;
} }
if ($adminname != '')
{
$this->User = $adminname;
$this->Password = $adminpasswd;
$this->Database = $meta_db;
}
$this->disconnect();
foreach($sqls as $sql) foreach($sqls as $sql)
{ {
$this->query($sql,__LINE__,__FILE__); $this->query($sql,__LINE__,__FILE__);