Improved transactions support (multilevel).
[fa-stable.git] / includes / db / sql_functions.inc
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 //
13 //      General database functions common for all modules.
14 //
15 //-------------------------------------------------------------------
16 // Multilevel transaction control.
17 //
18
19 function begin_transaction()
20 {
21         global $transaction_level; // set in set_global_connection()
22
23         if (!$transaction_level) {
24                 error_log('begin');
25                 db_query("BEGIN", "could not start a transaction");
26         }
27         $transaction_level++;
28         error_log("level:$transaction_level");
29 }
30
31 function commit_transaction()
32 {
33         global $transaction_level;
34
35         $transaction_level--;
36
37         if (!$transaction_level) {
38                 error_log('commit');
39                 db_query("COMMIT", "could not commit a transaction");
40         }
41         error_log("level:$transaction_level");
42 }
43
44 /*
45         This function is called on end of script execution to cancel
46         all aborted transactions (if any)
47 */
48 function cancel_transaction()
49 {
50         global $transaction_level;
51
52         if ($transaction_level) {
53                 error_log('rollback');
54                 db_query("ROLLBACK", "could not cancel a transaction"); 
55         } else
56                 error_log("no transactions");
57
58 }
59
60 //-----------------------------------------------------------------------------
61 //      Update record activity status.
62 //
63 function update_record_status($id, $status, $table, $key) {
64         $sql = "UPDATE ".TB_PREF.$table." SET inactive = "
65                 . db_escape($status)." WHERE $key=".db_escape($id);
66                 
67         db_query($sql, "Can't update record status");
68 }
69 ?>