--
-- The Forums Package
--
-- @author gwong@orchardlabs.com,ben@openforce.biz
-- @creation-date 2002-05-16
--
-- This code is newly concocted by Ben, but with heavy concepts and heavy code
-- chunks lifted from Gilbert. Thanks Orchard Labs.
--
-- privileges
begin;
-- The standard privilege 'admin' on a package allows a user to
-- create forums (enforced by URL).
-- The standard privilege 'create' on a forum allows a user to
-- create new threads.
-- The standard privilege 'write' on a message allows a user to
-- post a follow up message.
-- forum_moderate lets us grant moderation without granting full admin
select acs_privilege__create_privilege('forum_moderate',null,null);
select acs_privilege__add_child('admin','forum_moderate');
select acs_privilege__add_child('forum_moderate','create');
select acs_privilege__add_child('forum_moderate','delete');
select acs_privilege__add_child('forum_moderate','read');
select acs_privilege__add_child('forum_moderate','write');
--return null;
end;
create table forums_forums (
forum_id integer
constraint forums_forum_id_nn
not null
constraint forums_forum_id_fk
references acs_objects (object_id)
constraint forums_forum_id_pk
primary key,
name varchar(200)
constraint forums_name_nn
not null,
charter text,
presentation_type varchar(100)
constraint forums_presentation_type_nn
not null
constraint forums_presentation_type_ck
check (presentation_type in ('flat','threaded')),
posting_policy varchar(100)
constraint forums_posting_policy_nn
not null
constraint forums_posting_policy_ck
check (posting_policy in ('open','moderated','closed')),
max_child_sortkey varbit,
enabled_p boolean
default true
constraint forums_enabled_p_nn
not null,
new_questions_allowed_p boolean
default true
not null,
anonymous_allowed_p boolean
default false
not null,
attachments_allowed_p boolean
default true
not null,
package_id integer
constraint forums_package_id_nn
not null,
thread_count integer default 0,
approved_thread_count integer default 0,
forums_forums integer default 0,
last_post timestamptz
);
CREATE INDEX forums_forums_pkg_enable_idx
ON forums_forums
USING btree
(package_id, enabled_p);
create view forums_forums_enabled
as
select forum_id,
name,
charter,
presentation_type,
posting_policy,
max_child_sortkey,
enabled_p,
new_questions_allowed_p,
anonymous_allowed_p,
attachments_allowed_p,
package_id,
thread_count,
approved_thread_count,
forums_forums,
last_post
from forums_forums
where enabled_p = true;
-- procedure inline_0/0
--
CREATE OR REPLACE FUNCTION inline_0(
) RETURNS integer AS $$
BEGIN
perform acs_object_type__create_type(
'forums_forum',
'Forums Forum',
'Forums Forums',
'acs_object',
'forums_forums',
'forum_id',
'forums_forum',
'f',
null,
'forums_forum__name'
);
return null;
END;
$$ LANGUAGE plpgsql;
select inline_0();
drop function inline_0();