Index: openacs-4/packages/workflow/tcl/case-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/case-procs.tcl,v diff -u -N -r1.42 -r1.43 --- openacs-4/packages/workflow/tcl/case-procs.tcl 18 Jun 2008 21:42:42 -0000 1.42 +++ openacs-4/packages/workflow/tcl/case-procs.tcl 17 Jun 2010 18:46:09 -0000 1.43 @@ -1206,12 +1206,17 @@ } { db_transaction { if { $replace_p } { - db_dml delete_assignees {} + workflow::case::role::assignees_remove -case_id $case_id -role_id $role_id } foreach party_id $party_ids { if { [catch { db_dml insert_assignee {} + + callback workflow::case::role::after_assign \ + -case_id $case_id \ + -party_id $party_id + } errMsg] } { set already_assigned_p [db_string already_assigned_p {}] if { !$already_assigned_p } { @@ -1240,9 +1245,38 @@ } { db_dml delete_assignee {} + callback workflow::case::role::after_unassign \ + -case_id $case_id \ + -party_id $party_id + workflow::case::role::flush_cache -case_id $case_id } +ad_proc -public workflow::case::role::assignees_remove { + {-case_id:required} + {-role_id:required} +} { + Remove all assignees in this role + + @param case_id the ID of the case. + @param role_id the ID of the role to remove the assignees from. + + @author Ryan Gallimore +} { + set assignees [workflow::case::role::get_assignees -case_id $case_id -role_id $role_id] + foreach assignee $assignees { + foreach {party_id email name} { + callback workflow::case::role::after_unassign \ + -case_id $case_id \ + -party_id $party_id + } + } + + db_dml delete_assignees {} + + workflow::case::role::flush_cache -case_id $case_id +} + ad_proc -public workflow::case::role::assign { {-case_id:required} {-array:required}