(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: cocanwiki_template.ml,v 1.5 2005/11/24 14:54:15 rich Exp $
+ * $Id: cocanwiki_template.ml,v 1.6 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
Hashtbl.replace cache path (template, mtime);
template
-let get_template ?page (dbh : Dbi.connection) hostid filename =
+let get_template ?page dbh hostid filename =
let template = _get_template filename in
- if hostid > 0 then (
+ if hostid > 0l then (
(* Get standard fields concerning this host from the database. *)
- let sth =
- dbh#prepare_cached
+ let rows =
+ PGSQL(dbh) "nullable-results"
"select h.theme_css, p.name, p.url, h.search_box,
h.brand, h.brand_tagline, h.brand_description,
h.pagebug
from hosts h left outer join powered_by p on h.powered_by = p.id
- where h.id = ?" in
- sth#execute [`Int hostid];
+ where h.id = $hostid" in
let theme_css, powered_by_name, powered_by_url, search_box,
brand, brand_tagline, brand_description, pagebug =
- match sth#fetch1 () with
- | [ a; b; c; d; e; f; g; h] -> a, b, c, d, e, f, g, h
+ match rows with
+ | [ row ] -> row
| _ -> assert false in
let theme_css =
match theme_css with
- | `Null -> "/_css/standard.css"
- | `String file -> file
- | _ -> assert false in
+ | None -> "/_css/standard.css"
+ | Some file -> file in
let powered_by_name, powered_by_url =
match powered_by_name, powered_by_url with
- | `Null, `Null ->
+ | None, None ->
let url = "http://sandbox.merjis.com/" in
let name = Cocanwiki_version.package ^ " " ^
Cocanwiki_version.version in
name, url
- | `String name, `String url -> name, url
+ | Some name, Some url -> name, url
| _ -> assert false in
- let search_box = match search_box with `Bool b -> b | _ -> assert false in
-
let branding, brand,
has_brand_tagline, brand_tagline,
has_brand_description, brand_description =
match brand with
- | `Null -> false, "", false, "", false, ""
- | `String brand ->
+ | None -> false, "", false, "", false, ""
+ | Some brand ->
let has_brand_tagline, brand_tagline =
match brand_tagline with
- | `Null -> false, ""
- | `String s -> true, s
- | _ -> assert false in
+ | None -> false, ""
+ | Some s -> true, s in
let has_brand_description, brand_description =
match brand_description with
- | `Null -> false, ""
- | `String s -> true, s
- | _ -> assert false in
+ | None -> false, ""
+ | Some s -> true, s in
true, brand,
has_brand_tagline, brand_tagline,
- has_brand_description, brand_description
- | _ -> assert false in
+ has_brand_description, brand_description in
let has_pagebug, pagebug =
match pagebug with
- | `Null -> false, ""
- | `String pagebug -> true, pagebug
- | _ -> assert false in
+ | None -> false, ""
+ | Some pagebug -> true, pagebug in
+
+ let search_box = match search_box with Some b -> b | _ -> assert false in
template#set "theme_css" theme_css;
template#set "powered_by_name" powered_by_name;
template#set "pagebug" pagebug;
(* Site menu. *)
- let sth = dbh#prepare_cached "select url, label, ordering from sitemenu
- where hostid = ? order by ordering" in
- sth#execute [`Int hostid];
+ let rows = PGSQL(dbh)
+ "select url, label, ordering from sitemenu
+ where hostid = hostid order by ordering" in
let is_homepage =
match page with
| _ -> false in
template#conditional "is_homepage" is_homepage;
- let table = sth#map (function [`String url; `String label; _] ->
- let is_linked =
- match page with
- | None -> true
- | Some page when page = url -> false
- | _ -> true in
- let id = id_of_url url in
- [ "url", Template.VarString url;
- "label", Template.VarString label;
- "is_linked", Template.VarConditional is_linked;
- "id", Template.VarString id ]
- | _ -> assert false) in
+ let table = List.map
+ (fun (url, label, _) ->
+ let is_linked =
+ match page with
+ | None -> true
+ | Some page when page = url -> false
+ | _ -> true in
+ let id = id_of_url url in
+ [ "url", Template.VarString url;
+ "label", Template.VarString label;
+ "is_linked", Template.VarConditional is_linked;
+ "id", Template.VarString id ]
+ ) rows in
template#table "sitemenu" table;
)