Additional db driver fixes, mysqli api set as default regardless of php version.
[fa-stable.git] / includes / references.inc
index 0c11ebee3defacaa1d96bcdfb61a25a862f08160..cd01ab6c67386032182dbda57e5a962390f1bea2 100644 (file)
@@ -57,7 +57,7 @@ class references
        function save($type, $id, $reference) 
        {
                update_reference($type, $id, $reference); // store in refs table
-               if ($reference == $this->get_next($type)) { // if reference was not changed from default
+               if ($reference == $this->get_next($type)) { // if reference was bigger or not changed from default
                        $next = $this->_increment($reference);  // increment default
                        save_next_reference($type, $next);
                }
@@ -101,8 +101,10 @@ class references
 }
 
 //----------------------------------------------------------------------------
-
-function is_new_reference($ref, $type)
+//
+//     Check if reference was not used so far (for other transaction than $trans_no)
+//
+function is_new_reference($ref, $type, $trans_no=0)
 {
        $db_info = get_systype_db_info($type);
        $db_name = $db_info[0];
@@ -114,24 +116,26 @@ function is_new_reference($ref, $type)
        $type = db_escape($type);
        
        if ($db_ref == null) { // journal or bank trans store references in refs table
-               $db_ref = TB_PREF."refs";
+               $db_name = TB_PREF."refs";
                $db_type = 'type';
                $db_trans = 'id';
-               $rb_ref = 'reference';
+               $db_ref = 'reference';
        }
 
        if ($db_type != null) {
-               $sql = "SELECT $db_ref FROM $db_name 
+               $sql = "SELECT $db_ref FROM $db_name tbl
                        LEFT JOIN ".TB_PREF."voided v ON 
-                               $db_name.$db_type=v.type AND $db_name.$db_trans=v.id
-                       WHERE $db_name.$db_ref=$ref AND ISNULL(v.id)
-                               AND $db_name.$db_type=$type";
+                               tbl.$db_type=v.type AND tbl.$db_trans=v.id
+                       WHERE $db_ref=$ref AND ISNULL(v.id)
+                               AND tbl.$db_type=$type";
        } else {
-               $sql = "SELECT $db_ref FROM $db_name 
+               $sql = "SELECT $db_ref ref FROM $db_name tbl
                        LEFT JOIN ".TB_PREF."voided v ON 
-                               v.type=$type AND $db_name.$db_trans=v.id
+                               v.type=$type AND tbl.$db_trans=v.id
                        WHERE $db_ref=$ref AND ISNULL(v.id)";
        }
+       if ($trans_no)
+                       $sql .= " AND tbl.`$db_trans` != ".db_escape($trans_no);
 
        $result = db_query($sql, "could not test for unique reference");