--- loncom/lonsql 2002/06/18 21:14:23 1.48 +++ loncom/lonsql 2002/06/24 14:22:05 1.49 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-MySQL-Server Daemon for handling database requests. # -# $Id: lonsql,v 1.48 2002/06/18 21:14:23 www Exp $ +# $Id: lonsql,v 1.49 2002/06/24 14:22:05 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -204,10 +204,22 @@ sub courselog { while ($line=) { chomp($line); my ($timestamp,$host,$log)=split(/\:/,$line); - foreach (split(/\&/,&unescape($log))) { - my ($time,$res,$uname,$udom,$action,$values)=split(/\:/,$_); +# +# $log has the actual log entries; currently still escaped, and +# %26(timestamp)%3a(url)%3a(user)%3a(domain) +# then additionally +# %3aPOST%3a(name)%3d(value)%3a(name)%3d(value) +# or +# %3aCSTORE%3a(name)%3d(value)%26(name)%3d(value) +# +# get delimiter between timestamped entries to be &&& + $log=~s/\%26(\d+)\%3a/\&\&\&$1\%3a/g; +# now go over all log entries + foreach (split(/\&\&\&/,&unescape($log))) { + my ($time,$res,$uname,$udom,$action,@values)=split(/\:/,$_); + my $values=&unescape(join(':',@values)); + $values=~s/\&/\:/g; $res=&unescape($res); - $values=&unescape($values); my $include=1; if (($filters{'username'}) && ($uname ne $filters{'username'})) { $include=0; } @@ -226,7 +238,8 @@ sub courselog { if (($filters{'action'} eq 'grade') && ($action ne 'CSTORE')) { $include=0; } if ($include) { - push(@results,$time.':'.$res.':'.$uname.':'.$udom.':'. + push(@results,($time<1000000000?'0':'').$time.':'.$res.':'. + $uname.':'.$udom.':'. $action.':'.$values); } } @@ -251,7 +264,13 @@ sub userlog { my ($timestamp,$host,$log)=split(/\:/,$line); $log=&unescape($log); my $include=1; + if (($filters{'start'}) && ($timestamp<$filters{'start'})) + { $include=0; } + if (($filters{'end'}) && ($timestamp>$filters{'end'})) + { $include=0; } if (($filters{'action'} eq 'log') && ($log!~/^Log/)) { $include=0; } + if (($filters{'action'} eq 'check') && ($log!~/^Check/)) + { $include=0; } if ($include) { push(@results,$timestamp.':'.$log); }