Index: openacs-4/packages/xotcl-core/tcl/cr-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/cr-procs.tcl,v diff -u -r1.76.2.22 -r1.76.2.23 --- openacs-4/packages/xotcl-core/tcl/cr-procs.tcl 9 Aug 2019 19:45:14 -0000 1.76.2.22 +++ openacs-4/packages/xotcl-core/tcl/cr-procs.tcl 12 Sep 2019 16:21:53 -0000 1.76.2.23 @@ -1371,6 +1371,11 @@ # # CrFolder # + # This class is just intended for legacy application or for working + # with the xo::db interface on e.g. folder structures of the file + # storage. There is no usage of CrFolder in all of xowiki and + # derived classes. + # ::xo::db::CrClass create ::xo::db::CrFolder \ -superclass ::xo::db::CrItem \ -pretty_name "Folder" -pretty_plural "Folders" \ @@ -1554,14 +1559,17 @@ if {![nsf::is object $object]} { :create $object } - - $object db_1row [:qn fetch_folder] " + $object set item_id $item_id + $object db_1row [:qn fetch_folder] { SELECT * FROM cr_folders JOIN cr_items on cr_folders.folder_id = cr_items.item_id JOIN acs_objects on cr_folders.folder_id = acs_objects.object_id - WHERE folder_id = $item_id" + WHERE folder_id = :item_id + } - if {$initialize} {$object initialize_loaded_object} + if {$initialize} { + $object initialize_loaded_object + } return $object } @@ -1612,15 +1620,23 @@ return [expr {${:folder_id} eq [::${:package_id} folder_id]} ? true : false] } - ::xo::db::CrFolder instproc delete {} { + ::xo::db::CrFolder ad_instproc delete {} { + Delete the CrFolder instance. This method takes the folder_id of + the current instance. + } { if {[:is_package_root_folder]} { ad_return_error "Removal denied" "Don't delete the package root folder, delete the package" return } - ::xo::db::sql::content_folder del -folder_id ${:folder_id} -cascade_p t + # delegate deletion to the class + [:info class] delete -item_id ${:folder_id} } + ::xo::db::CrFolder proc delete {-item_id} { + ::xo::db::sql::content_folder del -folder_id $item_id -cascade_p t + } + # # Caching interface #