(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: delete_contact_form.ml,v 1.1 2004/09/21 15:55:49 rich Exp $
+ * $Id: delete_contact_form.ml,v 1.4 2006/07/26 13:12:10 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
open Cocanwiki
open Cocanwiki_template
-let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
+let run r (q : cgi) dbh hostid { hostname = hostname } _ =
let template = get_template dbh hostid "delete_contact_form.html" in
(* 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
- if ids = [] then (
+ let ids = List.map Int32.of_string (q#param_all "delete") in
+ if ids = [] then
q#redirect ("http://" ^ hostname ^ "/_bin/contacts.cmo");
- raise CgiExit
- );
- let qs = Dbi.placeholders (List.length ids) in
- let sth = dbh#prepare_cached ("select id, name, subject from contacts
- where hostid = ? and id in " ^ qs ^ "
- order by name, id") in
- sth#execute (`Int hostid :: (List.map (fun id -> `Int id) ids));
+ let rows = PGSQL(dbh)
+ "select id, name, subject from contacts
+ where hostid = $hostid and id in $@ids
+ order by name, id" in
let table =
- sth#map (function [`Int id; `String name; `String subject] ->
- [ "id", Template.VarString (string_of_int id);
- "name", Template.VarString name;
- "subject", Template.VarString subject ]
- | _ -> assert false) in
+ List.map (
+ fun (id, name, subject) ->
+ [ "id", Template.VarString (Int32.to_string id);
+ "name", Template.VarString name;
+ "subject", Template.VarString subject ]
+ ) rows in
template#table "deletes" table;
let table =
- List.map (fun id -> [ "id", Template.VarString (string_of_int id) ]) ids in
+ List.map (fun id ->
+ [ "id", Template.VarString (Int32.to_string id) ]) ids in
template#table "ids" table;
q#template template