|
Index: openacs-4/packages/file-storage/www/folder-contents.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/Attic/folder-contents.adp,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/file-storage/www/folder-contents.adp 5 Nov 2002 17:19:59 -0000 1.4
+++ openacs-4/packages/file-storage/www/folder-contents.adp 30 Nov 2002 17:34:29 -0000 1.5
@@ -8,6 +8,7 @@
|
I#file-storage.Not_i##file-storage.lt_ncluding_items_from_s#
+ (
#file-storage.exclude#
Index: openacs-4/packages/forums/forums.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/forums.info,v
diff -u -N -r1.13 -r1.14
--- openacs-4/packages/forums/forums.info 23 Sep 2002 23:32:17 -0000 1.13
+++ openacs-4/packages/forums/forums.info 30 Nov 2002 17:34:39 -0000 1.14
@@ -7,7 +7,7 @@
f
f
-
+
oracle
postgresql
@@ -35,6 +35,7 @@
+
@@ -49,11 +50,12 @@
+
-
-
+
+
@@ -107,6 +109,8 @@
+
+
@@ -116,9 +120,9 @@
-
-
+
+
Index: openacs-4/packages/forums/sql/oracle/forums-forums-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/oracle/forums-forums-create.sql,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/forums/sql/oracle/forums-forums-create.sql 24 Jun 2002 22:37:52 -0000 1.3
+++ openacs-4/packages/forums/sql/oracle/forums-forums-create.sql 30 Nov 2002 17:34:49 -0000 1.4
@@ -68,7 +68,8 @@
check (enabled_p in ('t','f')),
package_id integer
constraint forums_package_id_nn
- not null
+ not null,
+ last_post date
);
create view forums_forums_enabled
Index: openacs-4/packages/forums/sql/oracle/forums-forums-package-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/oracle/forums-forums-package-create.sql,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/forums/sql/oracle/forums-forums-package-create.sql 3 Jun 2002 23:58:45 -0000 1.3
+++ openacs-4/packages/forums/sql/oracle/forums-forums-package-create.sql 30 Nov 2002 17:34:49 -0000 1.4
@@ -73,8 +73,6 @@
values
(v_forum_id, name, charter, presentation_type, posting_policy, package_id);
- acs_object.update_last_modified(nvl(context_id, package_id));
-
return v_forum_id;
end new;
Index: openacs-4/packages/forums/sql/oracle/forums-messages-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/oracle/forums-messages-create.sql,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/forums/sql/oracle/forums-messages-create.sql 24 Jun 2002 22:37:52 -0000 1.3
+++ openacs-4/packages/forums/sql/oracle/forums-messages-create.sql 30 Nov 2002 17:34:49 -0000 1.4
@@ -50,6 +50,7 @@
check (open_p in ('t','f')),
tree_sortkey raw(240),
max_child_sortkey raw(100),
+ last_child_post date,
constraint forums_mess_sk_forum_un
unique (tree_sortkey, forum_id)
);
Index: openacs-4/packages/forums/sql/oracle/forums-messages-package-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/oracle/forums-messages-package-create.sql,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/forums/sql/oracle/forums-messages-package-create.sql 3 Jun 2002 23:58:45 -0000 1.3
+++ openacs-4/packages/forums/sql/oracle/forums-messages-package-create.sql 30 Nov 2002 17:34:49 -0000 1.4
@@ -80,9 +80,11 @@
) return forums_messages.message_id%TYPE
is
v_message_id acs_objects.object_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
v_forum_policy forums_forums.posting_policy%TYPE;
v_state forums_messages.state%TYPE;
begin
+
v_message_id := acs_object.new(
object_id => message_id,
object_type => object_type,
@@ -113,8 +115,21 @@
values
(v_message_id, forum_id, subject, content, html_p, user_id, posting_date, parent_id, v_state);
- acs_object.update_last_modified(forum_id);
+ -- DRB: Can't use root_message_id() here because it triggers a "mutating table" error
+ select tree_sortkey into v_sortkey
+ from forums_messages
+ where message_id = v_message_id;
+
+ update forums_forums
+ set last_post = posting_date
+ where forum_id = forums_message.new.forum_id;
+
+ update forums_messages
+ set last_child_post = posting_date
+ where forum_id = forums_message.new.forum_id
+ and tree_sortkey = tree.ancestor_key(v_sortkey, 1);
+
return v_message_id;
end new;
Index: openacs-4/packages/forums/sql/oracle/upgrade-0.1d-0.2d.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/oracle/Attic/upgrade-0.1d-0.2d.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/forums/sql/oracle/upgrade-0.1d-0.2d.sql 30 Nov 2002 17:34:49 -0000 1.2
@@ -0,0 +1,328 @@
+alter table forums_forums add (last_post date);
+alter table forums_messages add (last_child_post date);
+
+declare
+ v_date date;
+begin
+
+ for row in (select forum_id
+ from forums_forums)
+ loop
+
+ select last_modified into v_date
+ from acs_objects
+ where object_id = row.forum_id;
+
+ update forums_forums
+ set last_post = v_date
+ where forum_id = row.forum_id;
+
+ end loop;
+
+ for row in (select message_id
+ from forums_messages
+ where parent_id is null)
+ loop
+
+ -- forums 0.1d did not properly set the last_modified field of the object
+ -- row associated with the root message of a thread, so we need to calculate
+ -- it here.
+
+ select max(o.last_modified) into v_date
+ from acs_objects o, forums_messages fm
+ where forums_message.root_message_id(fm.message_id) = row.message_id
+ and object_id = fm.message_id;
+
+ update forums_messages
+ set last_child_post = v_date
+ where message_id = row.message_id;
+
+ end loop;
+
+end;
+/
+show errors;
+
+drop view forums_messages_approved;
+create view forums_messages_approved
+as
+ select *
+ from forums_messages
+ where state = 'approved';
+
+drop view forums_messages_pending;
+create view forums_messages_pending
+as
+ select *
+ from forums_messages
+ where state= 'pending';
+
+drop view forums_forums_enabled;
+create view forums_forums_enabled
+as
+ select *
+ from forums_forums
+ where enabled_p = 't';
+
+create or replace package body forums_message
+as
+
+ function new (
+ message_id in forums_messages.message_id%TYPE default null,
+ object_type in acs_objects.object_type%TYPE default 'forums_message',
+ forum_id in forums_messages.forum_id%TYPE,
+ subject in forums_messages.subject%TYPE,
+ content in varchar,
+ html_p in forums_messages.html_p%TYPE default 'f',
+ user_id in forums_messages.user_id%TYPE,
+ posting_date in forums_messages.posting_date%TYPE default sysdate,
+ state in forums_messages.state%TYPE default null,
+ parent_id in forums_messages.parent_id%TYPE default null,
+ creation_date in acs_objects.creation_date%TYPE default sysdate,
+ creation_user in acs_objects.creation_user%TYPE,
+ creation_ip in acs_objects.creation_ip%TYPE,
+ context_id in acs_objects.context_id%TYPE default null
+ ) return forums_messages.message_id%TYPE
+ is
+ v_message_id acs_objects.object_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
+ v_forum_policy forums_forums.posting_policy%TYPE;
+ v_state forums_messages.state%TYPE;
+ begin
+
+ v_message_id := acs_object.new(
+ object_id => message_id,
+ object_type => object_type,
+ creation_date => creation_date,
+ creation_user => creation_user,
+ creation_ip => creation_ip,
+ context_id => nvl(context_id, forum_id)
+ );
+
+ if state is null
+ then
+ select posting_policy
+ into v_forum_policy
+ from forums_forums
+ where forum_id= new.forum_id;
+
+ if v_forum_policy = 'moderated' then
+ v_state := 'pending';
+ else
+ v_state := 'approved';
+ end if;
+ else
+ v_state := state;
+ end if;
+
+ insert into forums_messages
+ (message_id, forum_id, subject, content, html_p, user_id, posting_date, parent_id, state)
+ values
+ (v_message_id, forum_id, subject, content, html_p, user_id, posting_date, parent_id, v_state);
+
+ -- DRB: Can't use root_message_id() here because it triggers a "mutating table" error
+
+ select tree_sortkey into v_sortkey
+ from forums_messages
+ where message_id = v_message_id;
+
+ update forums_forums
+ set last_post = posting_date
+ where forum_id = forums_message.new.forum_id;
+
+ update forums_messages
+ set last_child_post = posting_date
+ where forum_id = forums_message.new.forum_id
+ and tree_sortkey = tree.ancestor_key(v_sortkey, 1);
+
+ return v_message_id;
+ end new;
+
+ function root_message_id (
+ message_id in forums_messages.message_id%TYPE
+ ) return forums_messages.message_id%TYPE
+ is
+ v_message_id forums_messages.message_id%TYPE;
+ v_forum_id forums_messages.forum_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
+ begin
+ select forum_id, tree_sortkey
+ into v_forum_id, v_sortkey
+ from forums_messages
+ where message_id = root_message_id.message_id;
+
+ select message_id
+ into v_message_id
+ from forums_messages
+ where forum_id = v_forum_id
+ and tree_sortkey = tree.ancestor_key(v_sortkey, 1);
+
+ return v_message_id;
+ end root_message_id;
+
+ procedure thread_open (
+ message_id in forums_messages.message_id%TYPE
+ )
+ is
+ v_forum_id forums_messages.forum_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
+ begin
+ select forum_id, tree_sortkey
+ into v_forum_id, v_sortkey
+ from forums_messages
+ where message_id = thread_open.message_id;
+
+ update forums_messages
+ set open_p = 't'
+ where tree_sortkey between tree.left(v_sortkey) and tree.right(v_sortkey)
+ and forum_id = v_forum_id;
+
+ update forums_messages
+ set open_p = 't'
+ where message_id = thread_open.message_id;
+ end thread_open;
+
+ procedure thread_close (
+ message_id in forums_messages.message_id%TYPE
+ )
+ is
+ v_forum_id forums_messages.forum_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
+ begin
+ select forum_id, tree_sortkey
+ into v_forum_id, v_sortkey
+ from forums_messages
+ where message_id = thread_close.message_id;
+
+ update forums_messages
+ set open_p = 'f'
+ where tree_sortkey between tree.left(v_sortkey) and tree.right(v_sortkey)
+ and forum_id = v_forum_id;
+
+ update forums_messages
+ set open_p = 'f'
+ where message_id = thread_close.message_id;
+ end thread_close;
+
+ procedure delete (
+ message_id in forums_messages.message_id%TYPE
+ )
+ is
+ begin
+ acs_object.delete(message_id);
+ end delete;
+
+ procedure delete_thread (
+ message_id in forums_messages.message_id%TYPE
+ )
+ is
+ v_forum_id forums_messages.forum_id%TYPE;
+ v_sortkey forums_messages.tree_sortkey%TYPE;
+ v_message forums_messages%ROWTYPE;
+ begin
+ select forum_id, tree_sortkey
+ into v_forum_id, v_sortkey
+ from forums_messages
+ where message_id = delete_thread.message_id;
+
+ -- if it's already deleted
+ if SQL%NOTFOUND then
+ return;
+ end if;
+
+ -- delete all children
+ -- order by tree_sortkey desc to guarantee
+ -- that we never delete a parent before its child
+ -- sortkeys are beautiful
+ for v_message in (select *
+ from forums_messages
+ where forum_id = v_forum_id
+ and tree_sortkey between tree.left(v_sortkey) and tree.right(v_sortkey)
+ order by tree_sortkey desc)
+ loop
+ forums_message.delete(v_message.message_id);
+ end loop;
+
+ -- delete the message itself
+ forums_message.delete(delete_thread.message_id);
+ end delete_thread;
+
+ function name (
+ message_id in forums_messages.message_id%TYPE
+ ) return varchar
+ is
+ v_name forums_messages.subject%TYPE;
+ begin
+ select subject
+ into v_name
+ from forums_messages
+ where message_id = forums_message.name.message_id;
+
+ return v_name;
+ end name;
+
+end forums_message;
+/
+show errors
+
+create or replace package body forums_forum
+as
+
+ function new (
+ forum_id in forums_forums.forum_id%TYPE default null,
+ object_type in acs_objects.object_type%TYPE default 'forums_forum',
+ name in forums_forums.name%TYPE,
+ charter in forums_forums.charter%TYPE default null,
+ presentation_type in forums_forums.presentation_type%TYPE,
+ posting_policy in forums_forums.posting_policy%TYPE,
+ package_id in forums_forums.package_id%TYPE,
+ creation_date in acs_objects.creation_date%TYPE default sysdate,
+ creation_user in acs_objects.creation_user%TYPE,
+ creation_ip in acs_objects.creation_ip%TYPE,
+ context_id in acs_objects.context_id%TYPE default null
+ ) return forums_forums.forum_id%TYPE
+ is
+ v_forum_id forums_forums.forum_id%TYPE;
+ begin
+ v_forum_id := acs_object.new(
+ object_id => forum_id,
+ object_type => object_type,
+ creation_date => creation_date,
+ creation_user => creation_user,
+ creation_ip => creation_ip,
+ context_id => nvl(context_id, package_id)
+ );
+
+ insert into forums_forums
+ (forum_id, name, charter, presentation_type, posting_policy, package_id)
+ values
+ (v_forum_id, name, charter, presentation_type, posting_policy, package_id);
+
+ return v_forum_id;
+ end new;
+
+ function name (
+ forum_id in forums_forums.forum_id%TYPE
+ ) return varchar
+ is
+ v_name forums_forums.name%TYPE;
+ begin
+ select name
+ into v_name
+ from forums_forums
+ where forum_id = name.forum_id;
+
+ return v_name;
+ end name;
+
+ procedure delete (
+ forum_id in forums_forums.forum_id%TYPE
+ )
+ is
+ begin
+ acs_object.delete(forum_id);
+ end delete;
+
+end forums_forum;
+/
+show errors
Index: openacs-4/packages/forums/sql/postgresql/forums-forums-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/forums-forums-create.sql,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/forums/sql/postgresql/forums-forums-create.sql 10 Jul 2002 18:30:36 -0000 1.4
+++ openacs-4/packages/forums/sql/postgresql/forums-forums-create.sql 30 Nov 2002 17:35:03 -0000 1.5
@@ -22,11 +22,6 @@
select acs_privilege__create_privilege('forum_post',null,null);
select acs_privilege__create_privilege('forum_moderate',null,null);
- -- temporarily drop this trigger to avoid a data-change violation
- -- on acs_privilege_hierarchy_index while updating the child privileges.
-
- drop trigger acs_priv_hier_ins_del_tr on acs_privilege_hierarchy;
-
-- add children
select acs_privilege__add_child('create','forum_create');
select acs_privilege__add_child('write','forum_write');
@@ -37,13 +32,6 @@
select acs_privilege__add_child('forum_write','forum_read');
select acs_privilege__add_child('forum_write','forum_post');
- -- re-enable the trigger before the last insert to force the
- -- acs_privilege_hierarchy_index table to be updated.
-
- create trigger acs_priv_hier_ins_del_tr after insert or delete
- on acs_privilege_hierarchy for each row
- execute procedure acs_priv_hier_ins_del_tr ();
-
-- the last one that will cause all the updates
select acs_privilege__add_child('read','forum_read');
@@ -81,7 +69,8 @@
check (enabled_p in ('t','f')),
package_id integer
constraint forums_package_id_nn
- not null
+ not null,
+ last_post timestamp
);
create view forums_forums_enabled
Index: openacs-4/packages/forums/sql/postgresql/forums-forums-package-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/forums-forums-package-create.sql,v
diff -u -N -r1.6 -r1.7
--- openacs-4/packages/forums/sql/postgresql/forums-forums-package-create.sql 5 Aug 2002 20:00:08 -0000 1.6
+++ openacs-4/packages/forums/sql/postgresql/forums-forums-package-create.sql 30 Nov 2002 17:35:03 -0000 1.7
@@ -43,8 +43,6 @@
values
(v_forum_id, p_name, p_charter, p_presentation_type, p_posting_policy, p_package_id);
- perform acs_object__update_last_modified(coalesce(p_context_id, p_package_id));
-
return v_forum_id;
end;
' language 'plpgsql';
Index: openacs-4/packages/forums/sql/postgresql/forums-messages-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/forums-messages-create.sql,v
diff -u -N -r1.5 -r1.6
--- openacs-4/packages/forums/sql/postgresql/forums-messages-create.sql 24 Jun 2002 22:37:52 -0000 1.5
+++ openacs-4/packages/forums/sql/postgresql/forums-messages-create.sql 30 Nov 2002 17:35:03 -0000 1.6
@@ -50,6 +50,7 @@
check (open_p in ('t','f')),
tree_sortkey varbit,
max_child_sortkey varbit,
+ last_child_post timestamp,
constraint forums_mess_sk_forum_un
unique (tree_sortkey, forum_id)
);
Index: openacs-4/packages/forums/sql/postgresql/forums-messages-package-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/forums-messages-package-create.sql,v
diff -u -N -r1.8 -r1.9
--- openacs-4/packages/forums/sql/postgresql/forums-messages-package-create.sql 20 Aug 2002 21:39:42 -0000 1.8
+++ openacs-4/packages/forums/sql/postgresql/forums-messages-package-create.sql 30 Nov 2002 17:35:03 -0000 1.9
@@ -69,9 +69,16 @@
values
(v_message_id, p_forum_id, p_subject, p_content, p_html_p, p_user_id, v_posting_date, p_parent_id, v_state);
- perform acs_object__update_last_modified(p_forum_id);
+ update forums_forums
+ set last_post = v_posting_date
+ where forum_id = p_forum_id;
+ update forums_messages
+ set last_child_post = v_posting_date
+ where message_id = forums_message__root_message_id(v_message_id);
+
return v_message_id;
+
end;
' language 'plpgsql';
Index: openacs-4/packages/forums/sql/postgresql/upgrade-0.1d-0.2d.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/Attic/upgrade-0.1d-0.2d.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/forums/sql/postgresql/upgrade-0.1d-0.2d.sql 30 Nov 2002 17:35:03 -0000 1.2
@@ -0,0 +1,173 @@
+alter table forums_forums add column last_post timestamp;
+alter table forums_messages add column last_child_post timestamp;
+
+create or replace function t () returns integer as '
+declare
+ v_record record;
+ v_timestamp timestamp;
+begin
+
+ for v_record in select forum_id
+ from forums_forums
+ loop
+
+ select last_modified into v_timestamp
+ from acs_objects
+ where object_id = v_record.forum_id;
+
+ update forums_forums
+ set last_post = v_timestamp
+ where forum_id = v_record.forum_id;
+
+ end loop;
+
+ for v_record in select message_id
+ from forums_messages
+ where parent_id is null
+ loop
+
+ -- forums 0.1d did not properly set the last_modified field of the object
+ -- row associated with the root message of a thread, so we need to calculate
+ -- it here.
+
+ select max(o.last_modified) into v_timestamp
+ from acs_objects o, forums_messages fm
+ where forums_message__root_message_id(fm.message_id) = v_record.message_id
+ and object_id = fm.message_id;
+
+ update forums_messages
+ set last_child_post = v_timestamp
+ where message_id = v_record.message_id;
+
+ end loop;
+
+ return 1;
+
+end;' language 'plpgsql';
+
+select t();
+
+drop view forums_messages_approved;
+create view forums_messages_approved
+as
+ select *
+ from forums_messages
+ where state = 'approved';
+
+drop view forums_messages_pending;
+create view forums_messages_pending
+as
+ select *
+ from forums_messages
+ where state= 'pending';
+
+drop view forums_forums_enabled;
+create view forums_forums_enabled
+as
+ select *
+ from forums_forums
+ where enabled_p = 't';
+
+create or replace function forums_message__new (integer,varchar,integer,varchar,text,char,integer,timestamp,varchar,integer,timestamp,integer,varchar,integer)
+returns integer as '
+declare
+ p_message_id alias for $1;
+ p_object_type alias for $2;
+ p_forum_id alias for $3;
+ p_subject alias for $4;
+ p_content alias for $5;
+ p_html_p alias for $6;
+ p_user_id alias for $7;
+ p_posting_date alias for $8;
+ p_state alias for $9;
+ p_parent_id alias for $10;
+ p_creation_date alias for $11;
+ p_creation_user alias for $12;
+ p_creation_ip alias for $13;
+ p_context_id alias for $14;
+ v_message_id integer;
+ v_forum_policy forums_forums.posting_policy%TYPE;
+ v_state forums_messages.state%TYPE;
+ v_posting_date forums_messages.posting_date%TYPE;
+begin
+ v_message_id := acs_object__new(
+ p_message_id,
+ p_object_type,
+ p_creation_date,
+ p_creation_user,
+ p_creation_ip,
+ coalesce(p_context_id, p_forum_id)
+ );
+
+ if p_state is null then
+ select posting_policy
+ into v_forum_policy
+ from forums_forums
+ where forum_id = p_forum_id;
+
+ if v_forum_policy = ''moderated''
+ then v_state := ''pending'';
+ else v_state := ''approved'';
+ end if;
+ else
+ v_state := p_state;
+ end if;
+
+ if p_posting_date is null then
+ v_posting_date = now();
+ else
+ v_posting_date = p_posting_date;
+ end if;
+
+ insert into forums_messages
+ (message_id, forum_id, subject, content, html_p, user_id, posting_date, parent_id, state)
+ values
+ (v_message_id, p_forum_id, p_subject, p_content, p_html_p, p_user_id, v_posting_date, p_parent_id, v_state);
+
+ update forums_forums
+ set last_post = v_posting_date
+ where forum_id = p_forum_id;
+
+ update forums_messages
+ set last_child_post = v_posting_date
+ where message_id = forums_message__root_message_id(v_message_id);
+
+ return v_message_id;
+
+end;
+' language 'plpgsql';
+
+create or replace function forums_forum__new (integer,varchar,varchar,varchar,varchar,varchar,integer,timestamp,integer,varchar,integer)
+returns integer as '
+declare
+ p_forum_id alias for $1;
+ p_object_type alias for $2;
+ p_name alias for $3;
+ p_charter alias for $4;
+ p_presentation_type alias for $5;
+ p_posting_policy alias for $6;
+ p_package_id alias for $7;
+ p_creation_date alias for $8;
+ p_creation_user alias for $9;
+ p_creation_ip alias for $10;
+ p_context_id alias for $11;
+ v_forum_id integer;
+begin
+ v_forum_id:= acs_object__new(
+ p_forum_id,
+ p_object_type,
+ p_creation_date,
+ p_creation_user,
+ p_creation_ip,
+ coalesce(p_context_id, p_package_id)
+ );
+
+ insert into forums_forums
+ (forum_id, name, charter, presentation_type, posting_policy, package_id)
+ values
+ (v_forum_id, p_name, p_charter, p_presentation_type, p_posting_policy, p_package_id);
+
+ return v_forum_id;
+end;
+' language 'plpgsql';
+
Index: openacs-4/packages/forums/tcl/forums-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/tcl/forums-procs.tcl,v
diff -u -N -r1.8 -r1.9
--- openacs-4/packages/forums/tcl/forums-procs.tcl 25 Oct 2002 13:00:01 -0000 1.8
+++ openacs-4/packages/forums/tcl/forums-procs.tcl 30 Nov 2002 17:35:17 -0000 1.9
@@ -66,6 +66,26 @@
db_1row select_forum {} -column_array row
}
+ ad_proc -public posting_policy_set {
+ {-posting_policy:required}
+ {-forum_id:required}
+ } {
+ # JCD: this is potentially bad since we are
+ # just assuming registered_users is the
+ # right group to be granting forum_write to.
+
+ if {![string equal closed $posting_policy]} {
+ permission::grant -object_id $forum_id \
+ -party_id [acs_magic_object registered_users] \
+ -privilege forum_write
+ } else {
+ permission::revoke -object_id $forum_id \
+ -party_id [acs_magic_object registered_users] \
+ -privilege forum_write
+ }
+
+ }
+
ad_proc -public new_questions_allow {
{-forum_id:required}
} {
Index: openacs-4/packages/forums/tcl/forums-security-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/tcl/forums-security-procs.tcl,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/forums/tcl/forums-security-procs.tcl 25 Oct 2002 13:00:01 -0000 1.4
+++ openacs-4/packages/forums/tcl/forums-security-procs.tcl 30 Nov 2002 17:35:17 -0000 1.5
@@ -13,8 +13,12 @@
ad_proc -private do_abort {} {
do an abort if security violation
} {
- ad_returnredirect "not-allowed"
- return -code error
+ if { [ad_conn user_id] == 0 } {
+ ad_redirect_for_registration
+ } else {
+ ad_returnredirect "not-allowed"
+ }
+ ad_script_abort
}
ad_proc -public can_read_forum_p {
Index: openacs-4/packages/forums/tcl/messages-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/tcl/messages-procs.tcl,v
diff -u -N -r1.13 -r1.14
--- openacs-4/packages/forums/tcl/messages-procs.tcl 18 Nov 2002 18:01:07 -0000 1.13
+++ openacs-4/packages/forums/tcl/messages-procs.tcl 30 Nov 2002 17:35:17 -0000 1.14
@@ -77,7 +77,6 @@
append new_content "Forum: $message(forum_name) \n"
append new_content "Thread: $message(root_subject) \n"
append new_content "Author: $message(user_name) \n"
- append new_content "Posted: $message(posting_date) "
append new_content "\n \n"
append new_content $message(content)
append new_content "------------------- "
@@ -87,25 +86,24 @@
set html_version $new_content
set text_version ""
- append text_version "
-Forum: $message(forum_name)
-Thread: $message(root_message_id)
-Author: $message(user_name) ($message(user_email))
-Posted: $message(posting_date)
-----------------------------------
-[ad_html_to_text $message(content)]
----------------------------------
-To post a reply to this email or view this message go to:
-${url}message-view?message_id=$message(root_message_id)
+
+ append text_version "Forum: $message(forum_name)
+Thread: $message(root_subject)
+Author: $message(user_name) ($message(user_email))\n\n"
-To view Forum $message(forum_name) go to:
-${url}forum-view?forum_id=$message(forum_id)
-To email the author($message(user_name)) privately:
-mailto:$message(user_email)
+ if { $message(html_p) } {
+ append text_version [ad_html_to_text $message(content)]
+ } else {
+ append text_version [wrap_string $message(content)]
+ }
+ append text_version "\n\n--
+To post a reply to this email or view this message go to:
+${url}message-view?message_id=$message(root_message_id)
"
+
set new_content $text_version
- ns_log notice "requesting a notification with subject $message(forum_name) $message(subject)"
+ ns_log debug "forums: requesting a notification forum $message(forum_name) subject $message(subject)"
# Do the notification for the forum
Index: openacs-4/packages/forums/www/forum-view-oracle.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/Attic/forum-view-oracle.xql,v
diff -u -N -r1.6 -r1.7
--- openacs-4/packages/forums/www/forum-view-oracle.xql 18 Nov 2002 18:01:08 -0000 1.6
+++ openacs-4/packages/forums/www/forum-view-oracle.xql 30 Nov 2002 17:35:39 -0000 1.7
@@ -14,13 +14,11 @@
from forums_messages_approved fm1
where fm1.forum_id = :forum_id
and fm1.tree_sortkey between tree.left(fm.tree_sortkey) and tree.right(fm.tree_sortkey)) as n_messages,
- to_char(acs_objects.last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,
- case when acs_objects.last_modified > (sysdate - 1) then 't' else 'f' end as new_p
- from forums_messages_approved fm,
- acs_objects
+ to_char(fm.last_child_post, 'YYYY-MM-DD HH24:MI:SS') as last_child_post_ansi,
+ case when fm.last_child_post > (sysdate - 1) then 't' else 'f' end as new_p
+ from forums_messages_approved fm
where fm.forum_id = :forum_id
and fm.parent_id is null
- and fm.message_id = acs_objects.object_id
order by fm.posting_date desc
@@ -37,13 +35,11 @@
from forums_messages fm1
where fm1.forum_id = :forum_id
and fm1.tree_sortkey between tree.left(fm.tree_sortkey) and tree.right(fm.tree_sortkey)) as n_messages,
- to_char(acs_objects.last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,
- case when acs_objects.last_modified > (sysdate - 1) then 't' else 'f' end as new_p
- from forums_messages fm,
- acs_objects
+ to_char(fm.last_child_post, 'YYYY-MM-DD HH24:MI:SS') as last_child_post_ansi,
+ case when fm.last_child_post > (sysdate - 1) then 't' else 'f' end as new_p
+ from forums_messages fm
where fm.forum_id = :forum_id
and fm.parent_id is null
- and fm.message_id = acs_objects.object_id
order by fm.posting_date desc
Index: openacs-4/packages/forums/www/forum-view-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/Attic/forum-view-postgresql.xql,v
diff -u -N -r1.5 -r1.6
--- openacs-4/packages/forums/www/forum-view-postgresql.xql 18 Nov 2002 18:01:08 -0000 1.5
+++ openacs-4/packages/forums/www/forum-view-postgresql.xql 30 Nov 2002 17:35:39 -0000 1.6
@@ -14,13 +14,11 @@
from forums_messages_approved fm1
where fm1.forum_id = :forum_id
and fm1.tree_sortkey between tree_left(fm.tree_sortkey) and tree_right(fm.tree_sortkey)) as n_messages,
- to_char(acs_objects.last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,
- case when acs_objects.last_modified > (now() - 1) then 't' else 'f' end as new_p
- from forums_messages_approved fm,
- acs_objects
+ to_char(fm.last_child_post, 'YYYY-MM-DD HH24:MI:SS') as last_child_post_ansi,
+ case when fm.last_child_post > (now() - 1) then 't' else 'f' end as new_p
+ from forums_messages_approved fm
where fm.forum_id = :forum_id
and fm.parent_id is null
- and fm.message_id = acs_objects.object_id
order by fm.posting_date desc
@@ -37,13 +35,11 @@
from forums_messages fm1
where fm1.forum_id = :forum_id
and fm1.tree_sortkey between tree_left(fm.tree_sortkey) and tree_right(fm.tree_sortkey)) as n_messages,
- to_char(acs_objects.last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,
- case when acs_objects.last_modified > (now() - 1) then 't' else 'f' end as new_p
- from forums_messages fm,
- acs_objects
+ to_char(fm.last_child_post, 'YYYY-MM-DD HH24:MI:SS') as last_child_post_ansi,
+ case when fm.last_child_post > (now() - 1) then 't' else 'f' end as new_p
+ from forums_messages_approved fm
where fm.forum_id = :forum_id
and fm.parent_id is null
- and fm.message_id = acs_objects.object_id
order by fm.posting_date desc
Index: openacs-4/packages/forums/www/forum-view.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/forum-view.adp,v
diff -u -N -r1.16 -r1.17
--- openacs-4/packages/forums/www/forum-view.adp 18 Nov 2002 18:01:08 -0000 1.16
+++ openacs-4/packages/forums/www/forum-view.adp 30 Nov 2002 17:35:39 -0000 1.17
@@ -70,7 +70,7 @@
|
@messages.user_name@ |
@messages.n_messages@ |
- @messages.last_modified_pretty@ |
+ @messages.last_child_post_pretty@ |