Index: openacs-4/packages/chat/tcl/xotcl-chat-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/Attic/xotcl-chat-procs.tcl,v
diff -u -r1.1.2.9 -r1.1.2.10
--- openacs-4/packages/chat/tcl/xotcl-chat-procs.tcl 9 Feb 2020 15:30:16 -0000 1.1.2.9
+++ openacs-4/packages/chat/tcl/xotcl-chat-procs.tcl 17 Mar 2020 14:06:38 -0000 1.1.2.10
@@ -285,37 +285,77 @@
new transcript and then delete them.
} {
if {${:auto_transcript_p}} {
- set room_id ${:room_id}
- set contents [list]
- ::xo::dc foreach get_archives_messages {
- select msg,
- creation_user,
- to_char(creation_date, 'DD.MM.YYYY hh24:mi:ss') as creation_date
- from chat_msgs
- where room_id = :room_id
- and msg is not null
- order by creation_date
- } {
- if {$creation_user > 0} {
- set user_name [::chat::Package get_user_name -user_id $creation_user]
- } else {
- set user_name "system"
+ :create_transcript
+ }
+ :delete_messages
+ }
+
+ ::xo::db::chat_room ad_instproc create_transcript {
+ -pretty_name
+ -description
+ -creation_user
+ {-creation_ip ""}
+ } {
+ Creates a new transcript of all current chat room messages.
+
+ @return transcript_id of the new transcript or the empty
+ string when no messages were in the chat room.
+ } {
+ if {![info exists pretty_name]} {
+ set today [clock format [clock seconds] -format "%d.%m.%Y"]
+ set pretty_name "#chat.transcript_of_date# $today"
+ }
+ if {![info exists description]} {
+ set description "#chat.automatically_created_transcript#"
+ }
+ if {![info exists creation_user]} {
+ set creation_user ${:creation_user}
+ }
+
+ set contents [:transcript_messages]
+ if {[llength $contents] > 0} {
+ set t [::xo::db::chat_transcript new \
+ -creation_user $creation_user \
+ -creation_ip $creation_ip \
+ -pretty_name $pretty_name \
+ -description $description \
+ -package_id ${:package_id} \
+ -room_id ${:room_id} \
+ -contents [join $contents \n]]
+ $t save_new
+ return [$t set transcript_id]
+ }
+ }
+
+ ::xo::db::chat_room ad_instproc transcript_messages {} {
+ Formats the current content of a chat room as a list of
+ messages formatted so they can be displayed or stored in the
+ transcript.
+
+ @return list of formatted messages
+ } {
+ set room_id ${:room_id}
+ set contents [list]
+ ::xo::dc foreach get_archives_messages {
+ select msg,
+ creation_user,
+ to_char(creation_date, 'DD.MM.YYYY hh24:mi:ss') as creation_date
+ from chat_msgs
+ where room_id = :room_id
+ and msg is not null
+ order by creation_date
+ } {
+ if {$creation_user > 0} {
+ set user_name [::chat::Package get_user_name -user_id $creation_user]
+ if {$user_name eq ""} {
+ set user_name Unknown
}
- lappend contents "\[$creation_date\] ${user_name}: $msg"
+ } else {
+ set user_name "system"
}
- if {[llength $contents] > 0} {
- set today [clock format [clock seconds] -format "%d.%m.%Y"]
- set t [::xo::db::chat_transcript new \
- -creation_user ${:creation_user} \
- -pretty_name "#chat.transcript_of_date# $today" \
- -description "#chat.automatically_created_transcript#" \
- -package_id ${:package_id} \
- -room_id ${:room_id} \
- -contents [join $contents "
\n"]]
- $t save_new
- }
+ lappend contents "\[$creation_date\] ${user_name}: $msg"
}
- :delete_messages
+ return $contents
}
#