fixed fatal error "Exception thrown without a stack frame in Unknown on line 0", if DB does not exist when calling the regular eGW url

This commit is contained in:
Ralf Becker 2008-04-01 10:33:54 +00:00
parent 205e8dbce5
commit 3d909d4776
2 changed files with 29 additions and 18 deletions

View File

@ -81,24 +81,29 @@ class egw extends egw_minimal
} }
$this->db->set_app('phpgwapi'); $this->db->set_app('phpgwapi');
$this->db->Halt_On_Error = 'no';
$this->db->connect(
$GLOBALS['egw_info']['server']['db_name'],
$GLOBALS['egw_info']['server']['db_host'],
$GLOBALS['egw_info']['server']['db_port'],
$GLOBALS['egw_info']['server']['db_user'],
$GLOBALS['egw_info']['server']['db_pass'],
$GLOBALS['egw_info']['server']['db_type']
);
// check if eGW is already setup, if not redirect to setup/ // check if eGW is already setup, if not redirect to setup/
if (!$this->db->select(config::TABLE,'COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle()) try {
$this->db->connect(
$GLOBALS['egw_info']['server']['db_name'],
$GLOBALS['egw_info']['server']['db_host'],
$GLOBALS['egw_info']['server']['db_port'],
$GLOBALS['egw_info']['server']['db_user'],
$GLOBALS['egw_info']['server']['db_pass'],
$GLOBALS['egw_info']['server']['db_type']
);
}
catch(Exception $e) {
//echo "<pre>Connection to DB failed (".$e->getMessage().")!\n".$e->getTraceAsString();
}
if ($e || !$this->db->select(config::TABLE,'COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle())
{ {
$setup_dir = str_replace($_SERVER['PHP_SELF'],'index.php','setup/'); $setup_dir = str_replace($_SERVER['PHP_SELF'],'index.php','setup/');
// we check for the old table too, to not scare updating users ;-) // we check for the old table too, to not scare updating users ;-)
if ($this->db->select('phpgw_config','COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle()) if (!$e && $this->db->select('phpgw_config','COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle())
{ {
throw new Exception('<center><b>Fatal Error:</b> You need to <a href="' . $setup_dir . '">update eGroupWare</a> before you can continue using it.</center>',999); throw new Exception('<center><b>Fatal Error:</b> You need to <a href="' . $setup_dir .
'">update eGroupWare</a> before you can continue using it.</center>',999);
} }
else else
{ {
@ -107,8 +112,6 @@ class egw extends egw_minimal
} }
exit; exit;
} }
$this->db->Halt_On_Error = 'yes';
// Set the DB's client charset if a system-charset is set // Set the DB's client charset if a system-charset is set
$system_charset = $this->db->select(config::TABLE,'config_value',array( $system_charset = $this->db->select(config::TABLE,'config_value',array(
'config_app' => 'phpgwapi', 'config_app' => 'phpgwapi',

View File

@ -1279,12 +1279,16 @@
*/ */
function lang($key,$vars=null) function lang($key,$vars=null)
{ {
static $varnames = array('%1','%2','%3','%4');
if(!is_array($vars)) if(!is_array($vars))
{ {
$vars = func_get_args(); $vars = func_get_args();
array_shift($vars); // remove $key array_shift($vars); // remove $key
} }
return $GLOBALS['egw']->translation->translate($key,$vars); return is_object($GLOBALS['egw']) && isset($GLOBALS['egw']->translations) ?
$GLOBALS['egw']->translation->translate($key,$vars) :
str_replace($varnames,$vars,$key);
} }
} }
@ -1359,11 +1363,11 @@ function egw_exception_handler(Exception $e)
'<pre><b>'.$e->getMessage()."</b>\n\n". '<pre><b>'.$e->getMessage()."</b>\n\n".
$e->getTraceAsString()."</pre>\n"; $e->getTraceAsString()."</pre>\n";
if (is_object($GLOBALS['egw']) && is_object($GLOBALS['egw']->session)) if (is_object($GLOBALS['egw']) && isset($GLOBALS['egw']->session))
{ {
'<p><a href="'.$GLOBALS['egw']->link('/index.php').'">'.lang('Click here to resume your eGroupWare Session.').'</a></p>'; '<p><a href="'.$GLOBALS['egw']->link('/index.php').'">'.lang('Click here to resume your eGroupWare Session.').'</a></p>';
} }
if (is_object($GLOBALS['egw']) && is_object($GLOBALS['egw']->framework)) if (is_object($GLOBALS['egw']) && isset($GLOBALS['egw']->framework))
{ {
$GLOBALS['egw']->framework->render($message,$headline); $GLOBALS['egw']->framework->render($message,$headline);
} }
@ -1371,7 +1375,11 @@ function egw_exception_handler(Exception $e)
{ {
echo "<html>\n<head>\n<title>$headline</title>\n</head>\n<body>\n$message\n</body>\n</html>\n"; echo "<html>\n<head>\n<title>$headline</title>\n</head>\n<body>\n$message\n</body>\n</html>\n";
} }
$GLOBALS['egw']->common->egw_exit(); if (is_object($GLOBALS['egw']) && isset($GLOBALS['egw']->common))
{
$GLOBALS['egw']->common->egw_exit();
}
exit;
} }
set_exception_handler('egw_exception_handler'); set_exception_handler('egw_exception_handler');