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.2
--- 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:07:21 -0000	1.2
@@ -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';