--- loncom/lonnet/perl/lonnet.pm 2001/03/19 16:46:24 1.108 +++ loncom/lonnet/perl/lonnet.pm 2001/03/27 13:37:43 1.117 @@ -3,8 +3,9 @@ # # Functions for use by content handlers: # -# metadata_query(sql-query-string) : returns file handle of where sql -# results will be stored for query +# metadata_query(sql-query-string,custom-metadata-regex) : +# returns file handle of where sql and +# regex results will be stored for query # plaintext(short) : plain text explanation of short term # fileembstyle(ext) : embed style in page for file extension # filedescription(ext) : descriptor text for file extension @@ -91,6 +92,8 @@ # 02/27/01 Scott Harrison # 3/2 Gerd Kortemeyer # 3/15 Scott Harrison +# 3/19,3/20 Gerd Kortemeyer +# 3/22 Scott Harrison package Apache::lonnet; @@ -627,12 +630,60 @@ sub log { return critical("log:$dom:$nam:$what",$hom); } +# --------------------------------------------- Set Expire Date for Spreadsheet + +sub expirespread { + my ($uname,$udom,$stype,$usymb)=@_; + my $cid=$ENV{'request.course.id'}; + if ($cid) { + my $now=time; + my $key=$uname.':'.$udom.':'.$stype.':'.$usymb; + return &reply('put:'.$ENV{'course.'.$cid.'.domain'}.':'. + $ENV{'course.'.$cid.'.num'}. + ':nohist_expirationdates:'. + &escape($key).'='.$now, + $ENV{'course.'.$cid.'.home'}) + } + return 'ok'; +} + +# ----------------------------------------------------- Devalidate Spreadsheets + +sub devalidate { + my $symb=shift; + my $cid=$ENV{'request.course.id'}; + if ($cid) { + my $key=$ENV{'user.name'}.':'.$ENV{'user.domain'}.':'; + my $status= + &reply('del:'.$ENV{'course.'.$cid.'.domain'}.':'. + $ENV{'course.'.$cid.'.num'}. + ':nohist_calculatedsheets:'. + &escape($key.'studentcalc:'), + $ENV{'course.'.$cid.'.home'}) + .' '. + &reply('del:'.$ENV{'user.domain'}.':'. + $ENV{'user.name'}. + ':nohist_calculatedsheets_'.$cid.':'. + &escape($key.'assesscalc:'.$symb), + $ENV{'user.home'}); + unless ($status eq 'ok ok') { + &logthis('Could not devalidate spreadsheet '. + $ENV{'user.name'}.' at '.$ENV{'user.domain'}.' for '. + $symb.': '.$status); + } + } +} + # ----------------------------------------------------------------------- Store sub store { my %storehash=@_; my $symb; - unless ($symb=escape(&symbread())) { return ''; } + unless ($symb=&symbread()) { return ''; } + + &devalidate($symb); + + $symb=escape($symb); my $namespace; unless ($namespace=$ENV{'request.course.id'}) { return ''; } my $namevalue=''; @@ -650,7 +701,11 @@ sub store { sub cstore { my %storehash=@_; my $symb; - unless ($symb=escape(&symbread())) { return ''; } + unless ($symb=&symbread()) { return ''; } + + &devalidate($symb); + + $symb=escape($symb); my $namespace; unless ($namespace=$ENV{'request.course.id'}) { return ''; } my $namevalue=''; @@ -1188,6 +1243,17 @@ sub definerole { # ---------------- Make a metadata query against the network of library servers sub metadata_query { + my ($query,$custom,$customshow)=@_; + # need to put in a library server loop here and return list + unless ($custom or $customshow) { + my $reply=&reply("querysend:".&escape($query),'msul3'); + return $reply; + } + else { + my $reply=&reply("querysend:".&escape($query).':'. + &escape($custom).':'.&escape($customshow),'msul3'); + return $reply; + } my ($query)=@_; my $reply=&reply("querysend:".&escape($query),'msul3'); }