version 1.456, 2010/09/26 01:50:28
|
version 1.459, 2010/09/27 00:21:02
|
Line 3198 sub dump_with_regexp {
|
Line 3198 sub dump_with_regexp {
|
my $cdom = $1; |
my $cdom = $1; |
my $cnum = $2; |
my $cnum = $2; |
unless ($skipcheck) { |
unless ($skipcheck) { |
next unless (&releasereqd_check($cnum,$cdom,$key,$value,$major,$minor, |
my ($role,$end,$start) = split(/\_/,$value); |
$now,\%homecourses,\@ids)); |
if (!$end || $end > $now) { |
|
next unless (&releasereqd_check($cnum,$cdom,$key,$value,$major, |
|
$minor,\%homecourses,\@ids)); |
|
} |
} |
} |
} |
} |
} |
} |
Line 7300 sub get_usersession_config {
|
Line 7303 sub get_usersession_config {
|
} |
} |
|
|
sub releasereqd_check { |
sub releasereqd_check { |
my ($cnum,$cdom,$key,$value,$major,$minor,$now,$homecourses,$ids) = @_; |
my ($cnum,$cdom,$key,$value,$major,$minor,$homecourses,$ids) = @_; |
my $home = &Apache::lonnet::homeserver($cnum,$cdom); |
my $home = &Apache::lonnet::homeserver($cnum,$cdom); |
return if ($home eq 'no_host'); |
return if ($home eq 'no_host'); |
my ($reqdmajor,$reqdminor,$displayrole); |
my ($reqdmajor,$reqdminor,$displayrole); |
Line 7314 sub releasereqd_check {
|
Line 7317 sub releasereqd_check {
|
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
} |
} |
} |
} |
my ($role,$end,$start) = split(/_/,$value); |
my $hashid = $cdom.':'.$cnum; |
if (!$end || $end > $now) { |
my ($courseinfo,$cached) = |
my $hashid = $cdom.':'.$cnum; |
&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
my ($courseinfo,$cached) = |
if (defined($cached)) { |
&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
if (ref($courseinfo) eq 'HASH') { |
if (defined($cached)) { |
if (exists($courseinfo->{'releaserequired'})) { |
if (ref($courseinfo) eq 'HASH') { |
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
if (exists($courseinfo->{'releaserequired'})) { |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
|
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
|
} |
|
} |
} |
} else { |
} |
if (ref($ids) eq 'ARRAY') { |
} else { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (ref($ids) eq 'ARRAY') { |
if (ref($homecourses) eq 'HASH') { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (ref($homecourses) eq 'HASH') { |
push(@{$homecourses->{$hashid}},{$key=>$value}); |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
} else { |
push(@{$homecourses->{$hashid}},{$key=>$value}); |
$homecourses->{$hashid} = [{$key=>$value}]; |
} else { |
} |
$homecourses->{$hashid} = [{$key=>$value}]; |
} |
} |
return; |
|
} |
} |
|
return; |
} |
} |
my $courseinfo = &get_courseinfo_hash($cnum,$cdom,$home); |
} |
if (ref($courseinfo) eq 'HASH') { |
my $courseinfo = &get_courseinfo_hash($cnum,$cdom,$home); |
if (exists($courseinfo->{'releaserequired'})) { |
if (ref($courseinfo) eq 'HASH') { |
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
if (exists($courseinfo->{'releaserequired'})) { |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
} |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
} |
} |
} |
} |
} |
} |
Line 7364 sub get_courseinfo_hash {
|
Line 7364 sub get_courseinfo_hash {
|
sub check_homecourses { |
sub check_homecourses { |
my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($result,%addtocache); |
my ($result,%addtocache); |
|
my $yesterday = time - 24*3600; |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses) eq 'HASH') { |
my %okcourses; |
my (%okcourses,%courseinfo,%recent); |
my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT()); |
my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT()); |
if ($hashref) { |
if ($hashref) { |
while (my ($key,$value) = each(%$hashref)) { |
while (my ($key,$value) = each(%$hashref)) { |
my $unesc_key = &unescape($key); |
my $unesc_key = &unescape($key); |
next if ($unesc_key =~ /^lasttime:/); |
if ($unesc_key =~ /^lasttime:(\w+)$/) { |
|
my $cid = $1; |
|
$cid =~ s/_/:/; |
|
if ($value > $yesterday ) { |
|
$recent{$cid} = 1; |
|
} |
|
next; |
|
} |
my $items = &Apache::lonnet::thaw_unescape($value); |
my $items = &Apache::lonnet::thaw_unescape($value); |
if (ref($items) eq 'HASH') { |
if (ref($items) eq 'HASH') { |
my $hashid = $unesc_key; |
my $hashid = $unesc_key; |
$hashid =~ s/_/:/; |
$hashid =~ s/_/:/; |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$items,600); |
$courseinfo{$hashid} = $items; |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
Line 7391 sub check_homecourses {
|
Line 7399 sub check_homecourses {
|
&logthis('Failed to tie hash for nohist_courseids.db'); |
&logthis('Failed to tie hash for nohist_courseids.db'); |
return; |
return; |
} |
} |
|
foreach my $hashid (keys(%recent)) { |
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
|
} |
|
foreach my $hashid (keys(%{$homecourses})) { |
|
next if ($recent{$hashid}); |
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
|
} |
foreach my $hashid (keys(%okcourses)) { |
foreach my $hashid (keys(%okcourses)) { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
foreach my $role (@{$homecourses->{$hashid}}) { |
foreach my $role (@{$homecourses->{$hashid}}) { |