Fixed backup view, sanitization.
[fa-stable.git] / includes / db / references_db.inc
index 7764c534acbe9f81bca4c43c86903e1d288e567e..ca086541bb55ce019c778e1ab48a8eb16a7e346d 100644 (file)
@@ -21,21 +21,19 @@ function get_reference($type, $id)
 }
 
 //--------------------------------------------------------------------------------------------------
-
-function add_reference($type, $id, $reference)
+function update_reference($type, $id, $reference)
 {
-       $sql = "INSERT INTO ".TB_PREF."refs (type, id, reference)
-               VALUES (".db_escape($type).", ".db_escape($id).", "
-                       . db_escape(trim($reference)) . ")";
-
-       db_query($sql, "could not add reference entry");
+    $sql = "REPLACE ".TB_PREF."refs SET reference=".db_escape($reference)
+                       .", type=".db_escape($type).", id=".db_escape($id);
+    db_query($sql, "could not update reference entry");
 }
 
 //--------------------------------------------------------------------------------------------------
 
 function delete_reference($type, $id)
 {
-       $sql = "DELETE FROM ".TB_PREF."refs WHERE type=$type AND id=".db_escape($id);
+       $sql = "DELETE FROM ".TB_PREF."refs WHERE type=".db_escape($type)." AND id=".db_escape($id);
 
        return db_query($sql, "could not delete from reference table");
 }
@@ -44,8 +42,12 @@ function delete_reference($type, $id)
 
 function find_reference($type, $reference)
 {
-       $sql = "SELECT id FROM ".TB_PREF."refs WHERE type=".db_escape($type)
-               ." AND reference=".db_escape($reference);
+       // ignore refs references for voided transactions
+       $sql = "SELECT r.id FROM ".TB_PREF."refs r LEFT JOIN ".TB_PREF."voided v ON"
+               ." r.type=v.type AND r.id=v.id"
+               ." WHERE r.type=".db_escape($type)
+               ." AND reference=".db_escape($reference)
+               ." AND ISNULL(`memo_`)";
 
        $result = db_query($sql, "could not query reference table");