version 1.562, 2004/11/06 01:11:38
|
version 1.563, 2004/11/08 18:04:17
|
Line 3798 sub mark_as_readonly {
|
Line 3798 sub mark_as_readonly {
|
sub get_marked_as_readonly { |
sub get_marked_as_readonly { |
my ($domain,$user,$what) = @_; |
my ($domain,$user,$what) = @_; |
my %current_permissions = &Apache::lonnet::dump('file_permissions',$domain,$user); |
my %current_permissions = &Apache::lonnet::dump('file_permissions',$domain,$user); |
my @readonly_files = []; |
my @readonly_files; |
while ((my $file_name, my $value) = each %current_permissions) { |
while (my ($file_name,$value) = each(%current_permissions)) { |
|
&logthis("found $file_name"); |
if (ref($value) eq "ARRAY"){ |
if (ref($value) eq "ARRAY"){ |
|
&logthis("found array"); |
foreach my $stored_what (@{$value}) { |
foreach my $stored_what (@{$value}) { |
if ($stored_what eq $what) { |
if ($stored_what eq $what) { |
push(@readonly_files, $file_name); |
push(@readonly_files, $file_name); |
|
&logthis("defined pushed $file_name"); |
|
} elsif (!defined($what)) { |
|
push(@readonly_files, $file_name); |
|
&logthis("undef pushed $file_name"); |
} |
} |
} |
} |
} |
} |
Line 3820 sub unmark_as_readonly {
|
Line 3826 sub unmark_as_readonly {
|
my %current_permissions = &Apache::lonnet::dump('file_permissions',$domain,$user); |
my %current_permissions = &Apache::lonnet::dump('file_permissions',$domain,$user); |
my @readonly_files = &Apache::lonnet::get_marked_as_readonly($domain,$user,$what); |
my @readonly_files = &Apache::lonnet::get_marked_as_readonly($domain,$user,$what); |
foreach my $file(@readonly_files){ |
foreach my $file(@readonly_files){ |
|
my $current_locks = $current_permissions{$file}; |
|
my @new_locks; |
|
my @del_keys; |
|
if (ref($current_locks) eq "ARRAY"){ |
|
foreach my $locker (@{$current_locks}) { |
|
unless ($locker eq $what) { |
|
push(@new_locks, $what); |
|
} |
|
} |
|
if (@new_locks > 0) { |
|
$current_permissions{$file} = \@new_locks; |
|
} else { |
|
push(@del_keys, $file); |
|
&Apache::lonnet::del('file_permissions',\@del_keys, $domain, $user); |
|
delete $current_permissions{$file}; |
|
} |
|
} |
} |
} |
&Apache::lonnet::put('file_permissions',\%current_permissions,$domain,$user); |
&Apache::lonnet::put('file_permissions',\%current_permissions,$domain,$user); |
return; |
return; |