]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/common.php
Merge branch '0.9.x' into 1.0.x
[quix0rs-gnu-social.git] / lib / common.php
index cd4fbfb15a9455db889c3c52920b1fd17897ddf1..34d77c3f6d1ed621ecf039c6b3568d8e43e66568 100644 (file)
@@ -71,6 +71,7 @@ if (!function_exists('dl')) {
 # global configuration object
 
 require_once('PEAR.php');
+require_once('PEAR/Exception.php');
 require_once('DB/DataObject.php');
 require_once('DB/DataObject/Cast.php'); # for dates
 
@@ -127,6 +128,23 @@ require_once INSTALLDIR.'/lib/subs.php';
 require_once INSTALLDIR.'/lib/clientexception.php';
 require_once INSTALLDIR.'/lib/serverexception.php';
 
+
+//set PEAR error handling to use regular PHP exceptions
+function PEAR_ErrorToPEAR_Exception($err)
+{
+    //DB_DataObject throws error when an empty set would be returned
+    //That behavior is weird, and not how the rest of StatusNet works.
+    //So just ignore those errors.
+    if ($err->getCode() == DB_DATAOBJECT_ERROR_NODATA) {
+        return;
+    }
+    if ($err->getCode()) {
+        throw new PEAR_Exception($err->getMessage(), $err->getCode());
+    }
+    throw new PEAR_Exception($err->getMessage());
+}
+PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'PEAR_ErrorToPEAR_Exception');
+
 try {
     StatusNet::init(@$server, @$path, @$conffile);
 } catch (NoConfigException $e) {