From b6ad16cbd2092d76d4fed03d37a77d29b5b38f00 Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 26 Feb 2016 14:59:34 +0100 Subject: * database connection setup in PHP app --- app/php/db/DBTransaction.php | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 app/php/db/DBTransaction.php (limited to 'app/php/db/DBTransaction.php') diff --git a/app/php/db/DBTransaction.php b/app/php/db/DBTransaction.php new file mode 100644 index 0000000..b176453 --- /dev/null +++ b/app/php/db/DBTransaction.php @@ -0,0 +1,53 @@ +getActive()) { + $this->_nestedCount++; + } + } + + public function commit() { + if ($this->_rolledBack) { + $childTransaction = (bool)($this->_nestedCount); + $this->rollback(); + if (!$childTransaction) { + throw new TDbException('Nested transaction was rolled back, unable to commit.'); + } + } + else { + if ($this->_nestedCount) { + $this->_nestedCount--; + } + else { + parent::commit(); + } + } + } + + public function rollback() { + if (!$this->getActive()) { + $this->_nestedCount = 0; + return; + } + if ($this->_nestedCount) { + $this->_rolledBack = TRUE; + $this->_nestedCount--; + } + else { + parent::rollback(); + $this->_nestedCount = 0; + $this->_rolledBack = FALSE; + } + } + +} + +?> -- cgit v1.2.3