version 1.37.2.2, 2005/04/29 18:12:21
|
version 1.38, 2005/02/03 23:59:41
|
Line 313 Returns the safe space required by a Spr
|
Line 313 Returns the safe space required by a Spr
|
|
|
sub initialize_safe_space { |
sub initialize_safe_space { |
my $self = shift; |
my $self = shift; |
|
my $usection = &Apache::lonnet::getsection($self->{'domain'}, |
|
$self->{'name'}, |
|
$ENV{'request.course.id'}); |
if (! defined($safeeval)) { |
if (! defined($safeeval)) { |
$safeeval = new Safe(shift); |
$safeeval = new Safe(shift); |
my $safehole = new Safe::Hole; |
my $safehole = new Safe::Hole; |
Line 320 sub initialize_safe_space {
|
Line 323 sub initialize_safe_space {
|
$safeeval->permit(":base_math"); |
$safeeval->permit(":base_math"); |
$safeeval->permit("sort"); |
$safeeval->permit("sort"); |
$safeeval->deny(":base_io"); |
$safeeval->deny(":base_io"); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&Apache::lonnet::EXT'); |
$safehole->wrap(\&mask,$safeeval,'&mask'); |
$safehole->wrap(\&mask,$safeeval,'&mask'); |
$safeeval->share('$@'); |
$safeeval->share('$@'); |
my $code=<<'ENDDEFS'; |
my $code=<<'ENDDEFS'; |
Line 379 $errormsg = '';
|
Line 382 $errormsg = '';
|
|
|
=pod |
=pod |
|
|
|
=item EXT(parameter) |
|
|
|
Calls the system EXT function to determine the value of the given parameter. |
|
|
|
=cut |
|
|
|
#------------------------------------------------------- |
|
sub EXT { |
|
my ($parameter) = @_; |
|
return '' if (! defined($parameter) || $parameter eq ''); |
|
$parameter =~ s/^parameter\./resource\./; |
|
my $value = &Apache::lonnet::EXT($parameter,$symb,$domain,$name,$usection); |
|
return $value; |
|
} |
|
|
|
#------------------------------------------------------- |
|
|
|
=pod |
|
|
=item NUM(range) |
=item NUM(range) |
|
|
returns the number of items in the range. |
returns the number of items in the range. |
Line 571 sub SUMMAX {
|
Line 593 sub SUMMAX {
|
foreach (grep eval("/$mask/"),keys(%sheet_values)) { |
foreach (grep eval("/$mask/"),keys(%sheet_values)) { |
push (@inside,$sheet_values{$_}); |
push (@inside,$sheet_values{$_}); |
} |
} |
@inside=sort {$a <=> $b} (@inside); |
@inside=sort(@inside); |
my $sum=0; my $i; |
my $sum=0; my $i; |
for ($i=$#inside;(($i>$#inside-$num) && ($i>=0));$i--) { |
for ($i=$#inside;(($i>$#inside-$num) && ($i>=0));$i--) { |
$sum+=$inside[$i]; |
$sum+=$inside[$i]; |
Line 598 sub SUMMIN {
|
Line 620 sub SUMMIN {
|
foreach (grep eval("/$mask/"),keys(%sheet_values)) { |
foreach (grep eval("/$mask/"),keys(%sheet_values)) { |
$inside[$#inside+1]=$sheet_values{$_}; |
$inside[$#inside+1]=$sheet_values{$_}; |
} |
} |
@inside=sort {$a <=> $b} (@inside); |
@inside=sort(@inside); |
my $sum=0; my $i; |
my $sum=0; my $i; |
for ($i=0;(($i<$num) && ($i<=$#inside));$i++) { |
for ($i=0;(($i<$num) && ($i<=$#inside));$i++) { |
$sum+=$inside[$i]; |
$sum+=$inside[$i]; |
Line 696 ENDDEFS
|
Line 718 ENDDEFS
|
# Place some of the %$self items into the safe space except the safe space |
# Place some of the %$self items into the safe space except the safe space |
# itself |
# itself |
my $initstring = ''; |
my $initstring = ''; |
foreach (qw/name domain type usymb cid csec coursefilename |
foreach (qw/name domain type symb cid csec coursefilename |
cnum cdom chome uhome/) { |
cnum cdom chome uhome/) { |
$initstring.= qq{\$$_="$self->{$_}";}; |
$initstring.= qq{\$$_="$self->{$_}";}; |
} |
} |
|
$initstring.=qq{\$usection="$usection";}; |
$self->{'safe'}->reval($initstring); |
$self->{'safe'}->reval($initstring); |
return $self; |
return $self; |
} |
} |
Line 911 sub sett {
|
Line 934 sub sett {
|
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
$t{$cell}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$sheet_values\{\'$2\'\}/g; |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/ge; |
$t{$cell}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.$self->expandnamed($2)/ge; |
} elsif ( $col =~ /^[A-Z]$/ ) { |
} elsif ( $col =~ /^[A-Z]$/ ) { |
if ($formula !~ /^\!/ && exists($self->{'constants'}->{$cell}) |
if ($formula !~ /^\!/ && exists($self->{'constants'}->{$cell})) { |
&& $self->{'constants'}->{$cell} ne '') { |
|
my $data = $self->{'constants'}->{$cell}; |
my $data = $self->{'constants'}->{$cell}; |
$t{$cell} = $data; |
$t{$cell} = $data; |
} |
} |