--
-- wp_presentation__new_revision/12
--
create or replace function wp_presentation__new_revision(
  timestamp with time zone,
  integer,
  character varying,
  integer,
  character varying,
  character varying,
  character varying,
  integer,
  boolean,
  boolean,
  character varying,
  character varying
) returns int4 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;