Cleanups in ui_msgs.inc and inventory_db.inc
[fa-stable.git] / includes / db / sql_functions.inc
index 766fe545c3a61d6a9e198c953d56228ce70d3dae..85a25137df35b6b0997766b38bd4781421366f18 100644 (file)
@@ -1,20 +1,62 @@
 <?php
-
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+//
+//     General database functions common for all modules.
+//
 //-------------------------------------------------------------------
+// Multilevel transaction control.
+//
 
 function begin_transaction()
 {
-       db_query("BEGIN", "could not start a transaction");
+       global $transaction_level; // set in set_global_connection()
+
+       if (!$transaction_level) {
+               db_query("BEGIN", "could not start a transaction");
+       }
+       $transaction_level++;
 }
 
 function commit_transaction()
 {
-       db_query("COMMIT", "could not commit a transaction");
+       global $transaction_level;
+
+       $transaction_level--;
+
+       if (!$transaction_level) {
+               db_query("COMMIT", "could not commit a transaction");
+       }
 }
 
+/*
+       This function is called on end of script execution to cancel
+       all aborted transactions (if any)
+*/
 function cancel_transaction()
 {
-       db_query("ROLLBACK", "could not cancel a transaction"); 
+       global $transaction_level;
+
+       if ($transaction_level) {
+               db_query("ROLLBACK", "could not cancel a transaction"); 
+       }
 }
 
+//-----------------------------------------------------------------------------
+//     Update record activity status.
+//
+function update_record_status($id, $status, $table, $key) {
+       $sql = "UPDATE ".TB_PREF.$table." SET inactive = "
+               . db_escape($status)." WHERE $key=".db_escape($id);
+               
+       db_query($sql, "Can't update record status");
+}
 ?>