--- loncom/misc/refresh_courseids_db.pl 2010/12/24 07:58:09 1.10 +++ loncom/misc/refresh_courseids_db.pl 2012/03/31 22:10:16 1.11 @@ -1,7 +1,7 @@ #!/usr/bin/perl # The LearningOnline Network # -# $Id: refresh_courseids_db.pl,v 1.10 2010/12/24 07:58:09 raeburn Exp $ +# $Id: refresh_courseids_db.pl,v 1.11 2012/03/31 22:10:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -227,6 +227,10 @@ sub recurse_courses { ($reqdmajor,$reqdminor) = &coursetype_constraints($cnum,$cdom,$crstype, $reqdmajor, $reqdminor); + # check communication blocks + ($reqdmajor,$reqdminor) = &commblock_constraints($cnum,$cdom, + $reqdmajor, + $reqdminor); # check course contents ($reqdmajor,$reqdminor) = &coursecontent_constraints($cnum,$cdom, $reqdmajor, @@ -377,6 +381,36 @@ sub coursetype_constraints { return ($reqdmajor,$reqdminor); } +sub commblock_constraints { + my ($cnum,$cdom,$reqdmajor,$reqdminor) = @_; + my %comm_blocks = &Apache::lonnet::dump('commblock',$cdom,$cnum); + my $now = time; + if (keys(%comm_blocks) > 0) { + foreach my $block (keys(%comm_blocks)) { + if ($block =~ /^firstaccess____(.+)$/) { + my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course.commblock.timer'}); + ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); + last; + } elsif ($block =~ /^(\d+)____(\d+)$) { + my ($start,$end) = ($1,$2); + next if ($end < $now); + } + if (ref($comm_blocks{$block}) eq 'HASH') { + if (ref($comm_blocks{$block}{'blocks'}) eq 'HASH') { + if (ref($comm_blocks{$block}{'blocks'}{'docs'}) eq 'HASH') { + if (keys(%{$comm_blocks{$block}{'blocks'}{'docs'}} > 0) { + my ($major,$minor) = split(/\./,$Apache::lonnet::needsrelease{'course.commblock.docs'}); + ($reqdmajor,$reqdminor) = &update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); + last; + } + } + } + } + } + } + return; +} + sub coursecontent_constraints { my ($cnum,$cdom,$reqdmajor,$reqdminor) = @_; my $navmap = Apache::lonnavmaps::navmap->new();