--- loncom/lonnet/perl/lonnet.pm 2001/12/06 19:23:42 1.184 +++ loncom/lonnet/perl/lonnet.pm 2001/12/07 20:05:36 1.187 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.184 2001/12/06 19:23:42 www Exp $ +# $Id: lonnet.pm,v 1.187 2001/12/07 20:05:36 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -62,9 +62,9 @@ # 11/17,11/20,11/22,11/29 Gerd Kortemeyer # 12/5 Matthew Hall # 12/5 Guy Albertelli -# 12/6 Gerd Kortemeyer +# 12/6,12/7 Gerd Kortemeyer # -# $Id: lonnet.pm,v 1.184 2001/12/06 19:23:42 www Exp $ +# $Id: lonnet.pm,v 1.187 2001/12/07 20:05:36 www Exp $ # ### @@ -172,7 +172,7 @@ use Apache::File; use LWP::UserAgent(); use HTTP::Headers; use vars -qw(%perlvar %hostname %homecache %hostip %spareid %hostdom %libserv %pr %prp %fe %fd %metacache %packagetab %courselogs %accesshash); +qw(%perlvar %hostname %homecache %hostip %spareid %hostdom %libserv %pr %prp %fe %fd %metacache %packagetab %courselogs %accesshash $processmarker $dumpcount); use IO::Socket; use GDBM_File; use Apache::Constants qw(:common :http); @@ -769,6 +769,16 @@ sub flushcourselogs { } } } keys %courselogs; + &logthis('Flushing access logs'); + map { + my $entry=$_; + $entry=~/\_\_\_(\w+)\/(\w+)\/(.*)\_\_\_(\w+)$/; + my %temphash=($entry => $accesshash{$entry}); + if (&Apache::lonnet::put('resevaldata',\%temphash,$1,$2) eq 'ok') { + delete $accesshash{$entry}; + } + } keys %accesshash; + $dumpcount++; } sub courselog { @@ -790,6 +800,7 @@ sub courseacclog { unless ($ENV{'request.course.id'}) { return ''; } my $what=$fnsymb.':'.$ENV{'user.name'}.':'.$ENV{'user.domain'}; if ($what=~/(problem|exam|quiz|assess|survey|form)$/) { + $what.=':POST'; map { if ($_=~/^form\.(.*)/) { $what.=':'.$1.'='.$ENV{$_}; @@ -799,6 +810,18 @@ sub courseacclog { &courselog($what); } +sub countacc { + my $url=&declutter(shift); + unless ($ENV{'request.course.id'}) { return ''; } + $accesshash{$ENV{'request.course.id'}.'___'.$url.'___course'}=1; + my $key=$processmarker.'_'.$dumpcount.'___'.$url.'___count'; + if (defined($accesshash{$key})) { + $accesshash{$key}++; + } else { + $accesshash{$key}=1; + } +} + # ----------------------------------------------------------- Check out an item sub checkout { @@ -1080,7 +1103,11 @@ sub store { &devalidate($symb); $symb=escape($symb); - if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { return ''; } } + if (!$namespace) { + unless ($namespace=$ENV{'request.course.id'}) { + return ''; + } + } if (!$domain) { $domain=$ENV{'user.domain'}; } if (!$stuname) { $stuname=$ENV{'user.name'}; } if (!$home) { $home=$ENV{'user.home'}; } @@ -1089,6 +1116,7 @@ sub store { $namevalue.=escape($_).'='.escape($$storehash{$_}).'&'; } keys %$storehash; $namevalue=~s/\&$//; + &courselog($symb.':'.$stuname.':'.$domain.':STORE:'.$namevalue); return reply("store:$domain:$stuname:$namespace:$symb:$namevalue","$home"); } @@ -1105,7 +1133,11 @@ sub cstore { &devalidate($symb); $symb=escape($symb); - if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { return ''; } } + if (!$namespace) { + unless ($namespace=$ENV{'request.course.id'}) { + return ''; + } + } if (!$domain) { $domain=$ENV{'user.domain'}; } if (!$stuname) { $stuname=$ENV{'user.name'}; } if (!$home) { $home=$ENV{'user.home'}; } @@ -1115,6 +1147,7 @@ sub cstore { $namevalue.=escape($_).'='.escape($$storehash{$_}).'&'; } keys %$storehash; $namevalue=~s/\&$//; + &courselog($symb.':'.$stuname.':'.$domain.':CSTORE:'.$namevalue); return critical("store:$domain:$stuname:$namespace:$symb:$namevalue","$home"); } @@ -2711,6 +2744,9 @@ BEGIN { %metacache=(); +$processmarker=$$.'_'.time.'_'.$perlvar{'lonHostID'}; +$dumpcount=0; + &logtouch(); &logthis('INFO: Read configuration'); }