- Publicity: Public Only All
xowiki-callback-procs.tcl
XoWiki - Callback procs
- Location:
- packages/xowiki/tcl/xowiki-callback-procs.tcl
- Created:
- 2006-08-08
- Author:
- Gustaf Neumann
- CVS Identification:
$Id: xowiki-callback-procs.tcl,v 1.81 2024/09/11 06:15:56 gustafn Exp $
Procedures in this file
- xowiki::before-uninstantiate (public)
Detailed information
xowiki::before-uninstantiate (public)
xowiki::before-uninstantiate -package_id package_id
Callback to be called whenever a package instance is deleted.
- Switches:
- -package_id (required)
- Author:
- Gustaf Neumann
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- xowiki_test_cases
Content File Source
::xo::library doc { XoWiki - Callback procs @creation-date 2006-08-08 @author Gustaf Neumann @cvs-id $Id: xowiki-callback-procs.tcl,v 1.81 2024/09/11 06:15:56 gustafn Exp $ } namespace eval ::xowiki { ad_proc -private ::xowiki::after-install {} { ::xowiki::sc::register_implementations ::xowiki::notifications-install } ad_proc -private ::xowiki::before-uninstall {} { ns_log notice "Executing ::xowiki::before-uninstall" ::xowiki::sc::unregister_implementations ::xowiki::notifications-uninstall # Unregister all types from all folders ::xowiki::Page folder_type_unregister_all # Delete object types foreach type [::xowiki::Page object_types -subtypes_first true] { ::xo::db::sql::content_type drop_type -content_type $type \ -drop_children_p t -drop_table_p t -drop_objects_p t } } d_proc -public ::xowiki::before-uninstantiate { {-package_id:required} } { Callback to be called whenever a package instance is deleted. @author Gustaf Neumann } { ns_log notice "Executing before-uninstantiate" # Delete the messages of general comments to allow one to # uninstantiate the package without violating constraints. general_comments_delete_messages -package_id $package_id set root_folder_id [::xo::db::CrClass lookup -name "xowiki: $package_id" -parent_id -100] if {$root_folder_id ne "0"} { # we deal with a correctly installed package if {[::xo::dc 0or1row is_transformed_folder { select 1 from cr_folders where folder_id = :root_folder_id} ]} { ::xo::db::sql::content_folder delete -folder_id $root_folder_id -cascade_p 1 } else { ::xo::db::sql::content_item delete -item_id $root_folder_id } } set instance_name [apm_instance_name_from_id $package_id] ::xo::xotcl_package_cache flush package_id-$instance_name ::xo::xotcl_package_cache flush package_key-$package_id ::xo::xotcl_package_cache flush root_folder-$package_id ::xo::xotcl_object_type_cache flush -partition_key -100 -100-$instance_name ns_log notice "before-uninstantiate DONE" } # # upgrade logic # d_proc -private ::xowiki::upgrade_callback { {-from_version_name:required} {-to_version_name:required} } { Callback for upgrading @author Gustaf Neumann (neumann@wu-wien.ac.at) } { ns_log notice "-- UPGRADE $from_version_name -> $to_version_name" set upgrade_file $::acs::rootdir/packages/xowiki/tcl/upgrade/upgrade.tcl # # The upgrade file contains the upgrade proc of the following form: # # proc __upgrade {from_version_name to_version_name} {...} # source $upgrade_file __upgrade $from_version_name $to_version_name # The upgrade is done, there is no need to keep this proc in # memory around, so we can delete it. rename __upgrade "" } d_proc -public -callback subsite::parameter_changed -impl xowiki { -package_id:required -parameter:required -value:required } { Implementation of subsite::parameter_changed for xowiki parameters. @param package_id the package_id of the package the parameter was changed for @param parameter the parameter name @param value the new value } { if {[::xowiki::Package is_xowiki_p $package_id]} { if {$parameter eq "use_hstore" && $value eq 1} { # hstore has been activated: make sure instance attributes are # persisted in there ::xowiki::hstore::update_hstore $package_id } } } } ::xo::library source_dependent # # Local variables: # mode: tcl # tcl-indent-level: 2 # indent-tabs-mode: nil # End: