(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: cocanwiki_ext_calendar.ml,v 1.2 2005/04/02 17:30:54 rich Exp $
+ * $Id: cocanwiki_ext_calendar.ml,v 1.3 2006/03/27 16:43:44 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
else
[]
-let extension (dbh : Dbi.connection) hostid url =
+let extension dbh hostid url =
(* Validate a date in the form "yyyy[/mm[/dd]]". Returns a (yyyy, mm, dd)
* tuple with missing fields set to 0. If the string doesn't parse or the
* date isn't valid, then raises Not_found.
(* From the links table, find all links to this page, or sub-calendar pages.
* This query overselects. We then filter the real pages in OCaml.
*)
- let sth =
- dbh#prepare_cached
+ let rows =
+ let patt = url ^ "%" in
+ PGSQL(dbh)
"select li.from_url, p.title, li.to_url
from links li, pages p
- where li.hostid = ? and li.to_url like ?
+ where li.hostid = $hostid and li.to_url like $patt
and li.hostid = p.hostid and li.from_url = p.url" in
- sth#execute [`Int hostid; `String (url ^ "%")];
let pages =
let results =
- sth#map (function [`String from_url; `String title; `String to_url] ->
- from_url, title, to_url
- | _ -> assert false) in
+ List.map (fun (from_url, title, to_url) ->
+ from_url, title, to_url) rows in
List.filter_map
(fun (from_url, title, to_url) ->
try let date = valid_date to_url in Some (date, (title, from_url))
let template = year_1m_template in
template#set "yyyy" (string_of_int yyyy);
template#set "mm" (sprintf "%02d" mm);
- template#set "month_name" (long_month mm);
+ template#set "month_name"
+ (!Printer.month_name (Date.month_of_int mm));
let dow = Date.day_of_week (Date.make yyyy mm 1) in
let max_dd = Date.days_in_month (Date.make yyyy mm 1) in
let dd = ref (1 - int_of_day_of_week dow) in
| Some (yyyy, mm, 0) -> (* Month view. *)
let template = month_template in
- template#set "month_name" (long_month mm);
+ template#set "month_name" (!Printer.month_name (Date.month_of_int mm));
template#set "yyyy" (string_of_int yyyy);
template#set "mm" (sprintf "%02d" mm);
template#set "mm" (sprintf "%02d" mm);
template#set "dd" (sprintf "%02d" dd);
- template#set "month_name" (long_month mm);
+ template#set "month_name" (!Printer.month_name (Date.month_of_int mm));
let t = Date.make yyyy mm dd in
let dow = Date.day_of_week t in
- template#set "short_weekday" (short_weekday dow);
+ template#set "short_weekday" (Printer.short_name_of_day dow);
let oneday = Date.Period.day 1 in
let prev_t = Date.rem t oneday in