version 1.624, 2005/04/15 22:03:23
|
version 1.633, 2005/05/05 20:50:38
|
Line 258 sub critical {
|
Line 258 sub critical {
|
|
|
sub transfer_profile_to_env { |
sub transfer_profile_to_env { |
my ($lonidsdir,$handle)=@_; |
my ($lonidsdir,$handle)=@_; |
|
undef(%env); |
my @profile; |
my @profile; |
{ |
{ |
open(my $idf,"$lonidsdir/$handle.id"); |
open(my $idf,"$lonidsdir/$handle.id"); |
Line 827 sub getsection {
|
Line 828 sub getsection {
|
} |
} |
|
|
sub save_cache { |
sub save_cache { |
|
my ($r)=@_; |
|
if (! $r->is_initial_req()) { return DECLINED; } |
&purge_remembered(); |
&purge_remembered(); |
undef(%env); |
undef(%env); |
|
return OK; |
} |
} |
|
|
my $to_remember=-1; |
my $to_remember=-1; |
Line 2561 sub convert_dump_to_currentdump{
|
Line 2565 sub convert_dump_to_currentdump{
|
return \%returnhash; |
return \%returnhash; |
} |
} |
|
|
|
# ------------------------------------------------------ critical inc interface |
|
|
|
sub cinc { |
|
return &inc(@_,'critical'); |
|
} |
|
|
# --------------------------------------------------------------- inc interface |
# --------------------------------------------------------------- inc interface |
|
|
sub inc { |
sub inc { |
my ($namespace,$store,$udomain,$uname) = @_; |
my ($namespace,$store,$udomain,$uname,$critical) = @_; |
if (!$udomain) { $udomain=$env{'user.domain'}; } |
if (!$udomain) { $udomain=$env{'user.domain'}; } |
if (!$uname) { $uname=$env{'user.name'}; } |
if (!$uname) { $uname=$env{'user.name'}; } |
my $uhome=&homeserver($uname,$udomain); |
my $uhome=&homeserver($uname,$udomain); |
Line 2582 sub inc {
|
Line 2592 sub inc {
|
} |
} |
} |
} |
$items=~s/\&$//; |
$items=~s/\&$//; |
return &reply("inc:$udomain:$uname:$namespace:$items",$uhome); |
if ($critical) { |
|
return &critical("inc:$udomain:$uname:$namespace:$items",$uhome); |
|
} else { |
|
return &reply("inc:$udomain:$uname:$namespace:$items",$uhome); |
|
} |
} |
} |
|
|
# --------------------------------------------------------------- put interface |
# --------------------------------------------------------------- put interface |
Line 2600 sub put {
|
Line 2614 sub put {
|
return &reply("put:$udomain:$uname:$namespace:$items",$uhome); |
return &reply("put:$udomain:$uname:$namespace:$items",$uhome); |
} |
} |
|
|
# ---------------------------------------------------------- putstore interface |
# ------------------------------------------------------------ newput interface |
|
|
|
sub newput { |
|
my ($namespace,$storehash,$udomain,$uname)=@_; |
|
if (!$udomain) { $udomain=$env{'user.domain'}; } |
|
if (!$uname) { $uname=$env{'user.name'}; } |
|
my $uhome=&homeserver($uname,$udomain); |
|
my $items=''; |
|
foreach my $key (keys(%$storehash)) { |
|
$items.=&escape($key).'='.&freeze_escape($$storehash{$key}).'&'; |
|
} |
|
$items=~s/\&$//; |
|
return &reply("newput:$udomain:$uname:$namespace:$items",$uhome); |
|
} |
|
|
|
# --------------------------------------------------------- putstore interface |
|
|
sub putstore { |
sub putstore { |
my ($namespace,$storehash,$udomain,$uname)=@_; |
my ($namespace,$storehash,$udomain,$uname)=@_; |
if (!$udomain) { $udomain=$env{'user.domain'}; } |
if (!$udomain) { $udomain=$env{'user.domain'}; } |
Line 3743 sub mark_as_readonly {
|
Line 3772 sub mark_as_readonly {
|
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); } |
|
|
foreach my $file (@{$files}) { |
foreach my $file (@{$files}) { |
push(@{$current_permissions{$file}},$what); |
push(@{$current_permissions{$file}},$what); |
} |
} |
Line 3822 sub files_not_in_path {
|
Line 3850 sub files_not_in_path {
|
|
|
#--------------------------------------------------------------Get Marked as Read Only |
#--------------------------------------------------------------Get Marked as Read Only |
|
|
|
|
sub get_marked_as_readonly { |
sub get_marked_as_readonly { |
my ($domain,$user,$what) = @_; |
my ($domain,$user,$what) = @_; |
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); } |
|
|
my @readonly_files; |
my @readonly_files; |
|
my $cmp1=$what; |
|
if (ref($what)) { $cmp1=join('',@{$what}) }; |
while (my ($file_name,$value) = each(%current_permissions)) { |
while (my ($file_name,$value) = each(%current_permissions)) { |
if (ref($value) eq "ARRAY"){ |
if (ref($value) eq "ARRAY"){ |
foreach my $stored_what (@{$value}) { |
foreach my $stored_what (@{$value}) { |
if ($stored_what eq $what) { |
my $cmp2=$stored_what; |
|
if (ref($stored_what)) { $cmp2=join('',@{$stored_what}) }; |
|
if ($cmp1 eq $cmp2) { |
push(@readonly_files, $file_name); |
push(@readonly_files, $file_name); |
} elsif (!defined($what)) { |
} elsif (!defined($what)) { |
push(@readonly_files, $file_name); |
push(@readonly_files, $file_name); |
Line 3867 sub get_marked_as_readonly_hash {
|
Line 3899 sub get_marked_as_readonly_hash {
|
# ------------------------------------------------------------ Unmark as Read Only |
# ------------------------------------------------------------ Unmark as Read Only |
|
|
sub unmark_as_readonly { |
sub unmark_as_readonly { |
# unmarks all files locked by $what |
# unmarks $file_name (if $file_name is defined), or all files locked by $what |
# for portfolio submissions, $what contains $crsid and $symb |
# for portfolio submissions, $what contains [$symb,$crsid] |
my ($domain,$user,$what) = @_; |
my ($domain,$user,$what,$file_name) = @_; |
|
my $symb_crs = join('',@$what); |
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); } |
|
|
my @readonly_files = &get_marked_as_readonly($domain,$user,$what); |
my @readonly_files = &get_marked_as_readonly($domain,$user,$what); |
foreach my $file(@readonly_files){ |
foreach my $file(@readonly_files){ |
my $current_locks = $current_permissions{$file}; |
my $current_locks = $current_permissions{$file}; |
Line 3881 sub unmark_as_readonly {
|
Line 3913 sub unmark_as_readonly {
|
my @del_keys; |
my @del_keys; |
if (ref($current_locks) eq "ARRAY"){ |
if (ref($current_locks) eq "ARRAY"){ |
foreach my $locker (@{$current_locks}) { |
foreach my $locker (@{$current_locks}) { |
unless ($locker eq $what) { |
my $compare=$locker; |
|
if (ref($locker)) { $compare=join('',@{$locker}) }; |
|
if ($compare eq $symb_crs) { |
|
if (defined($file_name) && ($file_name ne $file)) { |
|
push(@new_locks, $what); |
|
} |
|
} else { |
push(@new_locks, $what); |
push(@new_locks, $what); |
} |
} |
} |
} |
Line 4107 sub get_courseresdata {
|
Line 4145 sub get_courseresdata {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub devalidateuserresdata { |
|
my ($uname,$udom)=@_; |
|
my $hashid="$udom:$uname"; |
|
&devalidate_cache_new('userres',$hashid); |
|
} |
|
|
sub get_userresdata { |
sub get_userresdata { |
my ($uname,$udom)=@_; |
my ($uname,$udom)=@_; |
#most student don\'t have any data set, check if there is some data |
#most student don\'t have any data set, check if there is some data |
Line 4130 sub get_userresdata {
|
Line 4174 sub get_userresdata {
|
$uname." at ".$udom.": ". |
$uname." at ".$udom.": ". |
$tmp."</font>"); |
$tmp."</font>"); |
} elsif ($tmp=~/error: 2 /) { |
} elsif ($tmp=~/error: 2 /) { |
&EXT_cache_set($udom,$uname); |
#&EXT_cache_set($udom,$uname); |
|
&do_cache_new('userres',$hashid,undef,600); |
} |
} |
return $tmp; |
return $tmp; |
} |
} |
Line 4174 sub EXT_cache_status {
|
Line 4219 sub EXT_cache_status {
|
sub EXT_cache_set { |
sub EXT_cache_set { |
my ($target_domain,$target_user) = @_; |
my ($target_domain,$target_user) = @_; |
my $cachename = 'cache.EXT.'.$target_user.'.'.$target_domain; |
my $cachename = 'cache.EXT.'.$target_user.'.'.$target_domain; |
&appenv($cachename => time); |
#&appenv($cachename => time); |
} |
} |
|
|
# --------------------------------------------------------- Value of a Variable |
# --------------------------------------------------------- Value of a Variable |
Line 4937 sub symbread {
|
Line 4982 sub symbread {
|
if ($#possibilities==0) { |
if ($#possibilities==0) { |
# ----------------------------------------------- There is only one possibility |
# ----------------------------------------------- There is only one possibility |
my ($mapid,$resid)=split(/\./,$ids); |
my ($mapid,$resid)=split(/\./,$ids); |
$syval=declutter($bighash{'map_id_'.$mapid}).'___'.$resid; |
$syval=&encode_symb($bighash{'map_id_'.$mapid}, |
|
$resid,$thisfn); |
} elsif (!$donotrecurse) { |
} elsif (!$donotrecurse) { |
# ------------------------------------------ There is more than one possibility |
# ------------------------------------------ There is more than one possibility |
my $realpossible=0; |
my $realpossible=0; |
Line 4947 sub symbread {
|
Line 4993 sub symbread {
|
my ($mapid,$resid)=split(/\./,$_); |
my ($mapid,$resid)=split(/\./,$_); |
if ($bighash{'map_type_'.$mapid} ne 'page') { |
if ($bighash{'map_type_'.$mapid} ne 'page') { |
$realpossible++; |
$realpossible++; |
$syval=declutter($bighash{'map_id_'.$mapid}). |
$syval=&encode_symb($bighash{'map_id_'.$mapid}, |
'___'.$resid; |
$resid,$thisfn); |
} |
} |
} |
} |
} |
} |
Line 4962 sub symbread {
|
Line 5008 sub symbread {
|
} |
} |
if ($syval) { |
if ($syval) { |
return $env{$cache_str}=$syval; |
return $env{$cache_str}=$syval; |
#return $env{$cache_str}=&symbclean($syval.'___'.$thisfn); |
|
} |
} |
} |
} |
&appenv('request.ambiguous' => $thisfn); |
&appenv('request.ambiguous' => $thisfn); |
Line 6157 revokecustomrole($udom,$uname,$url,$role
|
Line 6202 revokecustomrole($udom,$uname,$url,$role
|
|
|
=item * |
=item * |
|
|
coursedescription($courseid) : course description |
coursedescription($courseid) : returns a hash of information about the |
|
specified course id, including all environment settings for the |
|
course, the description of the course will be in the hash under the |
|
key 'description' |
|
|
=item * |
=item * |
|
|