X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fpage.ml;h=a98e688358c070b5f1001a8ae26ca0199a51beb0;hb=eeb304015c65ccf593a77058d5db5f5a3e3b45d5;hp=1ea4acde5fe3de1621c7c71ed1e3408d5115438b;hpb=3f36aa55afe2e7ddf3054d019cd35750071f2163;p=cocanwiki.git diff --git a/scripts/page.ml b/scripts/page.ml index 1ea4acd..a98e688 100644 --- a/scripts/page.ml +++ b/scripts/page.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * 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 @@ -49,6 +49,8 @@ let search_engines = [ ] 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 = @@ -60,13 +62,15 @@ 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. *) @@ -85,7 +89,12 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user = 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 @@ -166,6 +175,8 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user = 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;