version 1.3, 2015/04/28 13:20:41
|
version 1.8, 2022/10/19 00:03:10
|
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::checkparmvalsmatch = (); |
|
%Apache::lonrelrequtils::checkparmnamesmatch = (); |
%Apache::lonrelrequtils::checkresponsetypes = (); |
%Apache::lonrelrequtils::checkresponsetypes = (); |
%Apache::lonrelrequtils::checkcrstypes = (); |
%Apache::lonrelrequtils::checkcrstypes = (); |
%Apache::lonrelrequtils::anonsurvey = (); |
%Apache::lonrelrequtils::anonsurvey = (); |
%Apache::lonrelrequtils::randomizetry = (); |
%Apache::lonrelrequtils::randomizetry = (); |
|
%Apache::lonrelrequtils::exttool = (); |
|
|
foreach my $key (keys(%Apache::lonnet::needsrelease)) { |
foreach my $key (keys(%Apache::lonnet::needsrelease)) { |
my ($item,$name,$value,$valuematch) = split(/:/,$key); |
my ($item,$name,$value,$valuematch,$namematch) = split(/:/,$key); |
if ($item eq 'parameter') { |
if ($item eq 'parameter') { |
if ($value ne '') { |
if ($namematch ne '') { |
if (ref($Apache::lonrelrequtils::checkparms{$name}) eq 'ARRAY') { |
$Apache::lonrelrequtils::checkparmnamesmatch{$namematch} = 1; |
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparms{$name}})) { |
} |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
if ($name ne '') { |
} |
if ($value ne '') { |
} else { |
if (ref($Apache::lonrelrequtils::checkparms{$name}) eq 'ARRAY') { |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparms{$name}})) { |
} |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
} elsif ($valuematch ne '') { |
} |
if (ref($Apache::lonrelrequtils::checkparmsmatch{$name}) eq 'ARRAY') { |
} else { |
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparmsmatch{$name}})) { |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
push(@{$Apache::lonrelrequtils::checkparmsmatch{$name}},$valuematch); |
} |
|
} elsif ($valuematch ne '') { |
|
if (ref($Apache::lonrelrequtils::checkparmvalsmatch{$name}) eq 'ARRAY') { |
|
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparmvalsmatch{$name}})) { |
|
push(@{$Apache::lonrelrequtils::checkparmvalsmatch{$name}},$valuematch); |
|
} |
|
} else { |
|
push(@{$Apache::lonrelrequtils::checkparmvalsmatch{$name}},$valuematch); |
} |
} |
} else { |
|
push(@{$Apache::lonrelrequtils::checkparmsmatch{$name}},$valuematch); |
|
} |
} |
} |
} |
} elsif ($item eq 'resourcetag') { |
} elsif ($item eq 'resourcetag') { |
Line 298 sub init_global_hashes {
|
Line 305 sub init_global_hashes {
|
} elsif ($item eq 'course') { |
} elsif ($item eq 'course') { |
if ($name eq 'crstype') { |
if ($name eq 'crstype') { |
$Apache::lonrelrequtils::checkcrstypes{$value} = $Apache::lonnet::needsrelease{$key}; |
$Apache::lonrelrequtils::checkcrstypes{$value} = $Apache::lonnet::needsrelease{$key}; |
|
} elsif ($name eq 'courserestype') { |
|
if ($value eq 'exttool') { |
|
($Apache::lonrelrequtils::exttool{major},$Apache::lonrelrequtils::exttool{minor}) = |
|
split(/\./,$Apache::lonnet::needsrelease{$key}); |
|
} |
} |
} |
} |
} |
} |
} |
($Apache::lonrelrequtils::anonsurvey{major},$Apache::lonrelrequtils::anonsurvey{minor}) = |
($Apache::lonrelrequtils::anonsurvey{major},$Apache::lonrelrequtils::anonsurvey{minor}) = |
split(/\./,$Apache::lonnet::needsrelease{'parameter:type:anonsurvey'}); |
split(/\./,$Apache::lonnet::needsrelease{'parameter:type:anonsurvey::'}); |
($Apache::lonrelrequtils::randomizetry{major},$Apache::lonrelrequtils::randomizetry{minor}) = |
($Apache::lonrelrequtils::randomizetry{major},$Apache::lonrelrequtils::randomizetry{minor}) = |
split(/\./,$Apache::lonnet::needsrelease{'parameter:type:randomizetry'}); |
split(/\./,$Apache::lonnet::needsrelease{'parameter:type:randomizetry::'}); |
return; |
return; |
} |
} |
|
|
Line 362 sub parameter_constraints {
|
Line 374 sub parameter_constraints {
|
} |
} |
if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) { |
if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) { |
my ($major,$minor) = |
my ($major,$minor) = |
split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.':'.$value.':'}); |
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)) { |
foreach my $item (keys(%Apache::lonrelrequtils::checkparmvalsmatch)) { |
if ($key =~ /(\Q$item\E)$/) { |
if ($key =~ /(\Q$item\E)$/) { |
if (ref($Apache::lonrelrequtils::checkparms{$item}) eq 'ARRAY') { |
if (ref($Apache::lonrelrequtils::checkparmvalsmatch{$item}) eq 'ARRAY') { |
my $value = $resourcedata->{$key}; |
my $value = $resourcedata->{$key}; |
foreach my $entry (@{$Apache::lonrelrequtils::checkparms{$item}}) { |
foreach my $entry (@{$Apache::lonrelrequtils::checkparmvalsmatch{$item}}) { |
my $regexp; |
my $regexp; |
if (($item eq 'lenient') && ($entry eq 'weighted')) { |
if (($item eq 'lenient') && ($entry eq 'weighted')) { |
$regexp = '^[\-\.\d]+,[\-\.\d]+,[\-\.\d]+,[\-\.\d]+$'; |
$regexp = '^[\-\.\d]+,[\-\.\d]+,[\-\.\d]+,[\-\.\d]+$'; |
} elsif (($item eq 'acc') && ($entry eq '_denyfrom_')) { |
} elsif (($item eq 'acc') && ($entry eq '_denyfrom_')) { |
$regexp = '\!'; |
$regexp = '\!'; |
|
} elsif (($item eq 'interval') && ($entry eq 'done')) { |
|
$regexp = '^\d+_done$'; |
} |
} |
if ($regexp ne '') { |
if ($regexp ne '') { |
if ($value =~ /$regexp/) { |
if ($value =~ /$regexp/) { |
my ($major,$minor) = |
my ($major,$minor) = |
split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.'::'.$entry}); |
split(/\./,$Apache::lonnet::needsrelease{'parameter:'.$item.'::'.$entry.':'}); |
($reqdmajor,$reqdminor) = |
($reqdmajor,$reqdminor) = |
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
last; |
last; |
Line 393 sub parameter_constraints {
|
Line 407 sub parameter_constraints {
|
} |
} |
} |
} |
} |
} |
|
foreach my $item (keys(%Apache::lonrelrequtils::checkparmnamesmatch)) { |
|
my $regexp; |
|
if ($item eq 'maplevelrecurse') { |
|
$regexp = '\.(?:sequence|page)___\(rec\)\.'; |
|
} |
|
if ($regexp ne '') { |
|
if ($key =~ /$regexp/) { |
|
my ($major,$minor) = |
|
split(/\./,$Apache::lonnet::needsrelease{'parameter::::'.$item}); |
|
($reqdmajor,$reqdminor) = |
|
&update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
|
|
|
} |
|
} |
|
} |
} |
} |
} |
} |
return ($reqdmajor,$reqdminor); |
return ($reqdmajor,$reqdminor); |
Line 452 sub coursecontent_constraints {
|
Line 481 sub coursecontent_constraints {
|
my %randomizetrysubm = &Apache::lonnet::dump('nohist_randomizetry', |
my %randomizetrysubm = &Apache::lonnet::dump('nohist_randomizetry', |
$cdom,$cnum); |
$cdom,$cnum); |
my %allresponses; |
my %allresponses; |
my ($anonsurv_subm,$randbytry_subm); |
my ($anonsurv_subm,$randbytry_subm,$exttool); |
foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) { |
foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() || $_[0]->is_tool() },1,0)) { |
|
if ($res->is_tool()) { |
|
$exttool ++; |
|
next; |
|
} |
my %responses = $res->responseTypes(); |
my %responses = $res->responseTypes(); |
foreach my $key (keys(%responses)) { |
foreach my $key (keys(%responses)) { |
next unless(exists($Apache::lonrelrequtils::checkresponsetypes{$key})); |
next unless(exists($Apache::lonrelrequtils::checkresponsetypes{$key})); |
Line 474 sub coursecontent_constraints {
|
Line 507 sub coursecontent_constraints {
|
my ($major,$minor) = split(/\./,$Apache::lonrelrequtils::checkresponsetypes{$key}); |
my ($major,$minor) = split(/\./,$Apache::lonrelrequtils::checkresponsetypes{$key}); |
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
} |
} |
|
if ($exttool) { |
|
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($Apache::lonrelrequtils::exttool{major}, |
|
$Apache::lonrelrequtils::exttool{minor}); |
|
} |
if ($anonsurv_subm) { |
if ($anonsurv_subm) { |
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($Apache::lonrelrequtils::anonsurvey{major}, |
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($Apache::lonrelrequtils::anonsurvey{major}, |
$Apache::lonrelrequtils::anonsurvey{minor},$reqdmajor,$reqdminor); |
$Apache::lonrelrequtils::anonsurvey{minor},$reqdmajor,$reqdminor); |
Line 483 sub coursecontent_constraints {
|
Line 520 sub coursecontent_constraints {
|
$Apache::lonrelrequtils::randomizetry{minor},$reqdmajor,$reqdminor); |
$Apache::lonrelrequtils::randomizetry{minor},$reqdmajor,$reqdminor); |
} |
} |
} |
} |
|
if (&Apache::lonnet::count_supptools($cnum,$cdom,1,1)) { |
|
($reqdmajor,$reqdminor) = &update_reqd_loncaparev($Apache::lonrelrequtils::exttool{major}, |
|
$Apache::lonrelrequtils::exttool{minor}); |
|
} |
return ($reqdmajor,$reqdminor); |
return ($reqdmajor,$reqdminor); |
} |
} |
|
|