From 6ed1819bf4faaee1ef3650d59089c66181b1f8ba Mon Sep 17 00:00:00 2001
From: Ilia Alshanetsky <iliaa@php.net>
Date: Thu, 10 Jun 2010 12:11:19 +0000
Subject: Added inTransaction() method to PDO, with specialized support for
 Postgres

---
 ext/pdo/pdo_dbh.c        | 20 ++++++++++++++++++++
 ext/pdo/php_pdo_driver.h |  1 +
 2 files changed, 21 insertions(+)

(limited to 'ext/pdo')

diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index 1573290420..f50df54d48 100755
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -683,6 +683,25 @@ static PHP_METHOD(PDO, rollBack)
 }
 /* }}} */
 
+/* {{{ proto bool PDO::inTransaction()
+   determine if inside a transaction */
+static PHP_METHOD(PDO, inTransaction)
+{
+	pdo_dbh_t *dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+	if (zend_parse_parameters_none() == FAILURE) {
+		return;
+	}
+	PDO_CONSTRUCT_CHECK;
+
+	if (!dbh->methods->in_transaction) {
+		RETURN_BOOL(dbh->in_txn);
+	}	
+
+	RETURN_LONG(dbh->methods->in_transaction(dbh TSRMLS_CC));
+}
+/* }}} */
+
 static int pdo_dbh_attribute_set(pdo_dbh_t *dbh, long attr, zval *value TSRMLS_DC) /* {{{ */
 {
 
@@ -1246,6 +1265,7 @@ const zend_function_entry pdo_dbh_functions[] = {
 	PHP_ME(PDO, beginTransaction,       arginfo_pdo__void,         ZEND_ACC_PUBLIC)
 	PHP_ME(PDO, commit,                 arginfo_pdo__void,         ZEND_ACC_PUBLIC)
 	PHP_ME(PDO, rollBack,               arginfo_pdo__void,         ZEND_ACC_PUBLIC)
+	PHP_ME(PDO, inTransaction,          arginfo_pdo__void,         ZEND_ACC_PUBLIC)
 	PHP_ME(PDO, setAttribute,	arginfo_pdo_setattribute,	ZEND_ACC_PUBLIC)
 	PHP_ME(PDO, exec,			arginfo_pdo_exec,		ZEND_ACC_PUBLIC)
 	PHP_ME(PDO, query,			NULL,					ZEND_ACC_PUBLIC)
diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h
index a9396c5a26..92280063c3 100755
--- a/ext/pdo/php_pdo_driver.h
+++ b/ext/pdo/php_pdo_driver.h
@@ -310,6 +310,7 @@ struct pdo_dbh_methods {
 	pdo_dbh_check_liveness_func	check_liveness;
 	pdo_dbh_get_driver_methods_func get_driver_methods;
 	pdo_dbh_request_shutdown	persistent_shutdown;
+	pdo_dbh_txn_func		in_transaction;
 };
 
 /* }}} */
-- 
cgit v1.2.1