version 1.1, 2014/06/07 19:13:42
|
version 1.3, 2015/04/28 13:20:41
|
Line 84 Inputs: 5
|
Line 84 Inputs: 5
|
|
|
Returns major version and minor version requirements for a course, |
Returns major version and minor version requirements for a course, |
based on parameters in use in the course. (Parameters which have |
based on parameters in use in the course. (Parameters which have |
version requirements are listed in /home/httpd/lonTabs/releaseslist.xml |
version requirements are listed in /home/httpd/lonTabs/releaseslist.xml). |
|
|
Inputs: 2 |
Inputs: 2 |
|
|
Line 265 use LONCAPA qw(:DEFAULT :match);
|
Line 265 use LONCAPA qw(:DEFAULT :match);
|
|
|
sub init_global_hashes { |
sub init_global_hashes { |
%Apache::lonrelrequtils::checkparms = (); |
%Apache::lonrelrequtils::checkparms = (); |
|
%Apache::lonrelrequtils::checkparmsmatch = (); |
%Apache::lonrelrequtils::checkresponsetypes = (); |
%Apache::lonrelrequtils::checkresponsetypes = (); |
%Apache::lonrelrequtils::checkcrstypes = (); |
%Apache::lonrelrequtils::checkcrstypes = (); |
%Apache::lonrelrequtils::anonsurvey = (); |
%Apache::lonrelrequtils::anonsurvey = (); |
%Apache::lonrelrequtils::randomizetry = (); |
%Apache::lonrelrequtils::randomizetry = (); |
|
|
foreach my $key (keys(%Apache::lonnet::needsrelease)) { |
foreach my $key (keys(%Apache::lonnet::needsrelease)) { |
my ($item,$name,$value) = split(/:/,$key); |
my ($item,$name,$value,$valuematch) = split(/:/,$key); |
if ($item eq 'parameter') { |
if ($item eq 'parameter') { |
if (ref($Apache::lonrelrequtils::checkparms{$name}) eq 'ARRAY') { |
if ($value ne '') { |
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparms{$name}})) { |
if (ref($Apache::lonrelrequtils::checkparms{$name}) eq 'ARRAY') { |
|
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparms{$name}})) { |
|
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
|
} |
|
} else { |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
} |
} |
} else { |
} elsif ($valuematch ne '') { |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
if (ref($Apache::lonrelrequtils::checkparmsmatch{$name}) eq 'ARRAY') { |
|
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparmsmatch{$name}})) { |
|
push(@{$Apache::lonrelrequtils::checkparmsmatch{$name}},$valuematch); |
|
} |
|
} else { |
|
push(@{$Apache::lonrelrequtils::checkparmsmatch{$name}},$valuematch); |
|
} |
} |
} |
} elsif ($item eq 'resourcetag') { |
} elsif ($item eq 'resourcetag') { |
if ($name eq 'responsetype') { |
if ($name eq 'responsetype') { |
Line 323 sub parameter_constraints {
|
Line 334 sub parameter_constraints {
|
my ($cnum,$cdom) = @_; |
my ($cnum,$cdom) = @_; |
my ($reqdmajor,$reqdminor); |
my ($reqdmajor,$reqdminor); |
my $resourcedata=&read_paramdata($cnum,$cdom); |
my $resourcedata=&read_paramdata($cnum,$cdom); |
|
my $now = time; |
if (ref($resourcedata) eq 'HASH') { |
if (ref($resourcedata) eq 'HASH') { |
foreach my $key (keys(%{$resourcedata})) { |
foreach my $key (keys(%{$resourcedata})) { |
foreach my $item (keys(%Apache::lonrelrequtils::checkparms)) { |
foreach my $item (keys(%Apache::lonrelrequtils::checkparms)) { |
Line 335 sub parameter_constraints {
|
Line 347 sub parameter_constraints {
|
} else { |
} else { |
$value = ''; |
$value = ''; |
} |
} |
|
} elsif ($item eq 'printstartdate') { |
|
if ($value =~ /^\d+$/) { |
|
if ($value > $now) { |
|
$value = 'future'; |
|
} |
|
} |
|
} elsif ($item eq 'printenddate') { |
|
if ($value =~ /^\d+$/) { |
|
if ($value < $now) { |
|
$value = 'past'; |
|
} |
|
} |
} |
} |
if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) { |
if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) { |
my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.':'.$value}); |
my ($major,$minor) = |
|
split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.':'.$value.':'}); |
($reqdmajor,$reqdminor) = |
($reqdmajor,$reqdminor) = |
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
} |
} |
} |
} |
} |
} |
|
} |
|
foreach my $item (keys(%Apache::lonrelrequtils::checkparmsmatch)) { |
|
if ($key =~ /(\Q$item\E)$/) { |
|
if (ref($Apache::lonrelrequtils::checkparms{$item}) eq 'ARRAY') { |
|
my $value = $resourcedata->{$key}; |
|
foreach my $entry (@{$Apache::lonrelrequtils::checkparms{$item}}) { |
|
my $regexp; |
|
if (($item eq 'lenient') && ($entry eq 'weighted')) { |
|
$regexp = '^[\-\.\d]+,[\-\.\d]+,[\-\.\d]+,[\-\.\d]+$'; |
|
} elsif (($item eq 'acc') && ($entry eq '_denyfrom_')) { |
|
$regexp = '\!'; |
|
} |
|
if ($regexp ne '') { |
|
if ($value =~ /$regexp/) { |
|
my ($major,$minor) = |
|
split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.'::'.$entry}); |
|
($reqdmajor,$reqdminor) = |
|
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} |