Browse Source

Merge pull request #562 from owncloud/dberrors

prettier error output.
tags/v5.0.0alpha1
Michael Gapczynski 11 years ago
parent
commit
9b630f57d0
2 changed files with 23 additions and 11 deletions
  1. 8
    11
      lib/db.php
  2. 15
    0
      lib/template.php

+ 8
- 11
lib/db.php View File

@@ -168,8 +168,7 @@ class OC_DB {
try{
self::$PDO=new PDO($dsn, $user, $pass, $opts);
}catch(PDOException $e) {
echo( '<b>can not connect to database, using '.$type.'. ('.$e->getMessage().')</center>');
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( '<b>can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')</center>');
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).'<br />';
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).'<br />';
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 . '<br />';
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.'<br />';
OC_Log::write('core', $entry, OC_Log::FATAL);
error_log('DB error: ' . $entry);
die( $entry );
OC_Template::printErrorPage( $entry );
}

return $result->execute();

+ 15
- 0
lib/template.php View File

@@ -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…
Cancel
Save