Index: openacs-4/packages/evaluation/sql/postgresql/upgrade/upgrade-0.4d7-0.4d8.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/evaluation/sql/postgresql/upgrade/upgrade-0.4d7-0.4d8.sql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/evaluation/sql/postgresql/upgrade/upgrade-0.4d7-0.4d8.sql 8 Aug 2006 21:26:41 -0000 1.2 +++ openacs-4/packages/evaluation/sql/postgresql/upgrade/upgrade-0.4d7-0.4d8.sql 27 Oct 2014 16:41:24 -0000 1.3 @@ -1,10 +1,19 @@ alter table evaluation_tasks add column forums_related_p char(1) constraint evaluation_tasks_frp_ck check(forums_related_p in ('t','f')); -create or replace function evaluation__clone (integer,integer) -returns integer as ' -declare - p_new_package_id alias for $1; --default null, - p_old_package_id alias for $2; --default null + + +-- added +select define_function_args('evaluation__clone','new_package_id,old_package_id'); + +-- +-- procedure evaluation__clone/2 +-- +CREATE OR REPLACE FUNCTION evaluation__clone( + p_new_package_id integer, --default null, + p_old_package_id integer --default null + +) RETURNS integer AS $$ +DECLARE v_grade_id evaluation_grades.grade_id%TYPE; v_item_id acs_objects.object_id%TYPE; v_revision_id acs_objects.object_id%TYPE; @@ -14,7 +23,7 @@ one_grade record; entry record; -begin +BEGIN -- get all the grades belonging to the old package, -- and create new grades for the new package delete from evaluation_grades where grade_id in (select eg.grade_id from acs_objects o, evaluation_grades eg,cr_items ci,cr_revisions cr where o.object_id = ci.item_id and cr.revision_id=eg.grade_id and ci.item_id=cr.item_id and cr.revision_id=ci.live_revision and o.context_id = p_new_package_id); @@ -41,26 +50,26 @@ one_grade.mime_type, null, null, - ''text'', - ''content_item'', - ''evaluation_grades'' + 'text', + 'content_item', + 'evaluation_grades' ); - v_revision_id := nextval(''t_acs_object_id_seq''); + v_revision_id := nextval('t_acs_object_id_seq'); v_grade_id := evaluation__new_grade ( v_item_id, v_revision_id, one_grade.grade_name, one_grade.grade_plural_name, one_grade.weight, - ''evaluation_grades'', + 'evaluation_grades', one_grade.creation_date, one_grade.creation_user, one_grade.creation_ip, one_grade.title, one_grade.description, one_grade.publish_date, null, - ''text/plain'' + 'text/plain' ); for entry in select *, (ci.live_revision = cr.revision_id) as live_p from evaluation_tasks et,cr_revisions cr,cr_items ci, acs_objects o where grade_item_id = one_grade.grade_item_id and cr.revision_id=task_id and cr.item_id=ci.item_id and object_id=ci.item_id order by task_item_id @@ -82,13 +91,13 @@ null, null, entry.storage_type, --storage_type - ''content_item'', -- item_subtype - ''evaluation_tasks'' -- content_type + 'content_item', -- item_subtype + 'evaluation_tasks' -- content_type ); end if; - v_task_revision_id := nextval(''t_acs_object_id_seq''); + v_task_revision_id := nextval('t_acs_object_id_seq'); perform evaluation__new_task ( v_task_item_id, v_task_revision_id, entry.task_name, @@ -128,5 +137,6 @@ end loop; return 0; - end; -' language 'plpgsql'; + END; + +$$ LANGUAGE plpgsql;