version 1.2, 2014/06/13 01:48:26
|
version 1.8, 2022/10/19 00:03:10
|
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::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) = split(/:/,$key); |
my ($item,$name,$value,$valuematch,$namematch) = split(/:/,$key); |
if ($item eq 'parameter') { |
if ($item eq 'parameter') { |
if (ref($Apache::lonrelrequtils::checkparms{$name}) eq 'ARRAY') { |
if ($namematch ne '') { |
unless(grep(/^\Q$name\E$/,@{$Apache::lonrelrequtils::checkparms{$name}})) { |
$Apache::lonrelrequtils::checkparmnamesmatch{$namematch} = 1; |
push(@{$Apache::lonrelrequtils::checkparms{$name}},$value); |
} |
|
if ($name ne '') { |
|
if ($value ne '') { |
|
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); |
|
} |
|
} 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::checkparms{$name}},$value); |
|
} |
} |
} elsif ($item eq 'resourcetag') { |
} elsif ($item eq 'resourcetag') { |
if ($name eq 'responsetype') { |
if ($name eq 'responsetype') { |
Line 287 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 350 sub parameter_constraints {
|
Line 373 sub parameter_constraints {
|
} |
} |
} |
} |
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::checkparmvalsmatch)) { |
|
if ($key =~ /(\Q$item\E)$/) { |
|
if (ref($Apache::lonrelrequtils::checkparmvalsmatch{$item}) eq 'ARRAY') { |
|
my $value = $resourcedata->{$key}; |
|
foreach my $entry (@{$Apache::lonrelrequtils::checkparmvalsmatch{$item}}) { |
|
my $regexp; |
|
if (($item eq 'lenient') && ($entry eq 'weighted')) { |
|
$regexp = '^[\-\.\d]+,[\-\.\d]+,[\-\.\d]+,[\-\.\d]+$'; |
|
} elsif (($item eq 'acc') && ($entry eq '_denyfrom_')) { |
|
$regexp = '\!'; |
|
} elsif (($item eq 'interval') && ($entry eq 'done')) { |
|
$regexp = '^\d+_done$'; |
|
} |
|
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; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
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 416 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 438 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 447 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); |
} |
} |
|
|