Script for rebuilding the links table from scratch.
[cocanwiki.git] / scripts / page.ml
index 1ea4acd..a98e688 100644 (file)
@@ -1,7 +1,7 @@
 (* 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
@@ -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;