(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: mail_import.ml,v 1.11 2006/03/28 13:20:00 rich Exp $
+ * $Id: mail_import.ml,v 1.15 2006/08/16 15:27:02 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
* NB. Do not change this unique title - it is also used during thread
* indexing.
*)
- let title = sprintf "Mail/%s (%d)" subject msgid in
+ let title = sprintf "Mail/%s (%ld)" subject msgid in
(* Choose a suitable URL. *)
let url =
- match Wikilib.generate_url_of_title dbh hostid title with
+ match Wikilib.generate_url_of_title r dbh hostid title with
(* Duplicate URL is OK - eg. in the case where we are overwriting
* an already imported message.
*)
match overwrite with
| None -> new_page (Title title)
| Some _ -> load_page dbh hostid ~url () in
- let model = { model with redirect = "" } in
+ let model = { model with redirect = None } in
(* Create the first section (mail header). *)
let section0 =
hdr_template#set "from" from;
hdr_template#set "inet_message_id" inet_message_id;
- let yyyy, mm, dd = date.Dbi.year, date.Dbi.month, date.Dbi.day in
- hdr_template#set "yyyy" (sprintf "%04d" yyyy);
- hdr_template#set "mm" (sprintf "%02d" mm);
- hdr_template#set "dd" (sprintf "%02d" dd);
- hdr_template#set "short_month" (short_month mm);
+ let date = fst message_date in
+ hdr_template#set "yyyy" (Printer.CalendarPrinter.sprint "%Y" date);
+ hdr_template#set "mm" (Printer.CalendarPrinter.sprint "%m" date);
+ hdr_template#set "dd" (Printer.CalendarPrinter.sprint "%d" date);
+ hdr_template#set "short_month"
+ (Printer.short_name_of_month (Calendar.month date));
let get_table hdr =
List.map (fun addr -> [ "addr", Template.VarString addr ])
hdr_template#to_string
in
- "", "mail_header", content in
+ None, Some "mail_header", None, content in
(* Create the second section (mail body).
* XXX Very simple. Should be extended to understand attachments and
(fun line ->
let find str sub_lc =
try
- String.find (String.lowercase str) sub_lc
+ String.find (lowercase str) sub_lc
with
Invalid_string -> -1
in
with
Not_found ->
"No plain text message body found" in
- "Message", "mail_body", content in
+ Some "Message", Some "mail_body", None, content in
(* Overwrite the first two sections of the current page, regardless of
* what they contain.
* use the divname to identify the old mail_header and mail_body and
* overwrite those, or insert them if they don't exist.
*)
- let contents = model.contents in
+ let contents = model.contents_ in
let contents =
match contents with
- [] | [_] -> [ section0; section1 ]
- | _ :: _ :: xs -> section0 :: section1 :: xs in
- let model = { model with contents = contents } in
+ | [] | [_] -> [ section0; section1 ]
+ | _ :: _ :: xs -> section0 :: section1 :: xs in
+ let model = { model with contents_ = contents } in
(* Write the page back. This can throw several exceptions, but we ignore
* them because we want to script to fail abruptly if any of these
* unexpected conditions arises.
*)
- save_page dbh hostid ~user ~r model;
+ ignore (save_page r dbh hostid ~user model);
(* Rebuild threads? *)
if rebuild then
- thread_mail dbh hostid ~user ~r date.Dbi.year date.Dbi.month;
+ thread_mail r dbh hostid ~user
+ (Calendar.year (fst message_date))
+ (Date.int_of_month (Calendar.month (fst message_date)));
(* Commit to the database. *)
PGOCaml.commit dbh;