Index: openacs-4/packages/user-tracking/www/communities-card.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/user-tracking/www/communities-card.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/user-tracking/www/communities-card.tcl 1 Mar 2005 17:35:37 -0000 1.1 +++ openacs-4/packages/user-tracking/www/communities-card.tcl 14 Apr 2005 15:44:27 -0000 1.2 @@ -1,38 +1,68 @@ ad_page_contract { - @author yon (yon@openforce.net) - @creation-date 2002-01-30 - @version $Id$ + @author doa (doa@tid.es) + @author sergiog (sergiog@tid.es) + @creation-date 2005-03-01 } -query { - {community_id ""} - {type ""} - {NofSub ""} - {NofMembers ""} - {NofUsers ""} - {NofAdmin ""} - {NofForums ""} - {NofFaqs ""} - {NofNews ""} - {NofSurveys ""} - {name ""} - {creation_date ""} - {id ""} - -} -properties { - type:onevalue + {type "general"} + {onlyuser ""} + {onlylines ""} + {config "site"} + {nodata_p "0"} + {noloading "1"} + {pretype ""} + {month ""} + {year ""} + {mydate:array ""} + {community_id} +} -properties { + TotalUnique:onevalue + TotalPages:onevalue + TotalAsked:onevalue + NofMembers:onevalue + NofUsers:onevalue + LastVisit:onevalue + LastRegistration:onevalue + TotalVisits:onevalue + DataFileName:onevalue + FirstTime:onevalue + LastTime:onevalue + LastUp:onevalue + config:onevalue + pretype:onevalue + datebox:onevalue + mydate:onevalue + today:onevalue + asked_day:onevalue + community_id:onevalue + hidden:onevalue + hidden2:onevalue NofSub:onevalue NofMembers:onevalue NofUsers:onevalue - NofAdmin:onevalue - NofForums:onevalue - NofFaqs:onevalue - NofNews:onevalue - NofSurveys:onevalue - name:onevalue - creation_date:onevalue - id:onevalue + NofAdmin:onevalue + } +if {[exists_and_not_null year] & [exists_and_not_null month]} { + set datebox [dt_widget_datetime -default "$year-$month-01" mydate "months"] +} elseif {[exists_and_not_null mydate(year)] & [exists_and_not_null mydate(month)]} { + set datebox [dt_widget_datetime -default "$mydate(year)-$mydate(month)-01" mydate "months"] + set year $mydate(year) + set month $mydate(month) +} else { +set datebox [dt_widget_datetime -default now mydate "months"] + set year [template::util::date::get_property year [template::util::date::today]] + set month [template::util::date::get_property month [template::util::date::today]] +} + +set fmt "%Y-%m-%d" +set today [clock seconds] +set asked_date [clock scan "$year-$month-1"] + + +# ----------------------------------------------- + if {![exists_and_not_null referer]} { set referer "[user-tracking::get_package_url]/communities-stats" } @@ -46,8 +76,7 @@ ad_require_permission $community_id "admin" -#Hay que modificar el titulo de la pagina -set page_title [_ user-tracking.User_Stats] +set page_title [_ user-tracking.lt_Communities_Stats] set context [list $page_title] #Each kind of community is a number: Club 1, Class 2, other 3 @@ -77,26 +106,167 @@ set rels $rol_admin_list set NofAdmin [db_string select_members_count_by_type {} ] +# ------------------------------------------- -set package_key "forums" -if {[db_0or1row select_package_exists {}]} { - set NofForums [db_string select_forums_count {} ] -} +set DataFileName [user-tracking::get_data_file_name $community_id "" $config $year $month] +set hidden [export_vars -form {community_id}] +set hidden2 [export_vars -form { {config} {url "communities-card"} {onlylines $community_id} }] -set package_key "faq" -if {[db_0or1row select_package_exists {}]} { - set NofFaqs [db_string select_faqs_count {} ] -} +if {$asked_date <= $today } { -set package_key "news" -if {[db_0or1row select_package_exists {}]} { - set NofNews [db_string select_news_count {} ] + set nodata_p 0 + + if {[file exists $DataFileName]} { + + set nodata_p 1 + set dataFile [open "$DataFileName" r] + + #Getting map + set linea [gets $dataFile] + set fin [eof $dataFile] + set patron "(BEGIN_MAP) (.*)" + while { $fin == 0} { + set linea [gets $dataFile] + set fin [eof $dataFile] + if { [regexp $patron $linea todo part1 SectionCount] ==1 } { + set fin 1 + } + } + + set fin 0 + set patron "^(\[A-Z\\_0-9\]*) (.*)" + while { $fin == 0} { + set linea [gets $dataFile] + set fin [eof $dataFile] + if { [regexp $patron $linea todo part1 part2] ==1 } { + set Map($part1) $part2 + } + if { $linea == "END_MAP"} { + set fin 1 + } + } + + #Getting data in general section + + set pos $Map(POS_GENERAL) + seek $dataFile $pos + set linea [gets $dataFile] + set patron "(BEGIN_GENERAL) (.*)" + while { ![regexp $patron $linea todo part1 part2] } { + set linea [gets $dataFile] + if {[eof $dataFile]} { + set part2 0 + break; + } + } + set i $part2 + + while { $i > 0} { + set linea [gets $dataFile] + set campos [split $linea] + switch [lindex $campos 0] { + FirstTime { + set FirstTime [user-tracking::converts_date [lindex $campos 1]] + } + LastTime { + set LastTime [user-tracking::converts_date [lindex $campos 1]] + } + LastUpdate { + set LastUp [user-tracking::converts_date [lindex $campos 1]] + } + TotalVisits { + set TotalVisits [lindex $campos 1] + } + TotalUnique { + set TotalUnique [lindex $campos 1] + } + default {} + } + set i [expr $i - 1] + if {[eof $dataFile]} { #Wrong file? + break; + } + } + + #Getting number of visited pages + + set pos $Map(POS_DAY) + seek $dataFile $pos + set linea [gets $dataFile] + set patron "(BEGIN_DAY) (.*)" + while { ![regexp $patron $linea todo part1 part2] } { + set linea [gets $dataFile] + if {[eof $dataFile]} { + set part2 0 + break; + } + } + + set i $part2 + + set TotalPages 0 + set TotalAsked 0 + + while { $i > 0} { + set linea [gets $dataFile] + set campos [split $linea] + set TotalPages [expr $TotalPages+ [lindex $campos 1]] + set TotalAsked [expr $TotalAsked+ [lindex $campos 2]] + set i [expr $i - 1] + if {[eof $dataFile]} { #wrong file? + break; + } + } + + close $dataFile + + template::multirow create summary from to nvisitors nsessions npages nhits + multirow append summary $FirstTime $LastTime $TotalUnique $TotalVisits $TotalPages $TotalAsked + set medSes [expr $TotalVisits/$TotalUnique] + template::list::create \ + -name summary \ + -multirow summary \ + -elements { + from { + label "#user-tracking.Data_from#" + display_col from + html {align center} + } + to { + label "#user-tracking.Data_to#" + display_col to + html {align center} + } + nvisitors { + label "#user-tracking.Number_of_visitors#" + display_col nvisitors + html {align center} + } + nsessions { + label "#user-tracking.Number_of_sessions#" + display_template { +
@summary.nsessions@
($medSes #user-tracking.visits_by_user#)
+ } + } + npages { + label "#user-tracking.Visited_Pages#" + display_col npages + html {align center} + } + nhits { + label "#user-tracking.Hits#" + display_col nhits + html {align center} + } + + } \ + -html { align center } + + } else { + if {$noloading eq 0} { + set nodata_p 1 + } } - -set package_key "survey" -if {[db_0or1row select_package_exists {}]} { - set NofSurveys [db_string select_surveys_count {} ] } - ad_return_template