X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fpage.ml;h=a98e688358c070b5f1001a8ae26ca0199a51beb0;hb=eeb304015c65ccf593a77058d5db5f5a3e3b45d5;hp=d9b85ec7589f8889af5b40eaacd4ec83ae79ab33;hpb=50f72e5597bef62747f462d26cae836c7c9ee6b9;p=cocanwiki.git diff --git a/scripts/page.ml b/scripts/page.ml index d9b85ec..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.21 2004/09/24 16:30:07 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 = @@ -61,13 +63,14 @@ 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, - mailing_list + mailing_list, search_box from hosts where id = ?" in sth#execute [`Int hostid]; - let has_host_css, has_feedback_email, mailing_list = + let has_host_css, has_feedback_email, mailing_list, search_box = match sth#fetch1 () with - | [ `Bool has_host_css; `Bool has_feedback_email; `Bool mailing_list ] -> - has_host_css, has_feedback_email, mailing_list + | [ `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. *) @@ -86,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 @@ -168,6 +176,7 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user = 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;