Index: openacs-4/packages/forums/sql/postgresql/upgrade/upgrade-1.2d1-1.2d2.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/sql/postgresql/upgrade/upgrade-1.2d1-1.2d2.sql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/forums/sql/postgresql/upgrade/upgrade-1.2d1-1.2d2.sql 15 Mar 2005 20:06:45 -0000 1.1 +++ openacs-4/packages/forums/sql/postgresql/upgrade/upgrade-1.2d1-1.2d2.sql 12 Aug 2013 09:34:31 -0000 1.2 @@ -55,33 +55,41 @@ -- -- Replace the procs which manipulate state and new message to save last_poster. -- -create or replace function forums_message__new (integer,varchar,integer,varchar,text,char,integer,varchar,integer,timestamptz,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_format alias for $6; - p_user_id alias for $7; - p_state alias for $8; - p_parent_id alias for $9; - p_creation_date alias for $10; - p_creation_user alias for $11; - p_creation_ip alias for $12; - p_context_id alias for $13; + + +-- added +select define_function_args('forums_message__new','message_id,object_type,forum_id,subject,content,format,user_id,state,parent_id,creation_date,creation_user,creation_ip,context_id'); + +-- +-- procedure forums_message__new/13 +-- +CREATE OR REPLACE FUNCTION forums_message__new( + p_message_id integer, + p_object_type varchar, + p_forum_id integer, + p_subject varchar, + p_content text, + p_format char, + p_user_id integer, + p_state varchar, + p_parent_id integer, + p_creation_date timestamptz, + p_creation_user integer, + p_creation_ip varchar, + p_context_id integer +) RETURNS integer AS $$ +DECLARE 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; v_package_id acs_objects.package_id%TYPE; -begin +BEGIN select package_id into v_package_id from forums_forums where forum_id = p_forum_id; if v_package_id is null then - raise exception ''forums_message__new: forum_id % not found'', p_forum_id; + raise exception 'forums_message__new: forum_id % not found', p_forum_id; end if; v_message_id := acs_object__new( @@ -91,7 +99,7 @@ p_creation_user, p_creation_ip, coalesce(p_context_id, p_forum_id), - ''t'', + 't', p_subject, v_package_id ); @@ -102,9 +110,9 @@ from forums_forums where forum_id = p_forum_id; - if v_forum_policy = ''moderated'' - then v_state := ''pending''; - else v_state := ''approved''; + if v_forum_policy = 'moderated' + then v_state := 'pending'; + else v_state := 'approved'; end if; else v_state := p_state; @@ -121,7 +129,7 @@ where forum_id = p_forum_id; if p_parent_id is null then - if v_state = ''approved'' then + if v_state = 'approved' then update forums_forums set thread_count = thread_count + 1, approved_thread_count = approved_thread_count + 1 @@ -132,7 +140,7 @@ where forum_id=p_forum_id; end if; else - if v_state = ''approved'' then + if v_state = 'approved' then update forums_messages set approved_reply_count = approved_reply_count + 1, reply_count = reply_count + 1, @@ -149,39 +157,46 @@ return v_message_id; -end;' language 'plpgsql'; +END; +$$ LANGUAGE plpgsql; select define_function_args ('forums_message__set_state', 'message_id,state'); -create or replace function forums_message__set_state(integer,varchar) returns integer as ' -declare - p_message_id alias for $1; - p_state alias for $2; + + +-- +-- procedure forums_message__set_state/2 +-- +CREATE OR REPLACE FUNCTION forums_message__set_state( + p_message_id integer, + p_state varchar +) RETURNS integer AS $$ +DECLARE v_cur record; -begin +BEGIN select into v_cur * from forums_messages where message_id = p_message_id; if v_cur.parent_id is null then - if p_state = ''approved'' and v_cur.state <> ''approved'' then + if p_state = 'approved' and v_cur.state <> 'approved' then update forums_forums set approved_thread_count = approved_thread_count + 1 where forum_id=v_cur.forum_id; - elsif p_state <> ''approved'' and v_cur.state = ''approved'' then + elsif p_state <> 'approved' and v_cur.state = 'approved' then update forums_forums set approved_thread_count = approved_thread_count - 1 where forum_id=v_cur.forum_id; end if; else - if p_state = ''approved'' and v_cur.state <> ''approved'' then + if p_state = 'approved' and v_cur.state <> 'approved' then update forums_messages set approved_reply_count = approved_reply_count + 1, last_poster = (case when v_cur.posting_date > last_child_post then v_cur.user_id else last_poster end), last_child_post = (case when v_cur.posting_date > last_child_post then v_cur.posting_date else last_child_post end) where message_id = forums_message__root_message_id(v_cur.message_id); - elsif p_state <> ''approved'' and v_cur.state = ''approved'' then + elsif p_state <> 'approved' and v_cur.state = 'approved' then update forums_messages set approved_reply_count = approved_reply_count - 1 where message_id = forums_message__root_message_id(v_cur.message_id); @@ -194,16 +209,22 @@ return 0; -end;' language 'plpgsql'; +END; +$$ LANGUAGE plpgsql; select define_function_args ('forums_message__delete', 'message_id'); -create or replace function forums_message__delete (integer) -returns integer as ' -declare - p_message_id alias for $1; + + +-- +-- procedure forums_message__delete/1 +-- +CREATE OR REPLACE FUNCTION forums_message__delete( + p_message_id integer +) RETURNS integer AS $$ +DECLARE v_cur record; -begin +BEGIN -- Maintain the forum thread counts @@ -212,7 +233,7 @@ where message_id = p_message_id; if v_cur.parent_id is null then - if v_cur.state = ''approved'' then + if v_cur.state = 'approved' then update forums_forums set thread_count = thread_count - 1, approved_thread_count = approved_thread_count - 1 @@ -222,7 +243,7 @@ set thread_count = thread_count - 1 where forum_id=v_cur.forum_id; end if; - elsif v_cur.state = ''approved'' then + elsif v_cur.state = 'approved' then update forums_messages set approved_reply_count = approved_reply_count - 1, reply_count = reply_count - 1 @@ -235,4 +256,5 @@ perform acs_object__delete(p_message_id); return 0; -end;' language 'plpgsql'; +END; +$$ LANGUAGE plpgsql;