+csv dep for PG'OCaml.
[cocanwiki.git] / scripts / send_feedback.ml
index 682b8f6..1dbb5d5 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: send_feedback.ml,v 1.3 2004/10/04 15:19:56 rich Exp $
+ * $Id: send_feedback.ml,v 1.11 2006/12/06 09:46:57 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
@@ -30,21 +30,19 @@ open Cocanwiki
 open Cocanwiki_template
 open Cocanwiki_ok
 
-let run r (q : cgi) (dbh : Dbi.connection) hostid {hostname = hostname} user =
-  let template = get_template dbh hostid "send_feedback.txt" in
+let run r (q : cgi) dbh hostid {hostname = hostname} user =
+  let template = get_template dbh hostid "send_feedback.txt" in
 
-  if q#param_true "cancel" then (
+  if q#param_true "cancel" then
     (* Request cancelled. *)
     q#redirect ("http://" ^ hostname);
-    return ()
-  );
 
   (* Get the feedback email for this host. *)
-  let sth =
-    dbh#prepare_cached "select feedback_email from hosts where id = ?" in
-  sth#execute [`Int hostid];
-
-  let to_addr = sth#fetch1string () in
+  let to_addr = List.hd (
+    PGSQL(dbh)
+      "select feedback_email from hosts where id = $hostid"
+  ) in
+  let to_addr = Option.get to_addr in
 
   (* Get the fields. *)
   let page = q#param "page" in
@@ -71,8 +69,8 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {hostname = hostname} user =
   let username =
     match user with
        Anonymous -> "anonymous"
-      | User (userid, username, _) ->
-         sprintf "%s (%d)" username userid in
+      | User (userid, username, _, _) ->
+         sprintf "%s (%ld)" username userid in
 
   template#set "ip" ip;
   template#set "ua" ua;
@@ -82,11 +80,17 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {hostname = hostname} user =
   (* Send the feedback email. *)
   let subject = "Wiki feedback: Feedback about " ^ page ^ " page" in
   let body = template#to_string in
-  Sendmail.send_mail ~subject ~to_addr:[to_addr] ~body ();
+
+  let to_addrs = [ "", to_addr ] in
+  let content_type =
+    "text/plain", ["charset", Mimestring.mk_param "UTF-8"] in
+
+  let msg = Netsendmail.compose ~subject ~to_addrs ~content_type body in
+  Netsendmail.sendmail msg;
 
   (* Confirm. *)
   ok ~title:"Thank you for your feedback" ~buttons:[ok_button "/"]
-    q "An email has been sent to the site administrators."
+    r dbh hostid q "An email has been sent to the site administrators."
 
 let () =
   register_script ~restrict:[CanView] run