version 1.41, 2005/05/15 02:18:12
|
version 1.47, 2005/05/15 03:45:42
|
Line 301 this user and course.
|
Line 301 this user and course.
|
################################################## |
################################################## |
sub parmval { |
sub parmval { |
my $self = shift; |
my $self = shift; |
my ($what,$symb,$uname,$udom,$csec,$recurse)=@_; |
my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn)=@_; |
$uname = $self->{'name'} if (! defined($uname)); |
$uname = $self->{'name'} if (! defined($uname)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$csec = $self->{'section'} if (! defined($csec)); |
$csec = $self->{'section'} if (! defined($csec)); |
Line 310 sub parmval {
|
Line 310 sub parmval {
|
my $result=''; |
my $result=''; |
# |
# |
# This should be a |
# This should be a |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
|
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
|
} |
# Cascading lookup scheme |
# Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
$what =~ s/^parameter\_//; |
$what =~ s/^parameter\_//; |
Line 367 sub parmval {
|
Line 369 sub parmval {
|
if ($part eq '') { $part='0'; } |
if ($part eq '') { $part='0'; } |
my $newwhat=$rwhat; |
my $newwhat=$rwhat; |
$newwhat=~s/\Q$space\E/$part/; |
$newwhat=~s/\Q$space\E/$part/; |
my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1); |
my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1, |
|
$mapname,$id,$fn); |
if (defined($partgeneral)) { return $partgeneral; } |
if (defined($partgeneral)) { return $partgeneral; } |
} |
} |
if ($recurse) { return undef; } |
if ($recurse) { return undef; } |
Line 627 sub get_parameter_values {
|
Line 630 sub get_parameter_values {
|
my $filename = $self->{'coursefilename'}.'_parms.db'; |
my $filename = $self->{'coursefilename'}.'_parms.db'; |
if (tie(%parmhash,'GDBM_File', |
if (tie(%parmhash,'GDBM_File', |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
|
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
foreach my $parmname (@Parameters) { |
foreach my $parmname (@Parameters) { |
my $value = $self->parmval($parmname); |
my $value = $self->parmval($parmname,$self->{'symb'}, |
|
$self->{'name'},$self->{'domain'}, |
|
$self->{'section'},undef, |
|
$mapname,$id,$fn); |
$parameters{$parmname} =$value; |
$parameters{$parmname} =$value; |
} |
} |
untie(%parmhash); |
untie(%parmhash); |
Line 710 sub parameter_part_is_valid {
|
Line 717 sub parameter_part_is_valid {
|
sub compute { |
sub compute { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
my $connection = $r->connection(); |
|
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->initialize_safe_space(); |
$self->initialize_safe_space(); |
######################################### |
######################################### |
######################################### |
######################################### |
Line 739 sub compute {
|
Line 744 sub compute {
|
} |
} |
# |
# |
# Get the values of the metadata fields |
# Get the values of the metadata fields |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->ensure_current_caches(); |
$self->ensure_current_caches(); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
%parameters = $self->get_parameter_values(keys(%parameters)); |
%parameters = $self->get_parameter_values(keys(%parameters)); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
# |
# |
# Clean out unnecessary parameters |
# Clean out unnecessary parameters |
foreach (keys(%parameters)) { |
foreach (keys(%parameters)) { |
Line 751 sub compute {
|
Line 753 sub compute {
|
} |
} |
# |
# |
# Get the students performance data |
# Get the students performance data |
$self->determine_parts(exists($parameters{'parameter_0_hiddenparts'})); |
$self->determine_parts(($parameters{'parameter_0_hiddenparts'} ne '')); |
my %student_parameters = $self->get_problem_state(); |
my %student_parameters = $self->get_problem_state(); |
while (my ($parm,$value) = each(%student_parameters)) { |
while (my ($parm,$value) = each(%student_parameters)) { |
$parm =~ s/^resource\./stores_/; |
$parm =~ s/^resource\./stores_/; |
Line 780 sub compute {
|
Line 782 sub compute {
|
} |
} |
} |
} |
} |
} |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
# |
# |
# Move the parameters into the spreadsheet |
# Move the parameters into the spreadsheet |
while (my ($parm,$value) = each(%parameters)) { |
while (my ($parm,$value) = each(%parameters)) { |
Line 794 sub compute {
|
Line 795 sub compute {
|
} |
} |
$self->formulas(\%f); |
$self->formulas(\%f); |
$self->constants(\%c); |
$self->constants(\%c); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->calcsheet(); |
$self->calcsheet(); |
# |
# |
# Store export row in cache |
# Store export row in cache |
my @exportarray = $self->exportrow(); |
my @exportarray = $self->exportrow(); |
$self->deal_with_export_row(@exportarray); |
$self->deal_with_export_row(@exportarray); |
$self->save() if ($self->need_to_save()); |
$self->save() if ($self->need_to_save()); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
return; |
return; |
} |
} |
|
|
Line 837 sub sett {
|
Line 836 sub sett {
|
while (my ($cell,$formula) = each(%{$self->{'formulas'}})) { |
while (my ($cell,$formula) = each(%{$self->{'formulas'}})) { |
next if ($cell =~ /template_/); |
next if ($cell =~ /template_/); |
if ($cell =~ /^A/ && $cell ne 'A0') { |
if ($cell =~ /^A/ && $cell ne 'A0') { |
if ($formula !~ /^\!/) { |
if ($formula !~ /^\!/ |
|
&& exists($self->{'constants'}->{$formula}) |
|
&& $self->{'constants'}->{$formula} ne '' |
|
) { |
$Apache::Spreadsheet::sheet_values{$cell}= |
$Apache::Spreadsheet::sheet_values{$cell}= |
eval($self->{'constants'}->{$formula}); |
eval($self->{'constants'}->{$formula}); |
} |
} |
Line 918 spreadsheet only if necessary.
|
Line 920 spreadsheet only if necessary.
|
sub export_data { |
sub export_data { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
my $connection = $r->connection(); |
|
my $symb = $self->{'symb'}; |
my $symb = $self->{'symb'}; |
if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} || |
if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} || |
! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
Line 929 sub export_data {
|
Line 930 sub export_data {
|
) { |
) { |
$self->compute($r); |
$self->compute($r); |
} |
} |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
my @Data; |
my @Data; |
if ($self->badcalc()) { |
if ($self->badcalc()) { |
@Data = (); |
@Data = (); |