Diff for /loncom/interface/lonrelrequtils.pm between versions 1.1 and 1.4

version 1.1, 2014/06/07 19:13:42 version 1.4, 2015/09/13 21:48:05
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 291  sub init_global_hashes { Line 302  sub init_global_hashes {
         }          }
     }      }
     ($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 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::checkparmsmatch{$item}) eq 'ARRAY') {
                           my $value = $resourcedata->{$key};
                           foreach my $entry (@{$Apache::lonrelrequtils::checkparmsmatch{$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;
                                   }
                               }
                           }
                       }
                   }
               }
         }          }
     }      }
     return ($reqdmajor,$reqdminor);      return ($reqdmajor,$reqdminor);
Line 366  sub commblock_constraints { Line 417  sub commblock_constraints {
     if (keys(%comm_blocks) > 0) {      if (keys(%comm_blocks) > 0) {
         foreach my $block (keys(%comm_blocks)) {          foreach my $block (keys(%comm_blocks)) {
             if ($block =~ /^firstaccess____(.+)$/) {              if ($block =~ /^firstaccess____(.+)$/) {
                 my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:timer'});                  my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:timer:'});
                 ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);                  ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);
                 last;                  last;
             } elsif ($block =~ /^(\d+)____(\d+)$/) {              } elsif ($block =~ /^(\d+)____(\d+)$/) {
Line 377  sub commblock_constraints { Line 428  sub commblock_constraints {
                 if (ref($comm_blocks{$block}{'blocks'}) eq 'HASH') {                  if (ref($comm_blocks{$block}{'blocks'}) eq 'HASH') {
                     if (ref($comm_blocks{$block}{'blocks'}{'docs'}) eq 'HASH') {                      if (ref($comm_blocks{$block}{'blocks'}{'docs'}) eq 'HASH') {
                         if (keys(%{$comm_blocks{$block}{'blocks'}{'docs'}}) > 0) {                          if (keys(%{$comm_blocks{$block}{'blocks'}{'docs'}}) > 0) {
                             my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:docs'});                              my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:docs:'});
                             ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);                              ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);
                             last;                              last;
                         }                          }
                     }                      }
                     if ($comm_blocks{$block}{'blocks'}{'printout'} eq 'on') {                      if ($comm_blocks{$block}{'blocks'}{'printout'} eq 'on') {
                         my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:printout'});                          my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course:commblock:printout:'});
                         ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);                          ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor);
                         last;                          last;
                     }                      }

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>