Index: openacs-4/packages/edit-this-page/sql/oracle/edit-this-page-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/edit-this-page/sql/oracle/edit-this-page-create.sql,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/edit-this-page/sql/oracle/edit-this-page-create.sql 21 Oct 2003 18:28:30 -0000 1.11 +++ openacs-4/packages/edit-this-page/sql/oracle/edit-this-page-create.sql 1 Dec 2003 14:48:37 -0000 1.11.2.1 @@ -35,7 +35,8 @@ function create_new_revision ( package_id in apm_packages.package_id%TYPE, name in varchar, - user_id in users.user_id%TYPE + user_id in users.user_id%TYPE, + revision_id in cr_revisions.revision_id%TYPE ) return integer; function get_folder_id ( @@ -190,7 +191,8 @@ function create_new_revision ( package_id in apm_packages.package_id%TYPE, name in varchar, - user_id in users.user_id%TYPE + user_id in users.user_id%TYPE, + revision_id in cr_revisions.revision_id%TYPE ) return integer is v_revision_id cr_revisions.revision_id%TYPE; @@ -212,9 +214,13 @@ -- cannot use acs_object__new because it creates attributes with their -- default values, which is not what we want. + if create_new_revision.revision_id is NULL then - select acs_object_id_seq.nextval - into v_new_revision_id from dual; + select acs_object_id_seq.nextval + into v_new_revision_id from dual; + else + v_new_revison_id := create_new_revision.revision_id; + end if; insert into acs_objects ( object_id, object_type, creation_date, creation_user) Index: openacs-4/packages/edit-this-page/sql/postgresql/upgrade/upgrade-1.3.sql-1.5.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/edit-this-page/sql/postgresql/upgrade/Attic/upgrade-1.3.sql-1.5.sql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/edit-this-page/sql/postgresql/upgrade/upgrade-1.3.sql-1.5.sql 23 Sep 2003 19:13:20 -0000 1.1 +++ openacs-4/packages/edit-this-page/sql/postgresql/upgrade/upgrade-1.3.sql-1.5.sql 1 Dec 2003 14:48:37 -0000 1.1.2.1 @@ -48,3 +48,55 @@ return 1; end; ' language 'plpgsql'; + + +create or replace function etp__create_new_revision(integer, varchar, integer, integer) +returns integer 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';