A new function to create nice error page. And use it for fatal db errors
This commit is contained in:
parent
fb5d0db037
commit
0f61816278
2 changed files with 23 additions and 40 deletions
48
lib/db.php
48
lib/db.php
|
@ -168,11 +168,7 @@ class OC_DB {
|
|||
try{
|
||||
self::$PDO=new PDO($dsn, $user, $pass, $opts);
|
||||
}catch(PDOException $e) {
|
||||
$error['error']='<b>can not connect to database, using '.$type.'. ('.$e->getMessage().')</center>';
|
||||
$error['hint']='';
|
||||
$errors[]=$error;
|
||||
OC_Template::printGuestPage("", "error", array("errors" => $errors));
|
||||
die();
|
||||
OC_Template::printErrorPage( '<b>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']='<b>can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')</center>';
|
||||
$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).'<br />';
|
||||
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).'<br />';
|
||||
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 . '<br />';
|
||||
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.'<br />';
|
||||
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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue