However, a Newsgroup approach allows a small about of administrative control over group scoped news postings.
A message area in the Usenet News, each newsgroup can be either 'moderated' with only postings approved by a moderator publically posted, or 'unmoderated' where all messages are distributed to the newsgroup immediately.
This module has three special newsgroups. The public newsgroup contains news items that are accessed at the site wide scope. The all_users newsgroup contains news items that show up on all newsgroups. The registered_users newsgroup contains news items that show up for all registered users.
Comments are handled by the general comments facility and are attached to news items.
create sequence newsgroup_id_sequence start with 1; create table newsgroups ( newsgroup_id integer primary key, -- if scope=all_users, this is the news for all newsgroups -- is scope=registered_users, this is the news for all registered users -- if scope=public, this is the news for the main newsgroup -- if scope=group, this is news associated with a group scope varchar(20) not null, group_id references user_groups, check ((scope='group' and group_id is not null) or (scope='public') or (scope='all_users') or (scope='registered_users')) ); create sequence news_item_id_sequence start with 100000; create table news_items ( news_item_id integer primary key, newsgroup_id references newsgroups not null, title varchar(200) not null, body clob not null, -- is the body in HTML or plain text (the default) html_p char(1) default 'f' check(html_p in ('t','f')), approval_state varchar(15) default 'unexamined' check(approval_state in ('unexamined','approved', 'disapproved')), approval_date date, approval_user references users(user_id), approval_ip_address varchar(50), release_date date not null, expiration_date date not null, creation_date date not null, creation_user not null references users(user_id), creation_ip_address varchar(50) not null );
Permissions are handled by the general permissions system, and are attached to the newsgroup rows.
This module requires that a row exists in the newsgroups table before news items can be stored for a group (or scope). The all_users, registered_users, and public newsgroups are created by default. The group newsgroups are created when a group administrator or site-wide admin attempts to add an item or set the newsgroup permissions. The default permissions for a non-existent group scope newsgroup is to allow members to view and admins to modify.
The /bboard system is better if you want to support lively discussion and archive the exchanges.
The module may also eventually support the deletion of items (and associated permissions and comments).