[LON-CAPA-cvs] cvs: loncom /homework structuretags.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Fri, 03 Jun 2005 18:18:00 -0000
raeburn Fri Jun 3 14:18:00 2005 EDT
Modified files:
/loncom/homework structuretags.pm
Log:
Increments aggregates (for number of users) appropriately in cases where aggregates have been reset by a CC from the whatsnew interface.
Index: loncom/homework/structuretags.pm
diff -u loncom/homework/structuretags.pm:1.291 loncom/homework/structuretags.pm:1.292
--- loncom/homework/structuretags.pm:1.291 Fri Apr 29 17:22:33 2005
+++ loncom/homework/structuretags.pm Fri Jun 3 14:17:57 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.291 2005/04/29 21:22:33 albertel Exp $
+# $Id: structuretags.pm,v 1.292 2005/06/03 18:17:57 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -372,16 +372,59 @@
}
if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) {
$aggregate{$symb."\0".$part."\0users"} = 1;
+ } else {
+ my $last_reset = &get_last_reset($symb,$cdomain,$cname,$part);
+ if ($last_reset) {
+ if (&get_num_tries($last_reset,$part) == 0) {
+ $aggregate{$symb."\0".$part."\0users"} = 1;
+ }
+ }
}
$aggregate{$symb."\0".$part."\0attempts"} = 1;
}
- if (%aggregate) {
+ if (keys (%aggregate) > 0) {
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
- $cdomain,$cname);
+ $cdomain,$cname);
+ }
+}
+# ----------- Timestamp of last reset of aggregates
+sub get_last_reset {
+ my ($symb,$cdomain,$cname,$part) =@_;
+ my $last_reset = '';
+ my %resethash = &Apache::lonnet::restore($symb,'nohist_resourcetracker',$cdomain,$cname);
+ if ($resethash{'version'}) {
+ for (my $version=$resethash{'version'};$version>=1;$version--) {
+ if (exists($resethash{$version.':'.$part."\0".'prev_attempts'})) {
+ $last_reset = $resethash{$version.':timestamp'};
+ last;
+ }
+ }
}
+ return $last_reset;
}
+# ----------- Provides number of tries since last reset of aggregates
+sub get_num_tries {
+ my ($last_reset,$part) = @_;
+ my $timestamp = '';
+ my $num_tries = 0;
+ if ($Apache::lonhomework::history{'version'}) {
+ for (my $version=$Apache::lonhomework::history{'version'};$version>=1;$version--) {
+ if (exists($Apache::lonhomework::history{$version.':resource.'.$part.'.solved'})) {
+ $timestamp = $Apache::lonhomework::history{$version.':timestamp'};
+ if ($timestamp > $last_reset) {
+ $num_tries ++;
+ } else {
+ last;
+ }
+ }
+ }
+ }
+ return $num_tries;
+}
+
+
sub checkout_msg {
my %lt=&Apache::lonlocal::texthash(
'resource'=>'The resource needs to be checked out',