--
-- wp_slide__delete/1
--
create or replace function wp_slide__delete(
integer
) returns int4 as $$
declare
p_slide_item_id alias for $1;
del_rec record;
v_sort_key cr_wp_slides.sort_key%TYPE;
v_pres_item_id cr_items.item_id%TYPE;
v_preamble_item_id cr_items.item_id%TYPE;
v_postamble_item_id cr_items.item_id%TYPE;
v_bullet_items_item_id cr_items.item_id%TYPE;
begin
for del_rec in
select item_id as attach_item_id
from cr_items
where content_type in
('cr_wp_image_attachment', 'cr_wp_file_attachment')
and parent_id = p_slide_item_id
loop
perform wp_attachment__delete(del_rec.attach_item_id);
end loop;
select item_id into v_preamble_item_id
from cr_items
where content_type = 'cr_wp_slide_preamble'
and parent_id = p_slide_item_id;
perform wp_slide__delete_preamble(v_preamble_item_id);
select item_id into v_postamble_item_id
from cr_items
where content_type = 'cr_wp_slide_postamble'
and parent_id = p_slide_item_id;
perform wp_slide__delete_postamble(v_postamble_item_id);
select item_id into v_bullet_items_item_id
from cr_items
where content_type = 'cr_wp_slide_bullet_items'
and parent_id = p_slide_item_id;
perform wp_slide__delete_bullet_items(v_bullet_items_item_id);
-- sort_key of all revisions should be the same
select max(s.sort_key), max(i.parent_id) into v_sort_key, v_pres_item_id
from cr_wp_slides s, cr_revisions r, cr_items i
where r.item_id = p_slide_item_id
and r.revision_id = s.slide_id
and i.item_id = r.item_id;
delete from cr_wp_slides where exists (select 1 from cr_revisions
where cr_revisions.revision_id = cr_wp_slides.slide_id
and cr_revisions.item_id = p_slide_item_id);
update cr_wp_slides set sort_key = sort_key - 1
where sort_key > v_sort_key and exists
(select 1 from cr_revisions r, cr_items i
where i.parent_id = v_pres_item_id and i.item_id = r.item_id
and r.revision_id = cr_wp_slides.slide_id);
-- update acs_objects set context_id=null
-- where context_id = p_slide_item_id;
delete from cr_item_publish_audit where item_id = p_slide_item_id;
perform content_item__delete(p_slide_item_id);
return 0;
end;$$ language plpgsql;