[LON-CAPA-cvs] cvs: loncom /interface/statistics lonstathelpers.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Mon, 08 Mar 2004 19:12:18 -0000
matthew Mon Mar 8 14:12:18 2004 EDT
Modified files:
/loncom/interface/statistics lonstathelpers.pm
Log:
Modified &analyze_problem_as_student to be able to return multiple
answers at a time.
Index: loncom/interface/statistics/lonstathelpers.pm
diff -u loncom/interface/statistics/lonstathelpers.pm:1.5 loncom/interface/statistics/lonstathelpers.pm:1.6
--- loncom/interface/statistics/lonstathelpers.pm:1.5 Wed Mar 3 17:57:31 2004
+++ loncom/interface/statistics/lonstathelpers.pm Mon Mar 8 14:12:18 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstathelpers.pm,v 1.5 2004/03/03 22:57:31 matthew Exp $
+# $Id: lonstathelpers.pm,v 1.6 2004/03/08 19:12:18 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -354,6 +354,12 @@
Returns: $answer
+If $partid and $respid are specified, $answer is simply a scalar containing
+the correct answer for the response.
+
+If $partid or $respid are undefined, $answer will be a hash reference with
+keys $partid.'.'.$respid.'.answer'.
+
=cut
#####################################################
@@ -371,8 +377,35 @@
'grade_courseid' => $courseid));
(my $garbage,$Answ)=split(/_HASH_REF__/,$Answ,2);
my %Answer=&Apache::lonnet::str2hash($Answ);
- my $prefix = $partid.'.'.$respid;
- my $key = $prefix.'.answer';
+ #
+ if (! defined($partid)) {
+ # If you do not specify a partid, you get them all.
+ foreach my $partid (@{$resource->{'parts'}}) {
+ my $partdata = $resource->{'partdata'}->{$partid};
+ foreach my $respid (@{$partdata->{'ResponseIds'}}) {
+ my $prefix = $partid.'.'.$respid;
+ my $key = $prefix.'.answer';
+ $returnvalue->{$key} = &get_answer($prefix,$key,%Answer);
+ }
+ }
+ } elsif (! defined($respid)) {
+ my $partdata = $resource->{'partdata'}->{$partid};
+ foreach my $respid (@{$partdata->{'ResponseIds'}}) {
+ my $prefix = $partid.'.'.$respid;
+ my $key = $prefix.'.answer';
+ $returnvalue->{$key} = &get_answer($prefix,$key,%Answer);
+ }
+ } else {
+ my $prefix = $partid.'.'.$respid;
+ my $key = $prefix.'.answer';
+ $returnvalue = &get_answer($prefix,$key,%Answer);
+ }
+ return $returnvalue;
+}
+
+sub get_answer {
+ my ($prefix,$key,%Answer) = @_;
+ my $returnvalue;
if (exists($Answer{$key})) {
my $student_answer = $Answer{$key}->[0];
if (! defined($student_answer)) {
@@ -403,7 +436,6 @@
}
return $returnvalue;
}
-
##
## The following is copied from datecalc1.pl, part of the