version 1.54, 2007/07/11 20:32:15
|
version 1.55, 2007/07/11 23:51:19
|
Line 43 my $iconpath; # variable to be accessibl
|
Line 43 my $iconpath; # variable to be accessibl
|
my %hash; # variable to tie to user specific database |
my %hash; # variable to tie to user specific database |
|
|
|
|
|
sub update_actions_hash { |
|
my ($hash) = @_; |
|
my $acts=$env{'form.acts'}; |
|
my @Acts=split(/b/,$acts); |
|
my %ahash; |
|
my %achash; |
|
my $ac=0; |
|
# some initial hashes for working with data |
|
foreach (@Acts) { |
|
my ($state,$ref)=split(/a/); |
|
$ahash{$ref}=$state; |
|
$achash{$ref}=$ac; |
|
$ac++; |
|
} |
|
# sorting through the actions and changing the global database hash |
|
foreach my $key (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) { |
|
if ($ahash{$key} eq '1') { |
|
$hash->{'store_'.$hash{'pre_'.$key.'_link'}}= |
|
$hash->{'pre_'.$key.'_title'}; |
|
$hash->{'storectr_'.$hash{'pre_'.$key.'_link'}}= |
|
$hash->{'storectr'}+0; |
|
$hash->{'storectr'}++; |
|
} |
|
if ($ahash{$key} eq '0') { |
|
if ($hash->{'store_'.$hash{'pre_'.$key.'_link'}}) { |
|
delete($hash->{'store_'.$hash{'pre_'.$key.'_link'}}); |
|
} |
|
} |
|
} |
|
# deleting the previously cached listing |
|
foreach my $key (keys(%{ $hash })) { |
|
next if ($key !~ /^pre_(\d+)_link/); |
|
my $which = $1; |
|
delete($hash->{'pre_'.$which.'_title'}); |
|
delete($hash->{'pre_'.$which.'_link'}); |
|
} |
|
} |
|
|
sub readfromdb { |
sub readfromdb { |
my ($r,$shash,$thash)=@_; |
my ($r,$shash,$thash)=@_; |
|
|
Line 51 sub readfromdb {
|
Line 89 sub readfromdb {
|
|
|
# ----------------------------- diropendb is now the filename of the db to open |
# ----------------------------- diropendb is now the filename of the db to open |
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) { |
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) { |
my $acts = $env{'form.acts'}; |
&update_actions_hash(\%hash); |
my @Acts = split(/b/,$acts); |
|
my %ahash; |
|
my %achash; |
|
my $ac = 0; |
|
foreach (@Acts) { |
|
my ($state,$ref) = split(/a/); |
|
$ahash{$ref} = $state; |
|
$achash{$ref} = $ac; |
|
$ac++; |
|
} |
|
foreach (sort {$achash{$a} <=> $achash{$b}} (keys %ahash)) { |
|
my $key = $_; |
|
if ($ahash{$key} eq '1') { |
|
if ($hash{'pre_'.$key.'_title'} eq 'Not_retrieved') { |
|
$hash{'pre_'.$key.'_title'} = &Apache::lonnet::gettitle($hash{'pre_'.$key.'_link'}); |
|
} |
|
$hash{'store_'.$hash{'pre_'.$key.'_link'}} = |
|
$hash{'pre_'.$key.'_title'}; |
|
$hash{'storectr_'.$hash{'pre_'.$key.'_link'}} = |
|
$hash{'storectr'}+0; |
|
$hash{'storectr'}++; |
|
} |
|
if ($ahash{$key} eq '0') { |
|
if ($hash{'store_'.$hash{'pre_'.$key.'_link'}}) { |
|
delete $hash{'store_'.$hash{'pre_'.$key.'_link'}}; |
|
} |
|
} |
|
} |
|
foreach (keys %hash) { |
foreach (keys %hash) { |
if ($_ =~ /^store_/) { |
if ($_ =~ /^store_/) { |
my $key = $_; |
my $key = $_; |