version 1.488, 2012/04/11 01:07:18
|
version 1.489, 2012/04/11 06:22:04
|
Line 3365 sub dump_with_regexp {
|
Line 3365 sub dump_with_regexp {
|
# |
# |
if (($namespace eq 'roles') && (!$skipcheck)) { |
if (($namespace eq 'roles') && (!$skipcheck)) { |
if (keys(%homecourses) > 0) { |
if (keys(%homecourses) > 0) { |
$qresult .= &check_homecourses(\%homecourses,$udom,$regexp,$count, |
$qresult .= &check_homecourses(\%homecourses,$regexp,$count, |
$range,$start,$end,$major,$minor); |
$range,$start,$end,$major,$minor); |
} |
} |
} |
} |
Line 7517 sub releasereqd_check {
|
Line 7517 sub releasereqd_check {
|
if (ref($ids) eq 'ARRAY') { |
if (ref($ids) eq 'ARRAY') { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (ref($homecourses->{$cdom}) eq 'HASH') { |
push(@{$homecourses->{$hashid}},{$key=>$value}); |
if (ref($homecourses->{$cdom}{$cnum}) eq 'HASH') { |
|
if (ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY') { |
|
push(@{$homecourses->{$cdom}{$cnum}},{$key=>$value}); |
|
} else { |
|
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
|
} |
|
} else { |
|
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
|
} |
} else { |
} else { |
$homecourses->{$hashid} = [{$key=>$value}]; |
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
} |
} |
} |
} |
return; |
return; |
Line 7595 sub get_courseinfo_hash {
|
Line 7603 sub get_courseinfo_hash {
|
# |
# |
|
|
sub check_homecourses { |
sub check_homecourses { |
my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($homecourses,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($result,%addtocache); |
my ($result,%addtocache); |
my $yesterday = time - 24*3600; |
my $yesterday = time - 24*3600; |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses) eq 'HASH') { |
my (%okcourses,%courseinfo,%recent); |
my (%okcourses,%courseinfo,%recent); |
my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT()); |
foreach my $domain (keys(%{$homecourses})) { |
if ($hashref) { |
my $hashref = |
while (my ($key,$value) = each(%$hashref)) { |
&tie_domain_hash($domain, "nohist_courseids", &GDBM_WRCREAT()); |
my $unesc_key = &unescape($key); |
if (ref($hashref) eq 'HASH') { |
if ($unesc_key =~ /^lasttime:(\w+)$/) { |
while (my ($key,$value) = each(%$hashref)) { |
my $cid = $1; |
my $unesc_key = &unescape($key); |
$cid =~ s/_/:/; |
if ($unesc_key =~ /^lasttime:(\w+)$/) { |
if ($value > $yesterday ) { |
my $cid = $1; |
$recent{$cid} = 1; |
$cid =~ s/_/:/; |
|
if ($value > $yesterday ) { |
|
$recent{$cid} = 1; |
|
} |
|
next; |
} |
} |
next; |
my $items = &Apache::lonnet::thaw_unescape($value); |
} |
if (ref($items) eq 'HASH') { |
my $items = &Apache::lonnet::thaw_unescape($value); |
my ($cdom,$cnum) = split(/_/,$unesc_key); |
if (ref($items) eq 'HASH') { |
my $hashid = $cdom.':'.$cnum; |
my $hashid = $unesc_key; |
$courseinfo{$hashid} = $items; |
$hashid =~ s/_/:/; |
if (ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY') { |
$courseinfo{$hashid} = $items; |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
$okcourses{$hashid} = 1; |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
} |
$okcourses{$hashid} = 1; |
|
} |
} |
} |
} |
} |
} |
|
unless (&untie_domain_hash($hashref)) { |
|
&logthis("Failed to untie tied hash for nohist_courseids.db for $domain"); |
|
} |
|
} else { |
|
&logthis("Failed to tie hash for nohist_courseids.db for $domain"); |
} |
} |
unless (&untie_domain_hash($hashref)) { |
|
&logthis('Failed to untie tied hash for nohist_courseids.db'); |
|
} |
|
} else { |
|
&logthis('Failed to tie hash for nohist_courseids.db'); |
|
return; |
|
} |
} |
foreach my $hashid (keys(%recent)) { |
foreach my $hashid (keys(%recent)) { |
my ($result,$cached)=&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
my ($result,$cached)=&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
Line 7638 sub check_homecourses {
|
Line 7648 sub check_homecourses {
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
} |
} |
} |
} |
foreach my $hashid (keys(%{$homecourses})) { |
foreach my $cdom (keys(%{$homecourses})) { |
next if ($recent{$hashid}); |
if (ref($homecourses->{$cdom}) eq 'HASH') { |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
foreach my $cnum (keys(%{$homecourses->{$cdom}})) { |
|
my $hashid = $cdom.':'.$cnum; |
|
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') { |
my ($cdom,$cnum) = split(/:/,$hashid); |
foreach my $role (@{$homecourses->{$hashid}}) { |
if ((ref($homecourses->{$cdom}) eq 'HASH') && |
|
(ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY')) { |
|
foreach my $role (@{$homecourses->{$cdom}{$cnum}}) { |
if (ref($role) eq 'HASH') { |
if (ref($role) eq 'HASH') { |
while (my ($key,$value) = each(%{$role})) { |
while (my ($key,$value) = each(%{$role})) { |
if ($regexp eq '.') { |
if ($regexp eq '.') { |