--- filter.inc	2008-09-23 00:13:46.000000000 -0400
+++ filter.inc.new	2009-04-21 19:21:10.000000000 -0400
@@ -61,5 +61,10 @@ function install_remove_filter($format_i
  *   The weight to be applied to this filter.
  */
 function install_add_filter($format_id, $module, $delta = 0, $weight = 0) {
-  db_query("INSERT INTO {filters} (`format`, `module`, `delta`, `weight`) VALUES (%d, '%s', %d, %d)", $format_id, $module, $delta, $weight);
+  if (!db_result(db_query("select count(*) from {filters} where format=%d and module='%s' and delta=%d", $format_id, $module, $delta))) {
+    db_query("INSERT INTO {filters} (`format`, `module`, `delta`, `weight`) VALUES (%d, '%s', %d, %d)", $format_id, $module, $delta, $weight);
+  }
+  else {
+    db_query("UPDATE {filters} SET weight = %d WHERE `format` = %d AND `module` = '%s' AND delta=%d", $weight, $format_id, $module, $delta);
+  }
 }
