-- /packages/wp-slim/sql/postgresql/upgrade-4.0b3-4.1.sql -- timestamp fixes -- @author Vinod Kurup (vinod@kurup.com) -- @creation-date 2003-08-06 -- @cvs-id $Id: upgrade-4.0b3-4.1.sql,v 1.4 2004/02/26 15:29:24 jeffd Exp $ -- why drop the functions instead of just doing create-or-replace? -- because we're changing the signature, create-or-replace won't find -- the old functions, so they would linger in the db. drop them explicitly drop function wp_presentation__new ( timestamptz, integer, varchar(400), varchar(400), varchar(400), varchar, integer, boolean, boolean, varchar, varchar, integer ); drop function wp_presentation__new_revision ( timestamptz, integer, varchar, integer, varchar(400), varchar(200), varchar(400), integer, boolean, boolean, varchar, varchar ); drop function wp_slide__new ( integer, timestamptz, integer, varchar, varchar, integer, integer, integer, varchar, varchar, varchar, boolean, boolean, integer ); drop function wp_slide__new_revision( timestamptz, integer, varchar, integer, varchar, text, varchar, varchar, integer, integer, integer, boolean, boolean ); -- now load the new functions -- -- PL/pgsql for wimpy point -- -- @cvs-id $Id: upgrade-4.0b3-4.1.sql,v 1.4 2004/02/26 15:29:24 jeffd Exp $ -- --jackp: From here on the functions are defined --jackp: To p_create each presentation create or replace function wp_presentation__new ( timestamptz, integer, varchar, varchar, varchar, varchar, integer, boolean, boolean, varchar, varchar, integer ) returns integer as' declare p_creation_date alias for $1; p_creation_user alias for $2; p_creation_ip alias for $3; p_pres_title alias for $4; p_page_signature alias for $5; p_copyright_notice alias for $6; p_style alias for $7; p_public_p alias for $8; p_show_modified_p alias for $9; p_aud alias for $10; p_back alias for $11; p_parent_id alias for $12; v_item_id cr_items.item_id%TYPE; v_audience_item_id cr_items.item_id%TYPE; v_background_item_id cr_items.item_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE; v_audience_revision_id cr_revisions.revision_id%TYPE; v_background_revision_id cr_revisions.revision_id%TYPE; v_max_id integer; v_name cr_wp_presentations.pres_title%TYPE; begin select coalesce(max(item_id),0) into v_max_id from cr_items where content_type = ''cr_wp_presentation'' and name like p_pres_title || ''%''; v_name := p_pres_title || ''_'' || v_max_id; v_item_id := content_item__new( v_name, p_parent_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_presentation'', null, null, ''text/plain'', null, null, ''text'' ); v_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, null, v_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_revision_id); --jackp: Actually place the information entered -- by the user into the table insert into cr_wp_presentations ( presentation_id, pres_title, page_signature, copyright_notice, style, public_p, show_modified_p ) values ( v_revision_id, p_pres_title, p_page_signature, p_copyright_notice, p_style, p_public_p, p_show_modified_p ); v_audience_item_id := content_item__new( p_aud, v_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_presentation_aud'', null, null, ''text/plain'', null, null, ''text'' ); v_audience_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_aud, v_audience_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_audience_revision_id); insert into cr_wp_presentations_aud (id, presentation_id) values (v_audience_revision_id, v_revision_id); v_background_item_id := content_item__new( p_back, v_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_presentation_back'', null, null, ''text/plain'', null, null, ''text'' ); v_background_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_back, v_background_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_background_revision_id); insert into cr_wp_presentations_back (id, presentation_id) values (v_background_revision_id, v_revision_id); return v_item_id; end;' language 'plpgsql'; create or replace function wp_presentation__delete_audience (integer) returns integer as ' declare audience_item_id alias for $1; begin delete from cr_wp_presentations_aud where exists (select 1 from cr_revisions where revision_id = cr_wp_presentations_aud.id and item_id = audience_item_id); delete from cr_item_publish_audit where item_id = audience_item_id; perform content_item__delete(audience_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_presentation__delete_background (integer) returns integer as ' declare background_item_id alias for $1; begin delete from cr_wp_presentations_back where exists (select 1 from cr_revisions where revision_id = cr_wp_presentations_back.id and item_id = background_item_id); delete from cr_item_publish_audit where item_id = background_item_id; perform content_item__delete(background_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_presentation__delete (integer) returns integer as ' declare p_pres_item_id alias for $1; v_audience_item_id cr_items.item_id%TYPE; v_background_item_id cr_items.item_id%TYPE; del_rec record; begin for del_rec in select item_id as slide_item_id from cr_items where content_type = ''cr_wp_slide'' and parent_id = p_pres_item_id loop perform wp_slide__delete(del_rec.slide_item_id); end loop; select item_id into v_audience_item_id from cr_items where content_type = ''cr_wp_presentation_aud'' and parent_id = p_pres_item_id; perform wp_presentation__delete_audience(v_audience_item_id); select item_id into v_background_item_id from cr_items where content_type = ''cr_wp_presentation_back'' and parent_id = p_pres_item_id; perform wp_presentation__delete_background(v_background_item_id); delete from acs_permissions where object_id = p_pres_item_id; -- update acs_objects set context_id=null where context_id = p_pres_item_id; delete from cr_wp_presentations where exists (select 1 from cr_revisions where cr_revisions.revision_id = cr_wp_presentations.presentation_id and cr_revisions.item_id = p_pres_item_id); perform content_item__delete(p_pres_item_id); return 0; end;' language 'plpgsql'; -- DRB: All these could've been implemented as a single function with a -- type argument but I'm not going to rewrite all of wp-slim's queries -- just to clean this up... create or replace function wp_presentation__get_ad_revision (integer) returns text as ' declare p_pres_revision_id alias for $1; begin return r.content from cr_revisions r, cr_wp_presentations_aud pa where pa.presentation_id = p_pres_revision_id and r.revision_id = pa.id; end;' language 'plpgsql'; create or replace function wp_presentation__get_audience (integer) returns text as ' declare p_pres_item_id alias for $1; begin return content from cr_revisions, cr_items where cr_items.content_type = ''cr_wp_presentation_aud'' and cr_items.parent_id = p_pres_item_id and cr_revisions.revision_id = cr_items__live_revision; end;' language 'plpgsql'; create or replace function wp_presentation__get_bg_revision (integer) returns text as ' declare p_pres_revision_id alias for $1; begin return r.content from cr_revisions r, cr_wp_presentations_aud pa where pa.presentation_id = p_pres_revision_id and r.revision_id = pa.id; end;' language 'plpgsql'; create or replace function wp_presentation__get_background (integer) returns text as ' declare pres_item_id alias for $1; begin return content from cr_revisions, cr_items where cr_items.content_type = ''cr_wp_presentation_bak'' and cr_items.parent_id = p_pres_item_id and cr_revisions.revision_id = cr_items__live_revision; end;' language 'plpgsql'; create or replace function wp_presentation__new_revision ( timestamptz, integer, varchar, integer, varchar, varchar, varchar, integer, boolean, boolean, varchar, varchar ) returns integer as ' declare p_creation_date alias for $1; p_creation_user alias for $2; p_creation_ip alias for $3; p_pres_item_id alias for $4; p_pres_title alias for $5; p_page_signature alias for $6; p_copyright_notice alias for $7; p_style alias for $8; p_public_p alias for $9; p_show_modified_p alias for $10; p_audience alias for $11; p_background alias for $12; v_audience_item_id cr_items.item_id%TYPE; v_background_item_id cr_items.item_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE; v_audience_revision_id cr_revisions.revision_id%TYPE; v_background_revision_id cr_revisions.revision_id%TYPE; begin v_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, null, p_pres_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_revision_id); insert into cr_wp_presentations ( presentation_id, pres_title, page_signature, copyright_notice, style, public_p, show_modified_p ) values ( v_revision_id, p_pres_title, p_page_signature, p_copyright_notice, p_style, p_public_p, p_show_modified_p ); select item_id into v_audience_item_id from cr_items where parent_id = p_pres_item_id and content_type = ''cr_wp_presentation_aud''; v_audience_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_audience, v_audience_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_audience_revision_id); insert into cr_wp_presentations_aud (id, presentation_id) values (v_audience_revision_id, v_revision_id); select item_id into v_background_item_id from cr_items where parent_id = p_pres_item_id and content_type = ''cr_wp_presentation_back''; v_background_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_background, v_background_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_background_revision_id); insert into cr_wp_presentations_back (id, presentation_id) values (v_background_revision_id, v_revision_id); return 0; end;' language 'plpgsql'; create or replace function wp_slide__new ( integer, timestamptz, integer, varchar, varchar, integer, integer, integer, varchar, varchar, varchar, boolean, boolean, integer ) returns integer as ' declare p_pres_item_id alias for $1; p_creation_date alias for $2; p_creation_user alias for $3; p_creation_ip alias for $4; p_slide_title alias for $5; p_style alias for $6; p_original_slide_id alias for $7; p_sort_key alias for $8; p_preamble alias for $9; p_bullet_items alias for $10; p_postamble alias for $11; p_include_in_outline_p alias for $12; p_context_break_after_p alias for $13; p_context_id alias for $14; v_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; v_revision_id cr_revisions.revision_id%TYPE; v_preamble_revision_id cr_revisions.revision_id%TYPE; v_postamble_revision_id cr_revisions.revision_id%TYPE; v_bullet_items_revision_id cr_revisions.revision_id%TYPE; v_max_id integer; v_name varchar; begin select coalesce(max(item_id),0) into v_max_id from cr_items where content_type = ''cr_wp_slide'' and name like p_slide_title || ''%''; v_name := p_slide_title || ''_'' || v_max_id; v_item_id := content_item__new( v_name, p_pres_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_slide'', null, null, ''text/plain'', null, null, ''text'' ); v_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, null, v_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_revision_id); update cr_wp_slides set sort_key = sort_key + 1 where sort_key >= p_sort_key and exists (select 1 from cr_items, cr_revisions where parent_id = p_pres_item_id and cr_items.item_id = cr_revisions.item_id and cr_revisions.revision_id=cr_wp_slides.slide_id); insert into cr_wp_slides ( slide_id, original_slide_id, sort_key, slide_title, include_in_outline_p, context_break_after_p, style ) values ( v_revision_id, p_original_slide_id, p_sort_key, p_slide_title, p_include_in_outline_p, p_context_break_after_p, p_style ); v_preamble_item_id := content_item__new( ''preamble'', v_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_slide_preamble'', null, null, ''text/plain'', null, null, ''text'' ); v_preamble_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_preamble, v_preamble_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_preamble_revision_id); insert into cr_wp_slides_preamble (id, slide_id) values (v_preamble_revision_id, v_revision_id); v_postamble_item_id := content_item__new( ''postamble'', v_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_slide_postamble'', null, null, ''text/plain'', null, null, ''text'' ); v_postamble_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_postamble, v_postamble_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_postamble_revision_id); insert into cr_wp_slides_postamble (id, slide_id) values (v_postamble_revision_id, v_revision_id); v_bullet_items_item_id := content_item__new( ''bullet_items'', v_item_id, null, null, p_creation_date, p_creation_user, null, p_creation_ip, ''content_item'', ''cr_wp_slide_bullet_items'', null, null, null, ''text/plain'', null, ''text'' ); v_bullet_items_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_bullet_items, v_bullet_items_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_bullet_items_revision_id); insert into cr_wp_slides_bullet_items (id, slide_id) values (v_bullet_items_revision_id, v_revision_id); return v_item_id; end;' language 'plpgsql'; create or replace function wp_slide__delete_preamble (integer) returns integer as ' declare delete_preamble__preamble_item_id alias for $1; begin delete from cr_wp_slides_preamble where exists (select 1 from cr_revisions where revision_id = cr_wp_slides_preamble.id and item_id = delete_preamble__preamble_item_id); delete from cr_item_publish_audit where item_id = delete_preamble__preamble_item_id; perform content_item__delete(delete_preamble__preamble_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_slide__delete_postamble(integer) returns integer as ' declare delete_postamble__postamble_item_id alias for $1; begin delete from cr_wp_slides_postamble where exists (select 1 from cr_revisions where revision_id = cr_wp_slides_postamble.id and item_id = delete_postamble__postamble_item_id); delete from cr_item_publish_audit where item_id = delete_postamble__postamble_item_id; perform content_item__delete(delete_postamble__postamble_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_slide__delete_bullet_items(integer) returns integer as ' declare delete_bullet_items__bullet_items_item_id alias for $1; begin delete from cr_wp_slides_bullet_items where exists (select 1 from cr_revisions where revision_id = cr_wp_slides_bullet_items.id and item_id = delete_bullet_items__bullet_items_item_id); delete from cr_item_publish_audit where item_id = delete_bullet_items__bullet_items_item_id; perform content_item__delete(delete_bullet_items__bullet_items_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_slide__delete(integer) returns integer 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'; create or replace function wp_slide__get_preamble_revision (integer) returns text as ' declare p_slide_revision_id alias for $1; begin return content from cr_revisions r, cr_wp_slides_preamble sp where sp.slide_id = p_slide_revision_id and r.revision_id = sp.id; end;' language 'plpgsql'; create or replace function wp_slide__get_postamble_revision (integer) returns text as ' declare p_slide_revision_id alias for $1; begin return content from cr_revisions r, cr_wp_slides_postamble sp where sp.slide_id = p_slide_revision_id and r.revision_id = sp.id; end;' language 'plpgsql'; create or replace function wp_slide__get_bullet_items_revision (integer) returns text as ' declare p_slide_revision_id alias for $1; begin return content from cr_revisions r, cr_wp_slides_bullet_items sp where sp.slide_id = p_slide_revision_id and r.revision_id = sp.id; end;' language 'plpgsql'; create or replace function wp_slide__get_postamble(integer) returns text as ' declare p_slide_item_id alias for $1; begin return content from cr_revisions, cr_items where cr_items.content_type = ''cr_wp_slide_postamble'' and cr_items.parent_id = p_slide_item_id and cr_revisions.revision_id = cr_items.live_revision; end;' language 'plpgsql'; create or replace function wp_slide__get_preamble(integer) returns text as' declare p_slide_item_id alias for $1; begin return content from cr_revisions, cr_items where cr_items.content_type = ''cr_wp_slide_preamble'' and cr_items.parent_id = p_slide_item_id and cr_revisions.revision_id = cr_items.live_revision; end;' language 'plpgsql'; create or replace function wp_slide__get_bullet_items(integer) returns text as ' declare p_slide_item_id alias for $1; begin return content from cr_revisions, cr_items where cr_items.content_type = ''cr_wp_slide_bullet_items'' and cr_items.parent_id = p_slide_item_id and cr_revisions.revision_id = cr_items.live_revision; end;' language 'plpgsql'; create or replace function wp_slide__new_revision( timestamptz, integer, varchar, integer, varchar, text, varchar, varchar, integer, integer, integer, boolean, boolean ) returns integer as' declare p_creation_date alias for $1; p_creation_user alias for $2; p_creation_ip alias for $3; p_slide_item_id alias for $4; p_slide_title alias for $5; p_preamble alias for $6; p_bullet_items alias for $7; p_postamble alias for $8; p_style alias for $9; p_original_slide_id alias for $10; p_sort_key alias for $11; p_include_in_outline_p alias for $12; p_context_break_after_p alias for $13; 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; v_revision_id cr_revisions.revision_id%TYPE; v_preamble_revision_id cr_revisions.revision_id%TYPE; v_postamble_revision_id cr_revisions.revision_id%TYPE; v_bullet_items_revision_id cr_revisions.revision_id%TYPE; begin v_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, null, p_slide_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_revision_id); insert into cr_wp_slides ( slide_id, slide_title, style, original_slide_id, sort_key, include_in_outline_p, context_break_after_p ) values ( v_revision_id, p_slide_title, p_style, p_original_slide_id, p_sort_key, p_include_in_outline_p, p_context_break_after_p ); select item_id into v_preamble_item_id from cr_items where parent_id = p_slide_item_id and content_type = ''cr_wp_slide_preamble''; v_preamble_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_preamble, v_preamble_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_preamble_revision_id); insert into cr_wp_slides_preamble (id, slide_id) values (v_preamble_revision_id, v_revision_id); select item_id into v_postamble_item_id from cr_items where parent_id = p_slide_item_id and content_type = ''cr_wp_slide_postamble''; v_postamble_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_postamble, v_postamble_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_postamble_revision_id); insert into cr_wp_slides_postamble (id, slide_id) values (v_postamble_revision_id, v_revision_id); select item_id into v_bullet_items_item_id from cr_items where parent_id = p_slide_item_id and content_type = ''cr_wp_slide_bullet_items''; v_bullet_items_revision_id := content_revision__new( null, null, current_timestamp, ''text/plain'', null, p_bullet_items, v_bullet_items_item_id, null, p_creation_date, p_creation_user, p_creation_ip ); perform content_item__set_live_revision(v_bullet_items_revision_id); insert into cr_wp_slides_bullet_items (id, slide_id) values (v_bullet_items_revision_id, v_revision_id); return 0; end;' language 'plpgsql'; -- bug fixed, delete first an image then a file, roc@ create or replace function wp_attachment__delete(integer) returns integer as ' declare p_attach_item_id alias for $1; begin delete from cr_wp_image_attachments where exists (select 1 from cr_revisions where revision_id = cr_wp_image_attachments.attach_id and item_id = p_attach_item_id); delete from cr_wp_file_attachments where exists (select 1 from cr_revisions where revision_id = cr_wp_file_attachments.attach_id and item_id = p_attach_item_id); delete from cr_item_publish_audit where item_id = p_attach_item_id; perform content_item__delete(p_attach_item_id); return 0; end;' language 'plpgsql'; create or replace function wp_attachment__new_revision (integer) returns integer as ' declare p_attach_item_id alias for $1; begin return 0; end; 'language 'plpgsql'; create or replace function wp_presentation__set_live_revision(integer) returns integer as ' declare p_revision_id alias for $1; v_revision_id integer; begin perform content_item__set_live_revision(p_revision_id); select id into v_revision_id from cr_wp_presentations_aud where presentation_id = p_revision_id; perform content_item__set_live_revision(v_revision_id); select id into v_revision_id from cr_wp_presentations_back where presentation_id = p_revision_id; perform content_item__set_live_revision(v_revision_id); return 0; end;' language 'plpgsql'; -- style functions roc@ create or replace function wp_style__delete(integer) returns integer as ' declare p_style_id alias for $1; v_item_id integer; one_image record; begin for one_image in select * from wp_style_images where wp_style_images_id = (select background_image from wp_styles where style_id = p_style_id) loop delete from wp_style_images where wp_style_images_id = one_image.wp_style_images_id; select item_id into v_item_id from cr_revisions where revision_id = one_image.wp_style_images_id; perform content_item__delete(v_item_id); end loop; update cr_wp_slides set style = -1 where style = p_style_id; update cr_wp_presentations set style = -1 where style = p_style_id; delete from wp_styles where style_id = p_style_id; return 0; end;' language 'plpgsql'; create or replace function wp_style__image_delete(integer) returns integer as ' declare p_revision_id alias for $1; v_item_id integer; begin update wp_styles set background_image = 0 where background_image = p_revision_id; delete from wp_style_images where wp_style_images_id = p_revision_id; select item_id into v_item_id from cr_revisions where revision_id = p_revision_id; perform content_item__delete(v_item_id); return 0; end;' language 'plpgsql';