Index: openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl,v diff -u -r1.51 -r1.52 --- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 2 Oct 2003 14:32:22 -0000 1.51 +++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 3 Oct 2003 10:14:30 -0000 1.52 @@ -9,7 +9,6 @@ } namespace eval util {} -namespace eval util::whos_online {} # Let's define the nsv arrays out here, so we can call nsv_exists # on their keys without checking to see if it already exists. @@ -4443,197 +4442,3 @@ } -#################### -# -# Procs in the util::whos_online namespace -# -#################### - -ad_proc -private util::whos_online::init {} { - Schedules the flush proc that cleans up old who's online values. - Makes sure the unregistered visitor (user_id=0) is invisible. - - @author Bjoern Kiesbye -} { - ad_schedule_proc -thread t 3600 util::whos_online::flush - - # We typically don't want to see the unregistered user in the who's online list - set_invisible 0 -} - -ad_proc -private util::whos_online::flush {} { - Removing all user_ids from the last_hit (nsv_set) wich have a time Stamp older than - the number of seconds indicated by the proc util::whos_online::interval. - - @author Bjoern Kiesbye -} { - array set last_hit [nsv_array get last_hit] - set onliners_out [list] - set interval 1 - set oldtime [expr [ns_time] - [interval]] - - for {set search [array startsearch last_hit]} {[array anymore last_hit $search]} {} { - set user [array nextelement last_hit $search] - set time $last_hit($user) - if {$time<$oldtime} { - lappend onliners_out $user - } - } - - array donesearch last_hit $search - - for {set i 0 } { $i < [llength $onliners_out]} {incr i} { - set user_id [lindex $onliners_out $i] - if { [nsv_exists last_hit $user_id] } { - nsv_unset last_hit $user_id - } - if { [nsv_exists invisible_users $user_id] } { - nsv_unset invisible_users $user_id - } - } -} - -ad_proc -private util::whos_online::interval {} { - Returns the last number of seconds within a user must have requested - a page to be considered online. Based on the LastVisitUpdateInterval parameter - of the main site and defaults to 600 seconds = 10 minutes. - - @author Peter Marklund -} { - return [parameter::get \ - -package_id [subsite::main_site_id] \ - -parameter LastVisitUpdateInterval \ - -default 600] -} - -ad_proc -private util::whos_online::user_requested_page { user_id } { - Records that the user with given id requested a page on the server - - @author Bjoern Kiesbye -} { - nsv_set last_hit $user_id [ns_time] -} - -ad_proc -public util::whos_online::time_since_last_request { user_id } { - Returns the number of seconds since the user with given id requested - a page. - - @author Peter Marklund -} { - return [expr [ns_time] - [nsv_get last_hit $user_id]] -} - -ad_proc -public util::whos_online::user_ids {} { - This function returns a list of user_ids from users wich have requested a page - from this Server in the last 10 min.And aren't set to invisible. - - @author Bjoern Kiesbye -} { - array set last_hit [nsv_array get last_hit] - set onliners [list] - set oldtime [expr [ns_time] - [interval]] - - array set invisible [nsv_array get invisible_users] - - for {set search [array startsearch last_hit]} {[array anymore last_hit $search]} {} { - set user [array nextelement last_hit $search] - set time $last_hit($user) - set invi 0 - if {$time>$oldtime} { - for { set search2 [array startsearch invisible]} {[array anymore invisible $search2]} {} { - set user_cur [array nextelement invisible $search2] - if {$user_cur == $user} { - set invi 255 - break - } - } - array donesearch invisible $search2 - if {$invi == 0} { - lappend onliners $user - } - } - } - - array donesearch last_hit $search - - return $onliners -} - -ad_proc -public util::whos_online::all_user_ids {} { - This function returns a list of user_ids from users wich have requested a page - from this Server in the last 10 min.Even those wich are set to invisible. - - @author Bjoern Kiesbye -} { - array set last_hit [nsv_array get last_hit] - set onliners [list] - set oldtime [expr [ns_time] - [interval]] - - array set invisible [nsv_array get invisible_users] - - for {set search [array startsearch last_hit]} {[array anymore last_hit $search]} {} { - set user [array nextelement last_hit $search] - set time $last_hit($user) - set invi 0 - if {$time>$oldtime} { - lappend onliners $user - } - } - - array donesearch last_hit $search - - return $onliners -} - -ad_proc -public util::whos_online::set_invisible {user_id} { - This procedure sets the user user_id to invisible, - his user_id will not be returned by user_ids. - The invisible state will only last as long as the user is online. - - @author Bjoern Kiesbye -} { - nsv_set invisible_users $user_id [ns_time] -} - -ad_proc -public util::whos_online::unset_invisible {user_id} { - This procedure unsets the invisible state of user_id. - - @author Bjoern Kiesbye -} { - nsv_unset invisible_users $user_id -} - - -ad_proc -public util::whos_online::check_invisible {user_id} { - This function checks if the user user_id is set - to invisible (true) , or is not set to invisible (false) - - @author Bjoern Kiesbye -} { - array set invisible [nsv_array get invisible_users] - - for {set search [array startsearch invisible]} {[array anymore invisible $search]} {} { - set user [array nextelement invisible $search] - if {$user == $user_id} { - array donesearch invisible $search - return "true" - } - array donesearch invisible $search - return "false" - } -} - -ad_proc -public util::whos_online::all_invisible_user_ids {} { - This function returns a list with all user_ids wich are set to invisible - - @author Bjoern Kiesbye -} { - array set invisible [nsv_array get invisible_users] - set return_invisible [list] - for {set search [array startsearch invisible]} {[array anymore invisible $search]} {} { - lappend return_invisible [array nextelement invisible $search] - } - - array donesearch invisible $search - return $return_invisible -}