/bboard system

part of the ArsDigita Community System by Philip Greenspun
The discussion software supports the following kinds of user interfaces, all of which query and insert to the same bboard table. Currently the system supports:

File upload

Users can upload one file in association with any message. This was developed to facilitate photo uploading. There is only one extra table defined for

create sequence bboard_upload_id_sequence;

create table bboard_uploaded_files (
	bboard_upload_id	integer primary key,
	msg_id			not null references bboard,
	file_type		varchar(100),	-- e.g., "photo"
	file_extension		varchar(50), 	-- e.g., "jpg"
	-- can be useful when deciding whether to present all of something
	n_bytes			integer,
	-- generally the filename will be "*msg_id*-*upload_id*.extension"
	-- where the extension was the originally provided (so 
	-- that ns_guesstype will work)
	filename_stub		varchar(200) not null,
	-- fields that only make sense if this is an image
	caption			varchar(4000),
	-- will be null if the photo was small to begin with
	thumbnail_stub		varchar(200),
	original_width		integer,
	original_height		integer

Permissions Model

[The bboard module was upgraded around time of version 2.1 to use the comon ACS user/groups administrative API]

Goal: To allow per-group bboards, and to use the new ACS permissions system to control user and administrative access to the bboards.

Each bboard topic is now associated with an administrative group, created using ad_administration_group_add, with "bboard" as the module and the topic_id as the sub-module. Any users who have been added to the corresponding administration group by ad_administration_group_user_add will have administrative access to the topic. They can access the bboard/admin-xxx pages, and moderate discussions on the topic.

Public and Private Bboards

All permissioning is done at the topic level. A message inherits its private/public status from the topic of which it is part. A topic has "read-access" and "write-access" permissions.
Read-access := any | public | group

 any    :=  topic may be viewed by any user of the system
 public :=  topic may only be view by a registered user of the system
 group  :=  topic may only be viewed by members of the topic's group(s)

Write-access :=  public | group

 public := any registered user may post a message or reply
 group  := only members of the topic's group(s) may post or reply to messages

Urgent requests

Future Versions