version 1.744, 2006/06/05 20:09:19
|
version 1.745, 2006/06/07 18:41:57
|
Line 4556 sub is_locked {
|
Line 4556 sub is_locked {
|
my ($tmp)=keys(%locked); |
my ($tmp)=keys(%locked); |
if ($tmp=~/^error:/) { undef(%locked); } |
if ($tmp=~/^error:/) { undef(%locked); } |
|
|
|
|
if (ref($locked{$file_name}) eq 'ARRAY') { |
if (ref($locked{$file_name}) eq 'ARRAY') { |
$is_locked = 'true'; |
$is_locked = 'false'; |
|
foreach my $entry (@{$locked{$file_name}}) { |
|
if (ref($entry) eq 'ARRAY') { |
|
if ($$entry[0] eq 'access' || $$entry[0] eq 'accesscount') { |
|
next; |
|
} else { |
|
$is_locked = 'true'; |
|
last; |
|
} |
|
} |
|
} |
} else { |
} else { |
$is_locked = 'false'; |
$is_locked = 'false'; |
} |
} |
Line 4646 sub files_not_in_path {
|
Line 4657 sub files_not_in_path {
|
return (@return_files); |
return (@return_files); |
} |
} |
|
|
#--------------------------------------------------------------Get Marked as Read Only |
#----------------------------------------------Get portfolio file permissions |
|
|
|
|
sub get_marked_as_readonly { |
sub get_portfile_permissions { |
my ($domain,$user,$what) = @_; |
my ($domain,$user) = @_; |
my %current_permissions = &dump('file_permissions',$domain,$user); |
my %current_permissions = &dump('file_permissions',$domain,$user); |
my ($tmp)=keys(%current_permissions); |
my ($tmp)=keys(%current_permissions); |
if ($tmp=~/^error:/) { undef(%current_permissions); } |
if ($tmp=~/^error:/) { undef(%current_permissions); } |
|
return \%current_permissions; |
|
} |
|
|
|
#---------------------------------------------Get portfolio file access controls |
|
|
|
sub get_access_controls { |
|
my ($current_permissions,$group,$file) = @_; |
|
my @access_checks = (); |
|
my %access; |
|
if (defined($file)) { |
|
@access_checks = ($file); |
|
} else { |
|
@access_checks = keys(%{$current_permissions}); |
|
} |
|
foreach my $file_name (@access_checks) { |
|
my $value = $$current_permissions{$file_name}; |
|
if (defined($group)) { |
|
if ($file_name !~ m-^\Q$group\E/-) { |
|
next; |
|
} |
|
} |
|
if (ref($value) eq "ARRAY") { |
|
foreach my $stored_what (@{$value}) { |
|
if (ref($stored_what) eq 'ARRAY') { |
|
if ($$stored_what[0] eq 'access') { |
|
if (!defined($access{$file_name})) { |
|
%{$access{$file_name}} = (); |
|
} |
|
$access{$file_name}{$$stored_what[1]}=$$stored_what[2]; |
|
} else { |
|
next; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return %access; |
|
} |
|
|
|
#------------------------------------------------------Get Marked as Read Only |
|
|
|
sub get_marked_as_readonly { |
|
my ($domain,$user,$what,$group) = @_; |
|
my $current_permissions = &get_portfile_permissions($domain,$user); |
my @readonly_files; |
my @readonly_files; |
my $cmp1=$what; |
my $cmp1=$what; |
if (ref($what)) { $cmp1=join('',@{$what}) }; |
if (ref($what)) { $cmp1=join('',@{$what}) }; |
while (my ($file_name,$value) = each(%current_permissions)) { |
while (my ($file_name,$value) = each(%{$current_permissions})) { |
|
if (defined($group)) { |
|
if ($file_name !~ m-^\Q$group\E/-) { |
|
next; |
|
} |
|
} |
if (ref($value) eq "ARRAY"){ |
if (ref($value) eq "ARRAY"){ |
foreach my $stored_what (@{$value}) { |
foreach my $stored_what (@{$value}) { |
my $cmp2=$stored_what; |
my $cmp2=$stored_what; |
if (ref($stored_what)) { $cmp2=join('',@{$stored_what}) }; |
if (ref($stored_what)) { |
|
if ($$stored_what[0] eq 'access' || |
|
$$stored_what[0] eq 'accesscount') { |
|
next; |
|
} else { |
|
$cmp2=join('',@{$stored_what}); |
|
} |
|
} |
if ($cmp1 eq $cmp2) { |
if ($cmp1 eq $cmp2) { |
push(@readonly_files, $file_name); |
push(@readonly_files, $file_name); |
|
last; |
} elsif (!defined($what)) { |
} elsif (!defined($what)) { |
push(@readonly_files, $file_name); |
push(@readonly_files, $file_name); |
|
last; |
} |
} |
} |
} |
} |
} |
} |
} |
return @readonly_files; |
return @readonly_files; |
} |
} |
#-----------------------------------------------------------Get Marked as Read Only Hash |
#-----------------------------------------------------------Get Marked as Read Only Hash |
|
|
sub get_marked_as_readonly_hash { |
sub get_marked_as_readonly_hash { |
my ($domain,$user,$what) = @_; |
my ($current_permissions,$group,$what) = @_; |
my %current_permissions = &dump('file_permissions',$domain,$user); |
|
my ($tmp)=keys(%current_permissions); |
|
if ($tmp=~/^error:/) { undef(%current_permissions); } |
|
|
|
my %readonly_files; |
my %readonly_files; |
while (my ($file_name,$value) = each(%current_permissions)) { |
while (my ($file_name,$value) = each(%{$current_permissions})) { |
|
if (defined($group)) { |
|
if ($file_name !~ m-^\Q$group\E/-) { |
|
next; |
|
} |
|
} |
if (ref($value) eq "ARRAY"){ |
if (ref($value) eq "ARRAY"){ |
foreach my $stored_what (@{$value}) { |
foreach my $stored_what (@{$value}) { |
|
if (ref($stored_what) eq 'ARRAY') { |
|
if ($$stored_what[0] eq 'access' || |
|
$$stored_what[0] eq 'accesscount') { |
|
next; |
|
} |
|
} |
if ($stored_what eq $what) { |
if ($stored_what eq $what) { |
$readonly_files{$file_name} = 'locked'; |
$readonly_files{$file_name} = 'locked'; |
} elsif (!defined($what)) { |
} elsif (!defined($what)) { |
Line 4699 sub get_marked_as_readonly_hash {
|
Line 4774 sub get_marked_as_readonly_hash {
|
sub unmark_as_readonly { |
sub unmark_as_readonly { |
# unmarks $file_name (if $file_name is defined), or all files locked by $what |
# unmarks $file_name (if $file_name is defined), or all files locked by $what |
# for portfolio submissions, $what contains [$symb,$crsid] |
# for portfolio submissions, $what contains [$symb,$crsid] |
my ($domain,$user,$what,$file_name) = @_; |
my ($domain,$user,$what,$file_name,$group) = @_; |
my $symb_crs = $what; |
my $symb_crs = $what; |
if (ref($what)) { $symb_crs=join('',@$what); } |
if (ref($what)) { $symb_crs=join('',@$what); } |
my %current_permissions = &dump('file_permissions',$domain,$user); |
my %current_permissions = &dump('file_permissions',$domain,$user,$group); |
my ($tmp)=keys(%current_permissions); |
my ($tmp)=keys(%current_permissions); |
if ($tmp=~/^error:/) { undef(%current_permissions); } |
if ($tmp=~/^error:/) { undef(%current_permissions); } |
my @readonly_files = &get_marked_as_readonly($domain,$user,$what); |
my @readonly_files = &get_marked_as_readonly($domain,$user,$what,$group); |
foreach my $file (@readonly_files) { |
foreach my $file (@readonly_files) { |
if (defined($file_name) && ($file_name ne $file)) { next; } |
if (defined($file_name) && ($file_name ne $file)) { next; } |
my $current_locks = $current_permissions{$file}; |
my $current_locks = $current_permissions{$file}; |
Line 4714 sub unmark_as_readonly {
|
Line 4789 sub unmark_as_readonly {
|
if (ref($current_locks) eq "ARRAY"){ |
if (ref($current_locks) eq "ARRAY"){ |
foreach my $locker (@{$current_locks}) { |
foreach my $locker (@{$current_locks}) { |
my $compare=$locker; |
my $compare=$locker; |
if (ref($locker)) { $compare=join('',@{$locker}) }; |
if (ref($locker) eq 'ARRAY') { |
|
if ($$locker[0] eq 'access' || |
|
$$locker[0] eq 'accesscount') { |
|
push(@new_locks,$locker); |
|
next; |
|
} |
|
$compare=join('',@{$locker}); |
|
} |
if ($compare ne $symb_crs) { |
if ($compare ne $symb_crs) { |
push(@new_locks, $locker); |
push(@new_locks, $locker); |
} |
} |