Support deletion in secondary tables via array tables_delete
authorJoey Schulze <joey@infodrom.org>
Wed, 12 May 2010 18:23:50 +0000 (20:23 +0200)
committerJoey Schulze <joey@infodrom.org>
Wed, 12 May 2010 18:23:50 +0000 (20:23 +0200)
ajax/ajax.php

index 185b5e4..18d3177 100644 (file)
@@ -205,9 +205,14 @@ function delete_or_copy($mask)
   if (!empty($mask['edit_table']))
     return array('error' => 'Cannot handle deletion for secondary table');
 
+  if (!empty($_POST['table']) && is_array($mask['tables_delete']) && in_array($_POST['table'], $mask['tables_delete']))
+    $table = $_POST['table'];
+  else
+    $table = $mask['table'];
+
   if (DELETE_COPY === true) {
     $sql = sprintf("INSERT INTO %s_deleted SELECT * FROM %s WHERE id = %d",
-                  $mask['table'], $mask['table'], $_POST['id']);
+                  $table, $table, $_POST['id']);
 
     $sth = pg_query($sql);
 
@@ -218,7 +223,7 @@ function delete_or_copy($mask)
     }
 
     $sql = sprintf("UPDATE %s_deleted SET sys_user='%s',sys_edit=now() WHERE id = %d",
-                  $mask['table'], $_SESSION['sys']['login'], $_POST['id']);
+                  $table, $_SESSION['sys']['login'], $_POST['id']);
 
     $sth = pg_query($sql);
 
@@ -229,7 +234,7 @@ function delete_or_copy($mask)
     }
   }
 
-  $sql = sprintf("DELETE FROM %s WHERE id = %d", $mask['table'], $_POST['id']);
+  $sql = sprintf("DELETE FROM %s WHERE id = %d", $table, $_POST['id']);
 
   $sth = pg_query($sql);