(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: page_rss.ml,v 1.2 2004/11/02 11:05:59 rich Exp $
+ * $Id: page_rss.ml,v 1.4 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
open Cocanwiki_template
-let run r (q : cgi) (dbh : Dbi.connection) hostid {hostname = hostname} _ =
+let run r (q : cgi) dbh hostid {hostname = hostname} _ =
let template = get_template dbh hostid "page_rss.xml" in
let page = q#param "page" in
template#set "hostname" hostname;
(* Get the title and description of the page. *)
- let sth = dbh#prepare_cached "select id, title, description
- from pages
- where hostid = ? and url = ?
- and redirect is null" in
- sth#execute [`Int hostid; `String page];
+ let rows = PGSQL(dbh)
+ "select id, title, description from pages
+ where hostid = $hostid and url = $page and redirect is null" in
let pageid, title, description =
- match sth#fetch1 () with
- [ `Int id; `String title; `String description ] ->
- id, title, description
- | _ -> assert false in
+ match rows with
+ | [row] -> row
+ | _ -> assert false in
template#set "title" title;
template#set "description" description;
(* Get the sections in the live page. *)
- let sth = dbh#prepare_cached "select sectionname, content, ordering
- from contents
- where pageid = ?
- and sectionname is not null
- order by ordering" in
- sth#execute [`Int pageid];
+ let rows = PGSQL(dbh)
+ "select sectionname, content, ordering
+ from contents
+ where pageid = $pageid
+ and sectionname is not null
+ order by ordering" in
let sections =
- sth#map (function [`String sectionname; `String content; _] ->
- sectionname, content
- | _ -> assert false) in
+ List.map (fun (sectionname, content, _) -> sectionname, content) rows in
let sections =
List.map (fun (sectionname, content) ->
+ let sectionname = match sectionname with
+ | None -> "" | Some s -> s in
let content = Wikilib.xhtml_of_content dbh hostid content in
let linkname = linkname_of_sectionname sectionname in
[ "sectionname", Template.VarString sectionname;