version 1.714, 2006/03/03 23:22:18
|
version 1.717, 2006/03/04 06:03:30
|
Line 2855 sub dump {
|
Line 2855 sub dump {
|
return %returnhash; |
return %returnhash; |
} |
} |
|
|
|
# --------------------------------------------------------- dumpstore interface |
|
|
|
sub dumpstore { |
|
my ($namespace,$udomain,$uname,$regexp,$range)=@_; |
|
return &dump($namespace,$udomain,$uname,$regexp,$range); |
|
} |
|
|
# -------------------------------------------------------------- keys interface |
# -------------------------------------------------------------- keys interface |
|
|
sub getkeys { |
sub getkeys { |
Line 2996 sub newput {
|
Line 3003 sub newput {
|
# --------------------------------------------------------- putstore interface |
# --------------------------------------------------------- putstore interface |
|
|
sub putstore { |
sub putstore { |
my ($namespace,$storehash,$udomain,$uname)=@_; |
my ($namespace,$symb,$version,$storehash,$udomain,$uname)=@_; |
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); |
my $items=''; |
my $items=''; |
my %allitems = (); |
foreach my $key (keys(%$storehash)) { |
foreach (keys %$storehash) { |
$items.= &escape($key).'='.&freeze_escape($storehash->{$key}).'&'; |
if ($_ =~ m/^([^\:]+):([^\:]+):([^\:]+)$/) { |
|
my $key = $1.':keys:'.$2; |
|
$allitems{$key} .= $3.':'; |
|
} |
|
$items.=$_.'='.&freeze_escape($$storehash{$_}).'&'; |
|
} |
|
foreach (keys %allitems) { |
|
$allitems{$_} =~ s/\:$//; |
|
$items.= $_.'='.$allitems{$_}.'&'; |
|
} |
} |
$items=~s/\&$//; |
$items=~s/\&$//; |
return &reply("put:$udomain:$uname:$namespace:$items",$uhome); |
my $esc_symb=&escape($symb); |
|
my $esc_v=&escape($version); |
|
my $reply = |
|
&reply("putstore:$udomain:$uname:$namespace:$esc_symb:$esc_v:$items", |
|
$uhome); |
|
if ($reply eq 'unknown_cmd') { |
|
# gfall back to way things use to be done |
|
return &old_putstore($namespace,$symb,$version,$storehash,$udomain, |
|
$uname); |
|
} |
|
return $reply; |
|
} |
|
|
|
sub old_putstore { |
|
my ($namespace,$symb,$version,$storehash,$udomain,$uname)=@_; |
|
if (!$udomain) { $udomain=$env{'user.domain'}; } |
|
if (!$uname) { $uname=$env{'user.name'}; } |
|
my $uhome=&homeserver($uname,$udomain); |
|
my %newstorehash; |
|
foreach (keys %$storehash) { |
|
my $key = $version.':'.&escape($symb).':'.$_; |
|
$newstorehash{$key} = $storehash->{$_}; |
|
} |
|
my $items=''; |
|
my %allitems = (); |
|
foreach (keys %newstorehash) { |
|
if ($_ =~ m/^([^\:]+):([^\:]+):([^\:]+)$/) { |
|
my $key = $1.':keys:'.$2; |
|
$allitems{$key} .= $3.':'; |
|
} |
|
$items.=$_.'='.&freeze_escape($newstorehash{$_}).'&'; |
|
} |
|
foreach (keys %allitems) { |
|
$allitems{$_} =~ s/\:$//; |
|
$items.= $_.'='.$allitems{$_}.'&'; |
|
} |
|
$items=~s/\&$//; |
|
return &reply("put:$udomain:$uname:$namespace:$items",$uhome); |
} |
} |
|
|
# ------------------------------------------------------ critical put interface |
# ------------------------------------------------------ critical put interface |
Line 3026 sub cput {
|
Line 3061 sub cput {
|
my $uhome=&homeserver($uname,$udomain); |
my $uhome=&homeserver($uname,$udomain); |
my $items=''; |
my $items=''; |
foreach (keys %$storehash) { |
foreach (keys %$storehash) { |
$items.=escape($_).'='.&freeze_escape($$storehash{$_}).'&'; |
$items.=&escape($_).'='.&freeze_escape($$storehash{$_}).'&'; |
} |
} |
$items=~s/\&$//; |
$items=~s/\&$//; |
return &critical("put:$udomain:$uname:$namespace:$items",$uhome); |
return &critical("put:$udomain:$uname:$namespace:$items",$uhome); |
Line 4910 sub EXT_cache_set {
|
Line 4945 sub EXT_cache_set {
|
|
|
# --------------------------------------------------------- Value of a Variable |
# --------------------------------------------------------- Value of a Variable |
sub EXT { |
sub EXT { |
my ($varname,$symbparm,$udom,$uname,$usection,$recurse)=@_; |
|
|
|
|
my ($varname,$symbparm,$udom,$uname,$usection,$recurse)=@_; |
unless ($varname) { return ''; } |
unless ($varname) { return ''; } |
#get real user name/domain, courseid and symb |
#get real user name/domain, courseid and symb |
my $courseid; |
my $courseid; |
Line 7222 all args are optional
|
Line 7257 all args are optional
|
|
|
=item * |
=item * |
|
|
|
dumpstore($namespace,$udom,$uname,$regexp,$range) : |
|
dumps the complete (or key matching regexp) namespace into a hash |
|
($udom, $uname, $regexp, $range are optional) for a namespace that is |
|
normally &store()ed into |
|
|
|
$range should be either an integer '100' (give me the first 100 |
|
matching records) |
|
or be two integers sperated by a - with no spaces |
|
'30-50' (give me the 30th through the 50th matching |
|
records) |
|
|
|
|
|
=item * |
|
|
|
putstore($namespace,$symb,$version,$storehash,$udomain,$uname) : |
|
replaces a &store() version of data with a replacement set of data |
|
for a particular resource in a namespace passed in the $storehash hash |
|
reference |
|
|
|
=item * |
|
|
tmpstore($storehash,$symb,$namespace,$udom,$uname) : storage that |
tmpstore($storehash,$symb,$namespace,$udom,$uname) : storage that |
works very similar to store/cstore, but all data is stored in a |
works very similar to store/cstore, but all data is stored in a |
temporary location and can be reset using tmpreset, $storehash should |
temporary location and can be reset using tmpreset, $storehash should |
Line 7275 put($namespace,$storehash,$udom,$uname)
|
Line 7331 put($namespace,$storehash,$udom,$uname)
|
|
|
=item * |
=item * |
|
|
putstore($namespace,$storehash,$udomain,$uname) : stores hash in namesp |
|
keys used in storehash include version information (e.g., 1:$symb:message etc.) as |
|
used in records written by &store and retrieved by &restore. This function |
|
was created for use in editing discussion posts, without incrementing the |
|
version number included in the key for a particular post. The colon |
|
separated list of attribute names (e.g., the value associated with the key |
|
1:keys:$symb) is also generated and passed in the ampersand separated |
|
items sent to lonnet::reply(). |
|
|
|
=item * |
|
|
|
cput($namespace,$storehash,$udom,$uname) : critical put |
cput($namespace,$storehash,$udom,$uname) : critical put |
($udom and $uname are optional) |
($udom and $uname are optional) |
|
|