-- -- forums_message__delete/1 -- create or replace function forums_message__delete( integer ) returns int4 as $$ declare p_message_id alias for $1; v_cur record; begin -- Maintain the forum thread counts select into v_cur * from forums_messages where message_id = p_message_id; if v_cur.parent_id is null then if v_cur.state = 'approved' then update forums_forums set thread_count = thread_count - 1, approved_thread_count = approved_thread_count - 1 where forum_id=v_cur.forum_id; else update forums_forums set thread_count = thread_count - 1 where forum_id=v_cur.forum_id; end if; elsif v_cur.state = 'approved' then update forums_messages set approved_reply_count = approved_reply_count - 1, reply_count = reply_count - 1 where message_id = forums_message__root_message_id(v_cur.message_id); else update forums_messages set reply_count = reply_count - 1 where message_id = forums_message__root_message_id(v_cur.message_id); end if; perform acs_object__delete(p_message_id); return 0; end;$$ language plpgsql;