SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 31 (OID 536004)
+-- TOC entry 34 (OID 536004)
-- Name: pages_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 32 (OID 536021)
+-- TOC entry 35 (OID 536021)
-- Name: contents_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 33 (OID 536371)
+-- TOC entry 36 (OID 536371)
-- Name: hosts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 34 (OID 537151)
+-- TOC entry 37 (OID 537151)
-- Name: images_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 35 (OID 537166)
+-- TOC entry 38 (OID 537166)
-- Name: files_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 36 (OID 540816)
+-- TOC entry 39 (OID 540816)
-- Name: users_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 37 (OID 542605)
+-- TOC entry 40 (OID 542605)
-- Name: contacts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 42 (OID 536388)
+-- TOC entry 31 (OID 543592)
+-- Name: server_settings; Type: TABLE; Schema: public; Owner: rich
+--
+
+CREATE TABLE server_settings (
+ "version" integer NOT NULL
+);
+
+
+--
+-- TOC entry 33 (OID 543592)
+-- Name: server_settings; Type: ACL; Schema: public; Owner: rich
+--
+
+REVOKE ALL ON TABLE server_settings FROM PUBLIC;
+GRANT SELECT ON TABLE server_settings TO "www-data";
+
+
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 45 (OID 536388)
-- Name: hostnames_hostid_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 43 (OID 536389)
+-- TOC entry 46 (OID 536389)
-- Name: hostnams_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 39 (OID 536419)
+-- TOC entry 42 (OID 536419)
-- Name: pages_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 44 (OID 536924)
+-- TOC entry 47 (OID 536924)
-- Name: email_notify_email_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 45 (OID 540251)
+-- TOC entry 48 (OID 540251)
-- Name: images_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 47 (OID 540252)
+-- TOC entry 50 (OID 540252)
-- Name: files_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 50 (OID 540831)
+-- TOC entry 53 (OID 540831)
-- Name: users_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 49 (OID 540946)
+-- TOC entry 52 (OID 540946)
-- Name: users_id_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 52 (OID 540970)
+-- TOC entry 55 (OID 540970)
-- Name: sitemenu_ordering_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 53 (OID 540971)
+-- TOC entry 56 (OID 540971)
-- Name: sitemenu_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 55 (OID 542626)
+-- TOC entry 58 (OID 542626)
-- Name: contact_emails_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 56 (OID 543505)
+-- TOC entry 59 (OID 543505)
-- Name: themes_theme_css_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 38 (OID 536012)
+-- TOC entry 41 (OID 536012)
-- Name: pages_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 40 (OID 536027)
+-- TOC entry 43 (OID 536027)
-- Name: contents_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 41 (OID 536377)
+-- TOC entry 44 (OID 536377)
-- Name: hosts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 46 (OID 537158)
+-- TOC entry 49 (OID 537158)
-- Name: images_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 48 (OID 537173)
+-- TOC entry 51 (OID 537173)
-- Name: files_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 51 (OID 540825)
+-- TOC entry 54 (OID 540825)
-- Name: users_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 54 (OID 542611)
+-- TOC entry 57 (OID 542611)
-- Name: contacts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 61 (OID 536029)
+-- TOC entry 64 (OID 536029)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 64 (OID 536384)
+-- TOC entry 67 (OID 536384)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 62 (OID 536394)
+-- TOC entry 65 (OID 536394)
-- Name: hosts_hostname_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 57 (OID 536404)
+-- TOC entry 60 (OID 536404)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 65 (OID 536920)
+-- TOC entry 68 (OID 536920)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 66 (OID 537160)
+-- TOC entry 69 (OID 537160)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 67 (OID 537175)
+-- TOC entry 70 (OID 537175)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 58 (OID 539155)
+-- TOC entry 61 (OID 539155)
-- Name: pages_redirect_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 68 (OID 540827)
+-- TOC entry 71 (OID 540827)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 69 (OID 540837)
+-- TOC entry 72 (OID 540837)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 59 (OID 540942)
+-- TOC entry 62 (OID 540942)
-- Name: $2; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 60 (OID 540947)
+-- TOC entry 63 (OID 540947)
-- Name: pages_user_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 70 (OID 540966)
+-- TOC entry 73 (OID 540966)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 71 (OID 540972)
+-- TOC entry 74 (OID 540972)
-- Name: sitemenu_url_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 72 (OID 542613)
+-- TOC entry 75 (OID 542613)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 73 (OID 542622)
+-- TOC entry 76 (OID 542622)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 63 (OID 543506)
+-- TOC entry 66 (OID 543506)
-- Name: hosts_theme_css_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
COMMENT ON SCHEMA public IS 'Standard public namespace';
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 32 (OID 543592)
+-- Name: TABLE server_settings; Type: COMMENT; Schema: public; Owner: rich
+--
+
+COMMENT ON TABLE server_settings IS 'This table contains global settings for the server. There should be only one row in this table. If you modify any setting, you must restart the webserver for the change to take effect. The "version" field is intended to be some sort of database version, but is currently unused.';
+
+
(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: cocanwiki.ml,v 1.9 2004/09/22 10:19:26 rich Exp $
+ * $Id: cocanwiki.ml,v 1.10 2004/09/23 11:51:17 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 _get_dbh r = Pool.get r "cocanwiki"
+(* Server-wide settings.
+ *
+ * These are stored in a single row in the database in the table
+ * 'server_settings'. You must restart the server if you change
+ * this row.
+ *
+ * It's not possible to read these at server start-up time because the
+ * Apache server is still running as 'root' and will not normally be
+ * allowed to access the database. We thus read them at the earliest
+ * opportunity, in a request context, and cache the results.
+ *)
+let server_settings_version =
+ let settings = ref None in
+ let get_settings (dbh : Dbi.connection) =
+ let sth = dbh#prepare "select version from server_settings" in
+ sth#execute [];
+ let s =
+ match sth#fetch1 () with
+ | [ `Int version ] -> version
+ | _ -> assert false in
+ sth#finish ();
+ settings := Some s;
+ s
+ in
+
+ let server_settings_version dbh =
+ let (version) =
+ match !settings with
+ None -> get_settings dbh
+ | Some settings -> settings in
+ version
+ in
+
+ server_settings_version
+
(* The [CgiExit] exception should be folded back into the base
* mod_caml code at some point. It just causes the 'run' function to
* return at that point safely. (XXX)