Diff for /loncom/interface/lonmeta.pm between versions 1.79 and 1.80

version 1.79, 2004/06/16 14:30:15 version 1.80, 2004/06/16 18:33:46
Line 41  use Apache::lonmysql; Line 41  use Apache::lonmysql;
 use Apache::lonmsg;  use Apache::lonmsg;
   
   
   ############################################################
   ############################################################
   ##
   ## &get_dynamic_metadata_from_sql($url)
   ## 
   ## Queries sql database for dynamic metdata
   ## Returns a hash of hashes, with keys of urls which match $url
   ## Returned fields are given below.
   ##
   ## Examples:
   ## 
   ## %DynamicMetadata = &Apache::lonmeta::get_dynmaic_metadata_from_sql
   ##     ('/res/msu/korte/');
   ##
   ## $DynamicMetadata{'/res/msu/korte/example.problem'}->{$field}
   ##
   ############################################################
   ############################################################
   sub get_dynamic_metadata_from_sql {
       my ($url) = shift();
       # &Apache::lonnet::logthis('url = '.$url);
       my ($authordom,$author)=($url=~m:^/res/(\w+)/(\w+)/:);
       if (! defined($authordom)) {
           $authordom = shift();
       }
       if  (! defined($author)) { 
           $author = shift();
       }
       if (! defined($authordom) || ! defined($author)) {
           return ();
       }
       my @Fields = ('url',
                     'goto','goto_list',
                     'comefrom','comefrom_list',
                     'sequsage','sequsage_list',
                     'stdno','stdno_list',
                     'avetries','avetries_list',
                     'difficulty','difficulty_list',
                     'disc','disc_list',
                     'clear','technical','correct',
                     'helpful','depth');
       #
       my $query = 'SELECT '.join(',',@Fields).
           ' FROM metadata WHERE url LIKE "'.$url.'%"';
       my $server = &Apache::lonnet::homeserver($author,$authordom);
       my $reply = &Apache::lonnet::metadata_query($query,undef,undef,
                                                   ,[$server]);
       return () if (! defined($reply) || ref($reply) ne 'HASH');
       my $filename = $reply->{$server};
       if (! defined($filename) || $filename =~ /^error/) {
           return ();
       }
       my $max_time = time + 10; # wait 10 seconds for results at most
       my %ReturnHash;
       #
       # Look for results
       my $finished = 0;
       while (! $finished && time < $max_time) {
           my $datafile=$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename;
           if (! -e "$datafile.end") { next; }
           my $fh;
           if (!($fh=Apache::File->new($datafile))) { next; }
           while (my $result = <$fh>) {
               chomp($result);
               next if (! $result);
               my @Data = 
                   map { 
                       &Apache::lonnet::unescape($_); 
                   } split(',',$result);
               my $url = $Data[0];
               for (my $i=0;$i<=$#Fields;$i++) {
                   $ReturnHash{$url}->{$Fields[$i]}=$Data[$i];
                   # &Apache::lonnet::logthis('  '.$Fields[$i].' => '.$Data[$i]);
               }
           }
           $finished = 1;
       }
       #
       return %ReturnHash;
   }
   
   
 # Fetch and evaluate dynamic metadata  # Fetch and evaluate dynamic metadata
 sub dynamicmeta {  sub dynamicmeta {
     my $url=&Apache::lonnet::declutter(shift);      my $url=&Apache::lonnet::declutter(shift);

Removed from v.1.79  
changed lines
  Added in v.1.80


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>