Class ::xowiki::Importer
::xowiki::Importer
create ... \
[ -added (default "0") ] \
[ -inherited (default "0") ] \
[ -package_id package_id ] \
[ -parent_id parent_id ] \
[ -replaced (default "0") ] \
[ -updated (default "0") ] \
[ -user_id user_id ]
Class Relations
- class: ::xotcl::Class
![[i]](/resources/acs-subsite/ZoomIn16.gif)
- superclass: ::xotcl::Object
![[i]](/resources/acs-subsite/ZoomIn16.gif)
::xotcl::Class create ::xowiki::Importer \
-superclass ::xotcl::Object
Methods (to be applied on instances)
added (setter)
import (scripted)
$object demarshall -parent_id [$object parent_id] -package_id ${:package_id} -creation_user ${:user_id} -create_user_ids $create_user_ids
set item_id [::xo::db::CrClass lookup -name [$object name] -parent_id [$object parent_id]]
if {$item_id != 0} {
if {$replace} { ;
::xo::db::CrClass delete -item_id $item_id
set item_id 0
:report_line $object replaced
incr :replaced
} else {
::xo::db::CrClass get_instance_from_db -item_id $item_id
set item ::$item_id
$item copy_content_vars -from_object $object
$item save -use_given_publish_date [$item exists publish_date] -modifying_user [$object set modifying_user]
$object set item_id [$item item_id]
:report_line $item_id updated
incr :updated
}
}
if {$item_id == 0} {
$object save_new -use_given_publish_date [$object exists publish_date] -creation_user [$object set modifying_user]
set item $object
:report_line $object added
incr :added
}
if {[$object exists __category_ids]} {
$item map_categories [$object set __category_ids]
}
${:package_id} flush_references -item_id [$object item_id] -name [$object name]import_all (scripted)
foreach o $objects {
if {[$o exists item_id]} {
set item_ids([$o item_id]) $o
set old_names([$o item_id]) [$o name]
} {
$o item_id ""
}
if {[$o exists parent_id]} {
set parent_ids([$o item_id]) [$o parent_id]
} {
$o parent_id ""
}
set todo($o) 1
if {[$o exists __map_command]} {
$o package_id ${:package_id}
$o eval [$o set __map_command]
}
}
while {[array size todo] > 0} {
set new 0
foreach o [array names todo] {
set old_name [$o name]
set old_item_id [$o item_id]
set old_parent_id [$o parent_id]
if {[$o istype ::xowiki::PageInstance]} {
set old_template_id [$o page_template]
if {![info exists old_names($old_template_id)]} {
set new 0
:msg "need name for $old_template_id. Maybe item_ids for PageTemplate missing?"
break
}
set template_name_key $parent_ids($old_template_id)-$old_names($old_template_id)
if {![info exists name_map($template_name_key)]} {
continue
}
}
if {[info exists item_ids($old_parent_id)]} {
if {![info exists id_map($old_parent_id)]} {
continue
}
}
set need_to_import 1
if {$keep_inherited
&& [$o exists __export_reason]
&& [$o set __export_reason] eq "implicit_page_template"} {
$o unset __export_reason
set page [::${:package_id} get_page_from_item_ref -allow_cross_package_item_refs false -use_package_path true -use_site_wide_pages true -use_prototype_pages false [$o name] ]
if {$page ne ""} {
incr :inherited
unset todo($o)
set o $page
set need_to_import 0
}
}
if {$need_to_import} {
if {[$o istype ::xowiki::PageInstance]} {
$o page_template $name_map($template_name_key)
if {![nsf::is object [$o page_template]]} {
::xo::db::CrClass get_instance_from_db -item_id [$o page_template]
}
}
if {[info exists item_ids($old_parent_id)]} {
$o set parent_id $id_map($old_parent_id)
} else {
$o set parent_id ${:parent_id}
}
:import -object $o -replace $replace -create_user_ids $create_user_ids
unset todo($o)
}
if {$old_item_id ne ""} {
set id_map($old_item_id) [$o item_id]
}
set name_map($old_parent_id-$old_name) [$o item_id]
set new 1
}
if {$new == 0} {
:msg "could not import [array names todo]"
break
}
}
foreach o $objects {if {[nsf::is object $o]} {$o destroy}}
${:package_id} flush_page_fragment_cacheinherited (setter)
init (scripted)
set :log ""
:destroy_on_cleanup
package_id (setter)
parent_id (setter)
replaced (setter)
report (scripted)
return "<b>${:added}</b> #xowiki.objects_newly_inserted#, <b>${:updated}</b> #xowiki.objects_updated#, <b>${:replaced}</b> #xowiki.objects_replaced#, <b>${:inherited}</b> #xowiki.inherited_update_ignored#<p> [:report_lines]"report_line (scripted)
set href [$obj pretty_link]
set name [[$obj package_id] external_name -parent_id [$obj parent_id] [$obj name]]
switch -- $operation {
"added" { set operation [_ xowiki.added] }
"replaced" { set operation [_ xowiki.replaced] }
"updated" { set operation [_ xowiki.updated] }
"inherited" { set operation [_ xowiki.inherited] }
}
append :log "<tr><td>$operation</td><td><a href='[ns_quotehtml $href]'>$name</a></td></tr>\n"report_lines (scripted)
util_user_message -message "[_ xowiki.Import_successful]"
return "<table><caption>Details</caption>${:log}</table>"updated (setter)
user_id (setter)