From 7ac4b83c39d841c80c39ca034971aaaa4bdf0e59 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Mon, 9 Apr 2012 14:04:49 +0200 Subject: made exceptions from the db optional set address for updae mails correctly --- include/dba.php | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/dba.php b/include/dba.php index cbf5922a7..8a9d599c4 100644 --- a/include/dba.php +++ b/include/dba.php @@ -21,6 +21,8 @@ if(! class_exists('dba')) { private $debug = 0; private $db; + private $exceptions; + public $mysqli = true; public $connected = false; public $error = false; @@ -68,6 +70,10 @@ if(! class_exists('dba')) { } } + public function excep($excep) { + $this->exceptions=$excep; + } + public function getdb() { return $this->db; } @@ -75,7 +81,8 @@ if(! class_exists('dba')) { public function q($sql) { if((! $this->db) || (! $this->connected)) { - throw new RuntimeException(t("There is no db connection. ")); + throwOrLog(new RuntimeException(t("There is no db connection. "))); + return; } if($this->mysqli) { @@ -114,7 +121,8 @@ if(! class_exists('dba')) { } logger('dba: ' . $str ); if(FALSE===$result) { - throw new RuntimeException('dba: ' . $str); + throwOrLog(new RuntimeException('dba: ' . $str)); + return; } } @@ -155,6 +163,19 @@ if(! class_exists('dba')) { } } + private function throwOrLog(Exception $ex) { + if($this->exceptions) { + throw $ex; + } else { + logger('dba: '.$ex->getMessage()); + } + } + + /** + * starts a transaction. Transactions need to be finished with + * commit() or rollback(). Please mind that the db table engine may + * not support this. + */ public function beginTransaction() { if($this->mysqli) { return $this->db->autocommit(false); @@ -164,6 +185,10 @@ if(! class_exists('dba')) { } } + /** + * rollback a transaction. So, rollback anything that was done since the last call + * to beginTransaction(). + */ public function rollback() { if($this->mysqli) { return $this->db->rollback(); @@ -174,6 +199,9 @@ if(! class_exists('dba')) { $this->stopTransaction(); } + /** + * commit a transaction. So, write any query to the database. + */ public function commit() { if($this->mysqli) { return $this->db->commit(); -- cgit v1.2.3