-- -- etp__create_new_revision/3 -- create or replace function etp__create_new_revision( integer, character varying, integer ) returns int4 as $$ declare p_package_id alias for $1; p_name alias for $2; p_user_id alias for $3; v_revision_id integer; v_item_id integer; v_new_revision_id integer; v_content_type varchar; begin select max(r.revision_id) into v_revision_id from cr_revisions r, cr_items i where i.name = p_name and i.parent_id = etp__get_folder_id(p_package_id) and r.item_id = i.item_id; select item_id into v_item_id from cr_revisions where revision_id = v_revision_id; select object_type into v_content_type from acs_objects where object_id = v_revision_id; -- cannot use acs_object__new because it creates attributes with their -- default values, which is not what we want. select nextval('t_acs_object_id_seq') into v_new_revision_id from dual; insert into acs_objects (object_id, object_type, creation_date, creation_user, context_id) values (v_new_revision_id, v_content_type, now(), p_user_id, v_item_id); insert into cr_revisions (revision_id, item_id, title, description, content, mime_type) select v_new_revision_id, item_id, title, description, content, mime_type from cr_revisions r where r.revision_id = v_revision_id; -- copy extended attributes to the new revision, if there are any insert into acs_attribute_values (object_id, attribute_id, attr_value) select v_new_revision_id as object_id, attribute_id, attr_value from acs_attribute_values where object_id = v_revision_id; return 1; end; $$ language plpgsql; -- -- etp__create_new_revision/4 -- create or replace function etp__create_new_revision( integer, character varying, integer, integer ) returns int4 as $$ declare p_package_id alias for $1; p_name alias for $2; p_user_id alias for $3; p_revision_id alias for $4; v_revision_id integer; v_item_id integer; v_content_type varchar; begin select max(r.revision_id) into v_revision_id from cr_revisions r, cr_items i where i.name = p_name and i.parent_id = etp__get_folder_id(p_package_id) and r.item_id = i.item_id; select item_id into v_item_id from cr_revisions where revision_id = v_revision_id; select object_type into v_content_type from acs_objects where object_id = v_revision_id; -- cannot use acs_object__new because it creates attributes with their -- default values, which is not what we want. insert into acs_objects (object_id, object_type, creation_date, creation_user, context_id) values (p_revision_id, v_content_type, now(), p_user_id, v_item_id); insert into cr_revisions (revision_id, item_id, title, description, content, mime_type) select p_revision_id, item_id, title, description, content, mime_type from cr_revisions r where r.revision_id = v_revision_id; -- copy extended attributes to the new revision, if there are any insert into acs_attribute_values (object_id, attribute_id, attr_value) select p_revision_id as object_id, attribute_id, attr_value from acs_attribute_values where object_id = v_revision_id; return 1; end; $$ language plpgsql;