(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: stats.ml,v 1.1 2004/09/23 15:16:21 rich Exp $
+ * $Id: stats.ml,v 1.6 2006/03/28 16:24:08 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_template
open Cocanwiki_server_settings
-let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
+let run r (q : cgi) dbh hostid { canonical_hostname = canonical_hostname } _ =
let template = get_template dbh hostid "stats.html" in
let page = q#param "page" in
template#set "stats_page" stats_page;
- (* Get the current business week. Tricky - because GregorianDate isn't
- * around to help us, it's best to get the database to help us out.
- *
- * XXX This fails sometimes near New Year. Better to get GD into extlib
- * or this codebase.
- *)
- let sth =
- dbh#prepare_cached "select extract (year from current_date) :: int,
- extract (week from current_date) :: int" in
- sth#execute [];
+ (* Get the current business week. *)
let year, week =
- match sth#fetch1 () with
- [ `Int year; `Int week ] -> year, week
- | _ -> assert false in
+ let date =
+ let tm = Unix.gmtime (Unix.time ()) in
+ Date.make (tm.Unix.tm_year + 1900) (tm.Unix.tm_mon + 1) tm.Unix.tm_mday
+ in
+ let year, week, _ = Date.to_business date in
+ year, week in
template#set "year" (string_of_int year);
template#set "week" (string_of_int week);
template#set "page" page;
template#set "url" url;
template#set "hash" h;
- template#set "hostname" hostname;
+ template#set "hostname" canonical_hostname;
q#template template