Index: openacs-4/packages/workflow/sql/oracle/upgrade/upgrade-2.0.0b3-2.0.0b4.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/sql/oracle/upgrade/upgrade-2.0.0b3-2.0.0b4.sql,v diff -u -N -r1.1 -r1.1.2.1 --- openacs-4/packages/workflow/sql/oracle/upgrade/upgrade-2.0.0b3-2.0.0b4.sql 29 Jun 2004 10:18:11 -0000 1.1 +++ openacs-4/packages/workflow/sql/oracle/upgrade/upgrade-2.0.0b3-2.0.0b4.sql 16 Dec 2004 22:34:25 -0000 1.1.2.1 @@ -1,107 +1,54 @@ --- Add package_id parameter. With the addition of package_id to acs_objects --- (TIP #42) it is necessary to provide a package_id if your case objects are --- not CR items, otherwise content_item.new freaks out. +-- +-- +-- +-- @author Jade Rubick (jader@bread.com) +-- From bug #2210 +-- @creation-date 2004-12-16 +-- @arch-tag: 16d12f6e-d889-45a4-b7d5-df75388b11fe +-- @cvs-id $Id$ +-- -create or replace package workflow_case_log_entry -as - function new( - entry_id in integer, - case_id in integer, - action_id in integer, - comment in varchar, - comment_mime_type in varchar, - creation_user in integer, - creation_ip in varchar, - content_type in varchar default 'workflow_case_log_entry', - package_id in integer - ) return integer; +create or replace package body workflow_case_pkg +as + function get_pretty_state( + workflow_short_name in varchar, + object_id in integer + ) return varchar + is + v_state_pretty varchar(4000); + v_object_id integer; + begin + v_object_id := object_id; -end workflow_case_log_entry; -/ -show errors + select s.pretty_name + into v_state_pretty + from workflows w, + workflow_cases c, + workflow_case_fsm cfsm, + workflow_fsm_states s + where w.short_name = workflow_short_name + and c.object_id = v_object_id + and c.workflow_id = w.workflow_id + and cfsm.case_id = c.case_id + and s.state_id = cfsm.current_state; -create or replace package body workflow_case_log_entry -as - function new( - entry_id in integer, - case_id in integer, - action_id in integer, - comment in varchar, - comment_mime_type in varchar, - creation_user in integer, - creation_ip in varchar, - content_type in varchar default 'workflow_case_log_entry', - package_id in integer - ) return integer + return v_state_pretty; + + end get_pretty_state; + + function del( + delete_case_id in integer + ) return integer is - v_name varchar2(4000); -- XXX aufflick fix this - v_action_short_name varchar2(4000); - v_action_pretty_past_tense varchar2(4000); - v_case_object_id integer; - v_item_id integer; - v_revision_id integer; - v_package_id integer; begin - select short_name, pretty_past_tense - into v_action_short_name, v_action_pretty_past_tense - from workflow_actions - where action_id = new.action_id; - -- use case object as context_id - select object_id - into v_case_object_id + -- All workflow data cascades from the case id + delete from workflow_cases - where case_id = new.case_id; + where case_id = workflow_case_pkg.del.delete_case_id; - -- build the unique name - if entry_id is not null then - v_item_id := entry_id; - else - select acs_object_id_seq.nextval into v_item_id from dual; - end if; - v_name := v_action_short_name || ' ' || v_item_id; + return 0; + end del; - -- get the package_id - if package_id is not null then - v_package_id := package_id; - else - -- this will return null if the app stores the package_id - -- in a package-specific table instead of acs_objects - v_package_id := acs_object__package_id(v_case_object_id); - end if; - - v_item_id := content_item.new ( - item_id => v_item_id, - name => v_name, - parent_id => v_case_object_id, - title => v_action_pretty_past_tense, - creation_date => sysdate(), - creation_user => creation_user, - context_id => v_case_object_id, - creation_ip => creation_ip, - is_live => 't', - mime_type => comment_mime_type, - text => comment, - storage_type => 'text', - item_subtype => 'content_item', - content_type => content_type, - package_id => package_id - ); - - -- insert the row into the single-column entry revision table - v_revision_id := content_item.get_live_revision (v_item_id); - - insert into workflow_case_log_rev (entry_rev_id) - values (v_revision_id); - - -- insert into workflow-case-log - -- raise_application_error(-20000, 'about to insert ' || v_item_id || ',' || new.case_id || ',' || new.action_id); - insert into workflow_case_log (entry_id, case_id, action_id) - values (v_item_id, new.case_id, new.action_id); - - -- return id of newly created item - return v_item_id; - end new; - -end workflow_case_log_entry; +end workflow_case_pkg; / show errors