diff --git a/lib/db.php b/lib/db.php index de42626563..f79768a664 100644 --- a/lib/db.php +++ b/lib/db.php @@ -168,8 +168,7 @@ class OC_DB { try{ self::$PDO=new PDO($dsn, $user, $pass, $opts); }catch(PDOException $e) { - echo( 'can not connect to database, using '.$type.'. ('.$e->getMessage().')'); - die(); + OC_Template::printErrorPage( 'can not connect to database, using '.$type.'. ('.$e->getMessage().')' ); } // We always, really always want associative arrays self::$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); @@ -263,10 +262,9 @@ class OC_DB { // Die if we could not connect if( PEAR::isError( self::$MDB2 )) { - echo( 'can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')'); OC_Log::write('core', self::$MDB2->getUserInfo(), OC_Log::FATAL); OC_Log::write('core', self::$MDB2->getMessage(), OC_Log::FATAL); - die(); + OC_Template::printErrorPage( 'can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')' ); } // We always, really always want associative arrays @@ -326,7 +324,7 @@ class OC_DB { $entry .= 'Offending command was: '.htmlentities($query).'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - die( $entry ); + OC_Template::printErrorPage( $entry ); } }else{ try{ @@ -336,7 +334,7 @@ class OC_DB { $entry .= 'Offending command was: '.htmlentities($query).'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - die( $entry ); + OC_Template::printErrorPage( $entry ); } $result=new PDOStatementWrapper($result); } @@ -449,7 +447,7 @@ class OC_DB { // Die in case something went wrong if( $definition instanceof MDB2_Schema_Error ) { - die( $definition->getMessage().': '.$definition->getUserInfo()); + OC_Template::printErrorPage( $definition->getMessage().': '.$definition->getUserInfo() ); } if(OC_Config::getValue('dbtype', 'sqlite')==='oci') { unset($definition['charset']); //or MDB2 tries SHUTDOWN IMMEDIATE @@ -461,8 +459,7 @@ class OC_DB { // Die in case something went wrong if( $ret instanceof MDB2_Error ) { - echo (self::$MDB2->getDebugOutput()); - die ($ret->getMessage() . ': ' . $ret->getUserInfo()); + OC_Template::printErrorPage( self::$MDB2->getDebugOutput().' '.$ret->getMessage() . ': ' . $ret->getUserInfo() ); } return true; @@ -575,7 +572,7 @@ class OC_DB { $entry .= 'Offending command was: ' . $query . '
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - die( $entry ); + OC_Template::printErrorPage( $entry ); } if($result->numRows() == 0) { @@ -607,7 +604,7 @@ class OC_DB { $entry .= 'Offending command was: ' . $query.'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: ' . $entry); - die( $entry ); + OC_Template::printErrorPage( $entry ); } return $result->execute(); diff --git a/lib/template.php b/lib/template.php index a10cabf593..868d5f2ba2 100644 --- a/lib/template.php +++ b/lib/template.php @@ -496,4 +496,19 @@ class OC_Template{ } return $content->printPage(); } + + /** + * @brief Print a fatal error page and terminates the script + * @param string $error The error message to show + * @param string $hint An option hint message + */ + public static function printErrorPage( $error, $hint = '' ) { + $error['error']=$error; + $error['hint']=$hint; + $errors[]=$error; + OC_Template::printGuestPage("", "error", array("errors" => $errors)); + die(); + } + + }