summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2012-11-24 18:07:26 +0100
committerFrank Karlitschek <frank@owncloud.org>2012-11-24 18:07:26 +0100
commit0f6181627835572ce70fddfc4decc14b1213a715 (patch)
tree798b9b565ba86a28f8112752cbf88ac1d561c194
parentfb5d0db0376f8f75fe6745fd1c94d5b325be4f41 (diff)
downloadnextcloud-server-0f6181627835572ce70fddfc4decc14b1213a715.tar.gz
nextcloud-server-0f6181627835572ce70fddfc4decc14b1213a715.zip
A new function to create nice error page. And use it for fatal db errors
-rw-r--r--lib/db.php48
-rw-r--r--lib/template.php15
2 files changed, 23 insertions, 40 deletions
diff --git a/lib/db.php b/lib/db.php
index 687c49a0210..09b4934940c 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']='<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();
diff --git a/lib/template.php b/lib/template.php
index a10cabf5931..868d5f2ba2e 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();
+ }
+
+
}