version 1.40, 2005/05/13 21:14:46
|
version 1.43, 2005/05/15 02:28:23
|
Line 661 sub get_problem_state {
|
Line 661 sub get_problem_state {
|
|
|
sub determine_parts { |
sub determine_parts { |
my $self = shift; |
my $self = shift; |
|
my $check_hidden = shift; |
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
return; |
return; |
} |
} |
Line 671 sub determine_parts {
|
Line 672 sub determine_parts {
|
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
foreach (split(',',$metadata)) { |
foreach (split(',',$metadata)) { |
my ($part) = (/^part_(.*)$/); |
my ($part) = (/^part_(.*)$/); |
if (defined($part) && |
if (!defined($part)) { next; } |
! &Apache::loncommon::check_if_partid_hidden |
if (!$check_hidden) { $Parts{$part}++; next; } |
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
if (!&Apache::loncommon::check_if_partid_hidden |
|
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
) { |
) { |
$Parts{$part}++; |
$Parts{$part}++; |
} |
} |
Line 708 sub parameter_part_is_valid {
|
Line 710 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 737 sub compute {
|
Line 737 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 749 sub compute {
|
Line 746 sub compute {
|
} |
} |
# |
# |
# Get the students performance data |
# Get the students performance data |
|
$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_/; |
$parm =~ s/\./_/g; |
$parm =~ s/\./_/g; |
$parameters{$parm} = $value; |
# Clean out any bad parameters |
} |
next if (! $self->parameter_part_is_valid($parm)); |
# |
$parameters{$parm} = $value; |
# Clean out any bad parameters |
|
$self->determine_parts(); |
|
foreach my $param (keys(%parameters)) { |
|
if (! $self->parameter_part_is_valid($param)) { |
|
delete ($parameters{$param}); |
|
} |
|
} |
} |
# |
# |
# Set up the formulas and parameter values |
# Set up the formulas and parameter values |
Line 783 sub compute {
|
Line 775 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 797 sub compute {
|
Line 788 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 921 spreadsheet only if necessary.
|
Line 910 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 932 sub export_data {
|
Line 920 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 = (); |