Change subject line so it shows the name of the site.
[cocanwiki.git] / scripts / delete_contact.ml
index 563bc02..07758f1 100644 (file)
@@ -1,7 +1,7 @@
 (* COCANWIKI - a wiki written in Objective CAML.
  * Written by Richard W.M. Jones <rich@merjis.com>.
  * Copyright (C) 2004 Merjis Ltd.
- * $Id: delete_contact.ml,v 1.3 2005/11/23 11:32:13 rich Exp $
+ * $Id: delete_contact.ml,v 1.5 2006/03/27 18:09:46 rich Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ open Printf
 open Cocanwiki
 open Cocanwiki_ok
 
-let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
+let run r (q : cgi) dbh hostid { hostname = hostname } _ =
   (* Cancel? *)
   if q#param_true "cancel" then (
     q#redirect ("http://" ^ hostname ^ "/_bin/contacts.cmo");
@@ -37,34 +37,27 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
   (* We can delete multiple contact forms from this script, which is
    * quite unusual.
    *)
-  let ids = List.map int_of_string (q#param_all "delete") in
+  let ids = List.map Int32.of_string (q#param_all "delete") in
   if ids = [] then (
     q#redirect ("http://" ^ hostname ^ "/_bin/contacts.cmo");
     return ()
   );
 
   (* Need to check the contact emails all belong to this host. *)
-  let qs = Dbi.placeholders (List.length ids) in
-  let sth = dbh#prepare_cached ("select count(*)::int4 from contacts
-                                  where hostid = ? and id in " ^ qs) in
-  sth#execute (`Int hostid :: (List.map (fun id -> `Int id) ids));
-
-  assert (sth#fetch1int () = List.length ids);
+  let rows = PGSQL(dbh)
+    "select count(*)::int4 from contacts
+      where hostid = $hostid and id in $@ids" in
+  assert (List.length rows = List.length ids);
 
   (* Delete them. *)
-  let sth = dbh#prepare_cached ("delete from contact_emails
-                                  where contactid in " ^ qs) in
-  sth#execute (List.map (fun id -> `Int id) ids);
-
-  let sth = dbh#prepare_cached ("delete from contacts
-                                  where hostid = ? and id in " ^ qs) in
-  sth#execute (`Int hostid :: (List.map (fun id -> `Int id) ids));
+  PGSQL(dbh) "delete from contact_emails where contactid in $@ids";
+  PGSQL(dbh) "delete from contacts where hostid = $hostid and id in $@ids";
 
   (* Finish off. *)
-  dbh#commit ();
+  PGOCaml.commit dbh;
 
   ok ~title:"Contact form(s) deleted" ~buttons:[ok_button "/_bin/contacts.cmo"]
-    q "Those contact form(s) were deleted."
+    dbh hostid q "Those contact form(s) were deleted."
 
 let () =
   register_script ~restrict:[CanManageContacts] run