behave more gracious if database tables are not existing, or outdated. Otherwise we chrashed completely with a invalid SQL Statement (Table

does not exist), without further info/adwise for the user/admin.
This commit is contained in:
Klaus Leithoff 2008-10-23 08:31:51 +00:00
parent 15fa1c84f7
commit deb6edda9b

View File

@ -88,12 +88,21 @@ class egw extends egw_minimal
catch(Exception $e) { catch(Exception $e) {
//echo "<pre>Connection to DB failed (".$e->getMessage().")!\n".$e->getTraceAsString(); //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()) $buff = $this->db->Halt_On_Error;
$this->db->Halt_On_Error = "report";
$retval=false;
if (is_object($this->db->select(config::TABLE,'COUNT(config_name)',false,__LINE__,__FILE__))) {
$retval = $this->db->select(config::TABLE,'COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle();
} else {
#echo config::TABLE. " does not exist";
}
if ($e || !$retval)
{ {
$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 (!$e && $this->db->select('phpgw_config','COUNT(config_name)',false,__LINE__,__FILE__)->fetchSingle()) if (!$e && is_object($this->db->select('phpgw_config','COUNT(config_name)',false,__LINE__,__FILE__)) &&
$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 . 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); '">update eGroupWare</a> before you can continue using it.</center>',999);
@ -105,6 +114,7 @@ class egw extends egw_minimal
} }
exit; exit;
} }
$this->db->Halt_On_Error = $buff;
// 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',