SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 36 (OID 536004)
+-- TOC entry 38 (OID 536004)
-- Name: pages_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 37 (OID 536021)
+-- TOC entry 39 (OID 536021)
-- Name: contents_id_seq; Type: ACL; Schema: public; Owner: rich
--
edit_anon boolean DEFAULT true NOT NULL,
create_account_anon boolean DEFAULT true NOT NULL,
theme_css text,
- feedback_email text
+ feedback_email text,
+ mailing_list boolean DEFAULT false NOT NULL
);
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 38 (OID 536371)
+-- TOC entry 40 (OID 536371)
-- Name: hosts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 39 (OID 537151)
+-- TOC entry 41 (OID 537151)
-- Name: images_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 40 (OID 537166)
+-- TOC entry 42 (OID 537166)
-- Name: files_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 41 (OID 540816)
+-- TOC entry 43 (OID 540816)
-- Name: users_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 42 (OID 542605)
+-- TOC entry 44 (OID 542605)
-- Name: contacts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 47 (OID 536388)
+-- TOC entry 36 (OID 543785)
+-- Name: mailing_lists; Type: TABLE; Schema: public; Owner: rich
+--
+
+CREATE TABLE mailing_lists (
+ hostid integer NOT NULL,
+ email text NOT NULL,
+ entry_date date DEFAULT ('now'::text)::date NOT NULL,
+ pending text,
+ opt_out text NOT NULL
+);
+
+
+--
+-- TOC entry 37 (OID 543785)
+-- Name: mailing_lists; Type: ACL; Schema: public; Owner: rich
+--
+
+REVOKE ALL ON TABLE mailing_lists FROM PUBLIC;
+GRANT SELECT ON TABLE mailing_lists TO "www-data";
+
+
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 49 (OID 536388)
-- Name: hostnames_hostid_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 48 (OID 536389)
+-- TOC entry 50 (OID 536389)
-- Name: hostnams_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 44 (OID 536419)
+-- TOC entry 46 (OID 536419)
-- Name: pages_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 49 (OID 536924)
+-- TOC entry 51 (OID 536924)
-- Name: email_notify_email_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 50 (OID 540251)
+-- TOC entry 52 (OID 540251)
-- Name: images_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 52 (OID 540252)
+-- TOC entry 54 (OID 540252)
-- Name: files_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 55 (OID 540831)
+-- TOC entry 57 (OID 540831)
-- Name: users_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 54 (OID 540946)
+-- TOC entry 56 (OID 540946)
-- Name: users_id_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 57 (OID 540970)
+-- TOC entry 59 (OID 540970)
-- Name: sitemenu_ordering_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 58 (OID 540971)
+-- TOC entry 60 (OID 540971)
-- Name: sitemenu_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 60 (OID 542626)
+-- TOC entry 62 (OID 542626)
-- Name: contact_emails_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 61 (OID 543505)
+-- TOC entry 63 (OID 543505)
-- Name: themes_theme_css_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 62 (OID 543763)
+-- TOC entry 64 (OID 543763)
-- Name: page_emails_email_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 43 (OID 536012)
+-- TOC entry 65 (OID 543795)
+-- Name: mailing_lists_email_uq; Type: INDEX; Schema: public; Owner: rich
+--
+
+CREATE UNIQUE INDEX mailing_lists_email_uq ON mailing_lists USING btree (hostid, email);
+
+
+--
+-- TOC entry 45 (OID 536012)
-- Name: pages_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 45 (OID 536027)
+-- TOC entry 47 (OID 536027)
-- Name: contents_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 46 (OID 536377)
+-- TOC entry 48 (OID 536377)
-- Name: hosts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 51 (OID 537158)
+-- TOC entry 53 (OID 537158)
-- Name: images_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 53 (OID 537173)
+-- TOC entry 55 (OID 537173)
-- Name: files_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 56 (OID 540825)
+-- TOC entry 58 (OID 540825)
-- Name: users_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 59 (OID 542611)
+-- TOC entry 61 (OID 542611)
-- Name: contacts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 67 (OID 536029)
+-- TOC entry 70 (OID 536029)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 70 (OID 536384)
+-- TOC entry 73 (OID 536384)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 68 (OID 536394)
+-- TOC entry 71 (OID 536394)
-- Name: hosts_hostname_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 63 (OID 536404)
+-- TOC entry 66 (OID 536404)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 71 (OID 536920)
+-- TOC entry 74 (OID 536920)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 72 (OID 537160)
+-- TOC entry 75 (OID 537160)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 73 (OID 537175)
+-- TOC entry 76 (OID 537175)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 64 (OID 539155)
+-- TOC entry 67 (OID 539155)
-- Name: pages_redirect_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 74 (OID 540827)
+-- TOC entry 77 (OID 540827)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 75 (OID 540837)
+-- TOC entry 78 (OID 540837)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 65 (OID 540942)
+-- TOC entry 68 (OID 540942)
-- Name: $2; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 66 (OID 540947)
+-- TOC entry 69 (OID 540947)
-- Name: pages_user_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 76 (OID 540966)
+-- TOC entry 79 (OID 540966)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 77 (OID 540972)
+-- TOC entry 80 (OID 540972)
-- Name: sitemenu_url_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 78 (OID 542613)
+-- TOC entry 81 (OID 542613)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 79 (OID 542622)
+-- TOC entry 82 (OID 542622)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 69 (OID 543506)
+-- TOC entry 72 (OID 543506)
-- Name: hosts_theme_css_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 80 (OID 543759)
+-- TOC entry 83 (OID 543759)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 81 (OID 543764)
+-- TOC entry 84 (OID 543764)
-- Name: page_emails_url_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
ADD CONSTRAINT page_emails_url_cn FOREIGN KEY (hostid, url) REFERENCES pages(hostid, url) DEFERRABLE;
+--
+-- TOC entry 85 (OID 543791)
+-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
+--
+
+ALTER TABLE ONLY mailing_lists
+ ADD CONSTRAINT "$1" FOREIGN KEY (hostid) REFERENCES hosts(id);
+
+
SET SESSION AUTHORIZATION 'postgres';
--
(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: edit_host_settings_form.ml,v 1.1 2004/09/22 12:04:28 rich Exp $
+ * $Id: edit_host_settings_form.ml,v 1.2 2004/09/24 16:30:07 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 sth =
dbh#prepare_cached
"select canonical_hostname, edit_anon, create_account_anon, theme_css,
- feedback_email
+ feedback_email, mailing_list
from hosts where id = ?" in
sth#execute [`Int hostid];
let canonical_hostname, edit_anon, create_account_anon, theme_css,
- feedback_email =
+ feedback_email, mailing_list =
match sth#fetch1 () with
[ `String canonical_hostname;
`Bool edit_anon; `Bool create_account_anon;
(`String _ | `Null) as theme_css;
- (`String _ | `Null) as feedback_email ] ->
+ (`String _ | `Null) as feedback_email;
+ `Bool mailing_list ] ->
let theme_css =
match theme_css with `String s -> s | `Null -> "" in
let feedback_email =
match feedback_email with `String s -> s | `Null -> "" in
canonical_hostname, edit_anon, create_account_anon, theme_css,
- feedback_email
+ feedback_email, mailing_list
| _ -> assert false in
template#set "canonical_hostname" canonical_hostname;
template#conditional "edit_anon" edit_anon;
template#conditional "create_account_anon" create_account_anon;
template#set "feedback_email" feedback_email;
+ template#conditional "mailing_list" mailing_list;
(* Themes table. *)
let table =
(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: host_menu.ml,v 1.1 2004/09/22 11:41:03 rich Exp $
+ * $Id: host_menu.ml,v 1.2 2004/09/24 16:30:07 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
dbh#prepare_cached
"select h.canonical_hostname, h.css is not null, h.edit_anon,
h.create_account_anon, h.theme_css is not null,
- t.name, t.description, h.feedback_email
+ t.name, t.description, h.feedback_email, h.mailing_list
from hosts h left outer join themes t on h.theme_css = t.theme_css
where h.id = ?" in
sth#execute [`Int hostid];
let canonical_hostname, has_global_css, edit_anon, create_account_anon,
has_theme_css, theme_name, theme_description, has_feedback_email,
- feedback_email =
+ feedback_email, mailing_list =
match sth#fetch1 () with
[ `String canonical_hostname; `Bool has_global_css;
`Bool edit_anon; `Bool create_account_anon; `Bool has_theme_css;
(`String _ | `Null) as theme_name;
(`String _ | `Null) as theme_description;
- (`String _ | `Null) as feedback_email ] ->
+ (`String _ | `Null) as feedback_email;
+ `Bool mailing_list ] ->
let theme_name =
match theme_name with `String s -> s | `Null -> "" in
let theme_description =
| `Null -> "", false in
canonical_hostname, has_global_css, edit_anon, create_account_anon,
has_theme_css, theme_name, theme_description, has_feedback_email,
- feedback_email
+ feedback_email, mailing_list
| _ -> assert false in
template#set "canonical_hostname" canonical_hostname;
template#set "theme_description" theme_description;
template#conditional "has_feedback_email" has_feedback_email;
template#set "feedback_email" feedback_email;
+ template#conditional "mailing_list" mailing_list;
q#template template