diff --git a/lib/db.php b/lib/db.php index 687c49a021..09b4934940 100644 --- a/lib/db.php +++ b/lib/db.php @@ -168,11 +168,7 @@ class OC_DB { try{ self::$PDO=new PDO($dsn, $user, $pass, $opts); }catch(PDOException $e) { - $error['error']='can not connect to database, using '.$type.'. ('.$e->getMessage().')'; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - 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); @@ -268,11 +264,7 @@ class OC_DB { if( PEAR::isError( self::$MDB2 )) { OC_Log::write('core', self::$MDB2->getUserInfo(), OC_Log::FATAL); OC_Log::write('core', self::$MDB2->getMessage(), OC_Log::FATAL); - $error['error']='can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')'; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( 'can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')' ); } // We always, really always want associative arrays @@ -332,11 +324,7 @@ class OC_DB { $entry .= 'Offending command was: '.htmlentities($query).'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - $error['error']=$entry; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( $entry ); } }else{ try{ @@ -346,11 +334,7 @@ class OC_DB { $entry .= 'Offending command was: '.htmlentities($query).'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - $error['error']=$entry; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( $entry ); } $result=new PDOStatementWrapper($result); } @@ -463,11 +447,7 @@ class OC_DB { // Die in case something went wrong if( $definition instanceof MDB2_Schema_Error ) { - $error['error']=$definition->getMessage().': '.$definition->getUserInfo(); - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( $definition->getMessage().': '.$definition->getUserInfo() ); } if(OC_Config::getValue('dbtype', 'sqlite')==='oci') { unset($definition['charset']); //or MDB2 tries SHUTDOWN IMMEDIATE @@ -479,11 +459,7 @@ class OC_DB { // Die in case something went wrong if( $ret instanceof MDB2_Error ) { - $error['error']=self::$MDB2->getDebugOutput().' '.$ret->getMessage() . ': ' . $ret->getUserInfo(); - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( self::$MDB2->getDebugOutput().' '.$ret->getMessage() . ': ' . $ret->getUserInfo() ); } return true; @@ -596,11 +572,7 @@ class OC_DB { $entry .= 'Offending command was: ' . $query . '
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - $error['error']=$entry; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + OC_Template::printErrorPage( $entry ); } if($result->numRows() == 0) { @@ -632,11 +604,7 @@ class OC_DB { $entry .= 'Offending command was: ' . $query.'
'; OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: ' . $entry); - $error['error']=$entry; - $error['hint']=''; - $errors[]=$error; - OC_Template::printGuestPage("", "error", array("errors" => $errors)); - die(); + 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(); + } + + }