Scripts updated to use new PG interface.
[cocanwiki.git] / scripts / stats.ml
index e92d182..b7ddab7 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: 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
@@ -28,7 +28,7 @@ open Cocanwiki
 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
@@ -41,20 +41,14 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
 
   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);
@@ -68,7 +62,7 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid { hostname = hostname } _ =
   template#set "page" page;
   template#set "url" url;
   template#set "hash" h;
-  template#set "hostname" hostname;
+  template#set "hostname" canonical_hostname;
 
   q#template template