Index: openacs-4/packages/cms/www/modules/sitemap/delete-items.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/cms/www/modules/sitemap/delete-items.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/cms/www/modules/sitemap/delete-items.tcl 20 Apr 2001 20:51:10 -0000 1.1 +++ openacs-4/packages/cms/www/modules/sitemap/delete-items.tcl 24 May 2001 01:30:52 -0000 1.2 @@ -86,18 +86,18 @@ set deleted_items [element get_values delete deleted_items] - set db [template::begin_db_transaction] + db_transaction { - set parents [list] - foreach del_item_id $deleted_items { - set is_symlink [element get_values delete "is_symlink_$del_item_id"] - set is_folder [element get_values delete "is_folder_$del_item_id"] - set is_template [element get_values delete "is_template_$del_item_id"] + set parents [list] + foreach del_item_id $deleted_items { + set is_symlink [element get_values delete "is_symlink_$del_item_id"] + set is_folder [element get_values delete "is_folder_$del_item_id"] + set is_template [element get_values delete "is_template_$del_item_id"] - # get all the parent_id's of the items being deleted - # because we need to flush the paginator cache for each of - # these folders - template::query flush_list onelist " + # get all the parent_id's of the items being deleted + # because we need to flush the paginator cache for each of + # these folders + template::query get_list flush_list onelist " select parent_id from @@ -107,59 +107,55 @@ " - # set up the call to the proper PL/SQL delete procedure - if { [string equal $is_symlink "t"] } { - set delete_proc "content_symlink.delete" - set delete_key "symlink_id" - } elseif { [string equal $is_folder "t"] } { - set delete_proc "content_folder.delete" - set delete_key "folder_id" - } elseif { [string equal $is_template "t"] } { - set delete_proc "content_template.delete" - set delete_key "template_id" - } else { - set delete_proc "content_item.delete" - set delete_key "item_id" - } + # set up the call to the proper PL/SQL delete procedure + if { [string equal $is_symlink "t"] } { + set delete_proc "content_symlink.delete" + set delete_key "symlink_id" + } elseif { [string equal $is_folder "t"] } { + set delete_proc "content_folder.delete" + set delete_key "folder_id" + } elseif { [string equal $is_template "t"] } { + set delete_proc "content_template.delete" + set delete_key "template_id" + } else { + set delete_proc "content_item.delete" + set delete_key "item_id" + } - # the following SQL will have this form: - # content_something.delete( - # something_id => :del_item_id - # ); - set sql " + # the following SQL will have this form: + # content_something.delete( + # something_id => :del_item_id + # ); + + if { [catch { db_dml delete_items " begin $delete_proc ( $delete_key => :del_item_id ); - end;" + end;" } errmsg] } { + ns_log notice \ + "../../sitemap/delete.tcl caught error in dml: $sql - $errmsg" + ns_log notice \ + "../../sitemap/delete.tcl - Item $del_item_id was not deleted" + } + # build a list of parent items whose paginator cache needs flushing + foreach parent_id $flush_list { + # flush as few times as necessary + if { [lsearch -exact $parents $parent_id] == -1 } { + # flush cache + lappend parents $parent_id - if { [catch { template::query delete_items dml $sql } errmsg] } { - ns_log notice \ - "../../sitemap/delete.tcl caught error in dml: $sql - $errmsg" - ns_log notice \ - "../../sitemap/delete.tcl - Item $del_item_id was not deleted" - } + if { $parent_id == [cm::modules::${mount_point}::getRootFolderID] } { + set parent_id "" + } + cms_folder::flush $mount_point $parent_id - # build a list of parent items whose paginator cache needs flushing - foreach parent_id $flush_list { - # flush as few times as necessary - if { [lsearch -exact $parents $parent_id] == -1 } { - # flush cache - lappend parents $parent_id - - if { $parent_id == [cm::modules::${mount_point}::getRootFolderID] } { - set parent_id "" - } - cms_folder::flush $mount_point $parent_id - - } - } + } + } + } } - template::end_db_transaction - template::release_db_handle - clipboard::free $clip # Specify a null id so that the entire branch will be refreshed