* PostgreSQL: fixed not working installation (access to not yet existing table stalls transaction)

This commit is contained in:
Ralf Becker 2014-06-25 12:43:11 +00:00
parent c5ec3245d3
commit 2ee9082f2e
3 changed files with 24 additions and 16 deletions

View File

@ -230,7 +230,12 @@ class accounts_sql
if ($data['account_id'] < 0 && class_exists('emailadmin_smtp_sql', isset($data['account_email'])))
{
try {
if (empty($data['account_email']))
if (isset($GLOBALS['egw_info']['apps']) && !isset($GLOBALS['egw_info']['apps']['emailadmin']) ||
isset($GLOBALS['egw_setup']) && !in_array(emailadmin_smtp_sql::TABLE, $this->db->table_names(true)))
{
// cant store email, if emailadmin not (yet) installed
}
elseif (empty($data['account_email']))
{
$this->db->delete(emailadmin_smtp_sql::TABLE, array(
'account_id' => $data['account_id'],
@ -247,7 +252,7 @@ class accounts_sql
), __LINE__, __FILE__, emailadmin_smtp_sql::APP);
}
}
// ignore not (yet) existing mailaccounts table
// ignore not (yet) existing mailaccounts table (does NOT work in PostgreSQL, because of transaction!)
catch (egw_exception_db $e) {
unset($e);
}

View File

@ -1032,9 +1032,10 @@ class egw_db
/**
* Get a list of table names in the current database
*
* @param boolean $just_naem=false true return array of table-names, false return old format
* @return array list of the tables
*/
function table_names()
function table_names($just_name=false)
{
if (!$this->Link_ID) $this->connect();
if (!$this->Link_ID)
@ -1051,7 +1052,7 @@ class egw_db
{
$table = strtolower($table);
}
$result[] = array(
$result[] = $just_name ? $table : array(
'table_name' => $table,
'tablespace_name' => $this->Database,
'database' => $this->Database

View File

@ -45,14 +45,6 @@ class setup_process
function init_process()
{
$GLOBALS['egw_setup']->oProc = new schema_proc();
// delete image-map, in case new apps get installed, or existing ones updated
try {
common::delete_image_map();
}
catch(Exception $e) {
// ignore exception, as during a new install, there's no cache configured and therefore no need to unset
}
}
/**
@ -175,6 +167,16 @@ class setup_process
$pass_string = implode (':', $pass);
$passing_string = implode (':', $passing);
}
try {
// flush instance cache
egw_cache::flush(egw_cache::INSTANCE);
// delete image-map, in case new apps get installed, or existing ones updated
common::delete_image_map();
}
catch(Exception $e) {
unset($e);
// ignore exception, as during a new install, there's no cache configured and therefore no need to unset
}
/* now return the list */
return $setup_info = array_merge($setup_info,$passed);
}