(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: page.ml,v 1.20 2004/09/24 10:44:55 rich Exp $
+ * $Id: page.ml,v 1.24 2004/09/27 18:08:02 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
]
let split_words = Pcre.regexp "\\W+"
+let split_qs_re = Pcre.regexp "\\?"
+
let xhtml_re = Pcre.regexp "<.*?>|[^<>]+"
let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user =
(* Host-specific fields. *)
let sth = dbh#prepare_cached "select css is not null,
- feedback_email is not null
+ feedback_email is not null,
+ mailing_list, search_box
from hosts where id = ?" in
sth#execute [`Int hostid];
- let has_host_css, has_feedback_email =
+ let has_host_css, has_feedback_email, mailing_list, search_box =
match sth#fetch1 () with
- | [ `Bool has_host_css; `Bool has_feedback_email ] ->
- has_host_css, has_feedback_email
+ | [ `Bool has_host_css; `Bool has_feedback_email; `Bool mailing_list;
+ `Bool search_box ] ->
+ has_host_css, has_feedback_email, mailing_list, search_box
| _ -> assert false in
(* Can the user edit? Manage users? etc. *)
let search_terms_from_referer referer =
let _, argnames =
List.find (fun (rex, _) -> Pcre.pmatch ~rex referer) search_engines in
- let _, _, args = Cocanwiki_cgi_args.parse referer in
+ let url, qs =
+ match Pcre.split ~rex:split_qs_re ~max:2 referer with
+ | [url] | [url;""] -> url, ""
+ | [url;qs] -> url, qs
+ | _ -> assert false in
+ let args = Cgi_args.parse qs in
let argname =
List.find (fun argname -> List.mem_assoc argname args) argnames in
let search_string = List.assoc argname args in
t#conditional "has_page_css" has_page_css;
t#conditional "has_feedback_email" has_feedback_email;
+ t#conditional "mailing_list" mailing_list;
+ t#conditional "search_box" search_box;
t#conditional "can_edit" can_edit;
t#conditional "can_manage_users" can_manage_users;