No registered users in community rubick
in last 10 minutes
in last 10 minutes
Script to import greenspun's forums to OpenACS forums
This is a little script I wrote to import forums from Greenspun's old forum package to the OpenACS forums.
# to do: set forum_id
# set up second dvfile
# do not use Safari or another browser that times out
set dvfile1 [open "/home/path/forum_dump.html" r]
set dvcontent1 [read $dvfile1]
close $dvfile1
ns_write "<html>Start"
set lines [split $dvcontent1 "|"]
set position 0
foreach line $lines {
if {$position == 0} {
set message_id $line
} elseif {$position == 1} {
set message $line
} elseif {$position == 2} {
set posting_date $line
} elseif {$position == 3} {
set subject $line
} elseif {$position == 4} {
set topic $line
} elseif {$position == 5} {
set creator_name $line
} elseif {$position == 6} {
set creator_email $line
} elseif {$position == 7} {
# use the message_id from before, create list of last items, then use
# message_id for next item
if {![regexp {(.*)<br>(.*)} $line match refers_to next_message_id]} {
# we're done
set message_id $line
ns_write "last one, hopefully"
}
set new_message_id [db_nextval acs_object_id_seq]
set message_map($message_id) $new_message_id
lappend items [list $new_message_id $refers_to $subject $message $creator_name]
set message_id $next_message_id
set position 0
}
ns_write "."
incr position
}
# this is hardcoded to the Forum ID
set forum_id 6823
# this is hardcoded to the user ID of the person you want the forum postings to be under.
set user_id 2539
ns_write "<P>"
foreach item $items {
ns_write "<hr>Line: $item<BR>"
set message_id [lindex $item 0]
set refers_to [lindex $item 1]
set subject [lindex $item 2]
set message [lindex $item 3]
set creator_name [lindex $item 4]
if {[string equal $refers_to "no referal"] || [string equal $refers_to "no"]
} {
set refers_to ""
forum::message::new \
-forum_id $forum_id \
-message_id $message_id \
-parent_id $refers_to \
-subject $subject \
-content "$message --$creator_name (posting from archive)" \
-html_p "f" \
-user_id $user_id
} else {
lappend need_parents $item
}
}
foreach item $need_parents {
ns_write "<hr>Parent Line: $item<BR>"
set message_id [lindex $item 0]
set refers_to [lindex $item 1]
set subject [lindex $item 2]
set message [lindex $item 3]
set creator_name [lindex $item 4]
if {[string equal $refers_to "no referal"] || [string equal $refers_to "no"]
} {
set refers_to ""
} else {
set refers_to $message_map($refers_to)
}
forum::message::new \
-forum_id $forum_id \
-message_id $message_id \
-parent_id $refers_to \
-subject $subject \
-content "$message --$creator_name (posting from archive)" \
-html_p "f" \
-user_id $user_id
}
# ns_write "$lines"
ns_write "Done.</html>"