--
-- 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;