Forums are a way to organize discussions about relevant project issues between project members. ]project-open[ forums implement the traditional discussion forum, but also utilizes the forum for task assignation, incident notifications and general news postings.
The datastructures for ]po[ Forums really look like the ones for a mail reader with topics (the messages) and a mapping between topics and users (im_forum_topic_user_map) to store whether a user has read a topic or filed the topic in one of his folders.
create table im_forum_topics (
-- administrative information
topic_id integer
constraint im_forum_topics_pk primary key,
topic_name varchar(200),
topic_path varchar(200),
object_id integer not null
constraint im_forum_topics_object_fk
references acs_objects,
parent_id integer
constraint im_forum_topics_parent_fk
references im_forum_topics,
topic_type_id integer not null
constraint im_forum_topics_type_fk
references im_categories,
topic_status_id integer
constraint im_forum_topics_status_fk
references im_categories,
posting_date date,
owner_id integer not null
constraint im_forum_topics_owner_fk
references users,
scope varchar(20) default 'group'
constraint im_forum_topics_scope_ck
check (scope in ('pm', 'group','public','client','staff','not_client')),
-- message content
subject varchar(200) not null,
message clob,
-- task and incident specific fields
priority number(1),
due_date date,
asignee_id integer
constraint im_forum_topics_asignee_fk
references users
);
create table im_forum_topic_user_map (
topic_id integer
constraint im_forum_topics_um_topic_fk
references im_forum_topics,
user_id integer
constraint im_forum_topics_um_user_fk
references users,
-- read_p in ('f' or NULL) indicates "New" items
read_p char(1) default 't'
constraint im_forum_topics_um_read_ck
check (read_p in ('t','f')),
-- folder_id in (0 or NULL) indicates "Inbox" items
-- folder_id = 1 indicates "Deleted" items
-- folder_id for users start with 10
folder_id integer default 0
constraint im_forum_topics_um_folder_fk
references im_forum_folders,
receive_updates varchar(20) default 'major'
constraint im_forum_topics_um_rec_ck check (
receive_updates in ('all','none','major')),
constraint im_forum_topics_um_rec_pk
primary key (topic_id, user_id)
);
create table im_forum_folders (
folder_id integer
constraint im_forum_folders_pk
primary key,
user_id integer
constraint im_forum_folders_user_fk
references users,
parent_id integer
constraint im_forum_folders_parent_fk
references im_forum_folders,
folder_name varchar(200)
);
Related Help
Related Tutorials
Related Object Types
Related Packages
Related Modules
Calle Aprestadora 19, 12o-2a
08902 Hospitalet de Llobregat (Barcelona)
Spain
Tel Europe: +34 609 953 751
Tel US: +1 415 200 2465
Mail: info@project-open.com