Class ::xowiki::ArchiveFile
::xowiki::ArchiveFile
create ... \
[ -file file ] \
[ -name name ] \
[ -parent_id parent_id ] \
[ -use_photo_form (default "false") ]
Class Relations
- class: ::xotcl::Class
![[i]](/resources/acs-subsite/ZoomIn16.gif)
- superclass: ::xotcl::Object
![[i]](/resources/acs-subsite/ZoomIn16.gif)
::xotcl::Class create ::xowiki::ArchiveFile \
-superclass ::xotcl::Object
Methods (to be applied on instances)
delete (scripted)
file delete -force -- ${:tmpdir}
nextfile (setter)
import (scripted)
set package_id [::$parent_id package_id]
foreach tmpfile [glob -nocomplain -directory $dir *] {
set file_name [::file tail $tmpfile]
if {[::file isdirectory $tmpfile]} {
if {[string match "*__MACOSX" $tmpfile]} continue
set folder_object [::$package_id get_page_from_name -assume_folder true -name $file_name -parent_id $parent_id]
if {$folder_object ne ""} {
} else {
set folder_form_id [::$package_id instantiate_forms -forms en:folder.form]
set folder_object [FormPage new -title $file_name -name $file_name -package_id $package_id -parent_id $parent_id -nls_language en_US -instance_attributes {} -page_template $folder_form_id -destroy_on_cleanup ]
$folder_object save_new
::xo::db::CrClass get_instance_from_db -item_id [$folder_object item_id]
}
:import -dir $tmpfile -parent_id [$folder_object item_id]
} else {
set mime_type [::xowiki::guesstype $file_name]
if {[string match "image/*" $mime_type] && [:use_photo_form]} {
set photo_object [::$package_id get_page_from_name -name en:$file_name -parent_id $parent_id]
if {$photo_object ne ""} {
:log "Photo $file_name exists already"
$photo_object set title $file_name
set f [::xowiki::formfield::file new -object $photo_object -name "image" -destroy_on_cleanup]
$f set value $file_name
$f content-type $mime_type
$f set tmpfile $tmpfile
$f convert_to_internal
$photo_object save
} else {
:log "new Photo $file_name"
set photoFormObj [::$package_id instantiate_forms -parent_id $parent_id -forms en:photo.form]
set photo_object [$photoFormObj create_form_page_instance -name en:$file_name -nls_language en_US -creation_user [::xo::cc user_id] -parent_id $parent_id -package_id $package_id -instance_attributes [list image [list name $file_name]]]
$photo_object title $file_name
$photo_object publish_status "ready"
$photo_object save_new ;
set f [::xowiki::formfield::file new -object $photo_object -name "image" -destroy_on_cleanup]
$f set value $file_name
$f content-type $mime_type
$f set tmpfile $tmpfile
$f convert_to_internal
}
} else {
set file_object [::$package_id get_page_from_name -name file:$file_name -parent_id $parent_id]
if {$file_object ne ""} {
:msg "file $file_name exists already"
$file_object set import_file $tmpfile
$file_object set mime_type $mime_type
$file_object set title $file_name
$file_object save
} else {
:msg "file $file_name created new"
set file_object [::xowiki::File new -title $file_name -name file:$file_name -parent_id $parent_id -mime_type $mime_type -package_id $package_id -creation_user [::xo::cc user_id] -destroy_on_cleanup ]
$file_object set import_file $tmpfile
$file_object save_new
}
}
}
}init (scripted)
:destroy_on_cleanup
::xo::db::CrClass get_instance_from_db -item_id ${:parent_id}
set :tmpdir [ad_mktmpdir import]name (setter)
parent_id (setter)
unpack (scripted)
set success 0
switch [::xowiki::guesstype ${:name}] {
application/zip -
application/x-zip -
application/x-zip-compressed {
set success [util::file_content_check -type zip -file ${:file}]
if {!$success} {
util_user_message -message "The uploaded file is apparently not a zip file."
} else {
::util::unzip -source ${:file} -destination ${:tmpdir}
:import -dir ${:tmpdir} -parent_id ${:parent_id}
}
}
application/x-compressed {
if {[string match "*tar.gz" ${:name}]} {
set success [util::file_content_check -type gzip -file ${:file}]
if {!$success} {
util_user_message -message "The uploaded file is apparently not a gzip file."
} else {
set cmd [::util::which tar]
exec $cmd -xzf ${:file} -C ${:tmpdir}
:import -dir ${:tmpdir} -parent_id ${:parent_id}
}
} else {
util_user_message -message "Unknown compressed file type ${:name}."
}
}
default {
util_user_message -message "Type '[::xowiki::guesstype ${:name}]' is not an supported archive format."
}
}
return $successuse_photo_form (setter)