Diff for /loncom/lonnet/perl/lonnet.pm between versions 1.169 and 1.177

version 1.169, 2001/11/16 06:21:39 version 1.177, 2001/11/22 20:09:22
Line 35 Line 35
 # 8/4,8/7,8/8,8/9,8/11,8/16,8/17,8/18,8/20,8/23,9/20,9/21,9/26,  # 8/4,8/7,8/8,8/9,8/11,8/16,8/17,8/18,8/20,8/23,9/20,9/21,9/26,
 # 10/2 Gerd Kortemeyer  # 10/2 Gerd Kortemeyer
 # 10/5,10/10,11/13,11/15 Scott Harrison  # 10/5,10/10,11/13,11/15 Scott Harrison
   # 11/17,11/20,11/22 Gerd Kortemeyer
 #  #
 # $Id$  # $Id$
   #
 ###  ###
   
 # Functions for use by content handlers:  # Functions for use by content handlers:
Line 1660  sub definerole { Line 1662  sub definerole {
   
 sub metadata_query {  sub metadata_query {
     my ($query,$custom,$customshow)=@_;      my ($query,$custom,$customshow)=@_;
     # need to put in a library server loop here and return a hash  
     my %rhash;      my %rhash;
     for my $server (keys %libserv) {      for my $server (keys %libserv) {
  unless ($custom or $customshow) {   unless ($custom or $customshow) {
Line 1746  sub modifyuserauth { Line 1747  sub modifyuserauth {
     unless ($reply eq 'ok') {      unless ($reply eq 'ok') {
  return 'error: '.$reply;   return 'error: '.$reply;
     }         }   
       return 'ok';
 }  }
   
 # --------------------------------------------------------------- Modify a user  # --------------------------------------------------------------- Modify a user
Line 2230  sub EXT { Line 2232  sub EXT {
 # ---------------------------------------------------------------- Get metadata  # ---------------------------------------------------------------- Get metadata
   
 sub metadata {  sub metadata {
     my ($uri,$what)=@_;      my ($uri,$what,$liburi,$prefix,$depthcount)=@_;
   
     $uri=&declutter($uri);      $uri=&declutter($uri);
     my $filename=$uri;      my $filename=$uri;
     $uri=~s/\.meta$//;      $uri=~s/\.meta$//;
     unless ($metacache{$uri.':keys'}) {  #
   # Is the metadata already cached?
   # Look at timestamp of caching
   # Everything is cached by the main uri, libraries are never directly cached
   #
       unless (abs($metacache{$uri.':cachedtimestamp'}-time)<600) {
   #
   # Is this a recursive call for a library?
   #
           if ($liburi) {
       $liburi=&declutter($liburi);
               $filename=$liburi;
           }
         my %metathesekeys=();          my %metathesekeys=();
         unless ($filename=~/\.meta$/) { $filename.='.meta'; }          unless ($filename=~/\.meta$/) { $filename.='.meta'; }
  my $metastring=&getfile($perlvar{'lonDocRoot'}.'/res/'.$filename);   my $metastring=&getfile($perlvar{'lonDocRoot'}.'/res/'.$filename);
Line 2245  sub metadata { Line 2259  sub metadata {
         while ($token=$parser->get_token) {          while ($token=$parser->get_token) {
            if ($token->[0] eq 'S') {             if ($token->[0] eq 'S') {
      if (defined($token->[2]->{'package'})) {       if (defined($token->[2]->{'package'})) {
   #
   # This is a package - get package info
   #
       my $package=$token->[2]->{'package'};        my $package=$token->[2]->{'package'};
       my $keyroot='';        my $keyroot='';
               if (defined($token->[2]->{'part'})) {                 if ($prefix) {
                  $keyroot.='_'.$token->[2]->{'part'};     $keyroot.='_'.$prefix;
                 } else {
                   if (defined($token->[2]->{'part'})) { 
                      $keyroot.='_'.$token->[2]->{'part'}; 
           }
       }        }
               if (defined($token->[2]->{'id'})) {                 if (defined($token->[2]->{'id'})) { 
                  $keyroot.='_'.$token->[2]->{'id'};                    $keyroot.='_'.$token->[2]->{'id'}; 
Line 2277  sub metadata { Line 2298  sub metadata {
                   }                    }
               } keys %packagetab;                } keys %packagetab;
              } else {               } else {
       my $entry=$token->[1];  #
               my $unikey=$entry;  # This is not a package - some other kind of start tag
               if (defined($token->[2]->{'part'})) {   # 
                  $unikey.='_'.$token->[2]->{'part'};                 my $entry=$token->[1];
                 my $unikey;
                 if ($entry eq 'import') {
                    $unikey='';
                 } else {
                    $unikey=$entry;
         }
                 if ($prefix) {
     $unikey.=$prefix;
                 } else {
                   if (defined($token->[2]->{'part'})) { 
                      $unikey.='_'.$token->[2]->{'part'}; 
           }
       }        }
               if (defined($token->[2]->{'id'})) {                 if (defined($token->[2]->{'id'})) { 
                  $unikey.='_'.$token->[2]->{'id'};                    $unikey.='_'.$token->[2]->{'id'}; 
       }        }
   
                if ($entry eq 'import') {
   #
   # Importing a library here
   #                
    if (defined($depthcount)) { $depthcount++; } else 
                                              { $depthcount=0; }
                    if ($depthcount<20) {
        map {
                            $metathesekeys{$_}=1;
        } split(/\,/,&metadata($uri,'keys',
                                     $parser->get_text('/import'),$unikey,
                                     $depthcount));
    }
                } else { 
   
               if (defined($token->[2]->{'name'})) {                 if (defined($token->[2]->{'name'})) { 
                  $unikey.='_'.$token->[2]->{'name'};                    $unikey.='_'.$token->[2]->{'name'}; 
       }        }
Line 2297  sub metadata { Line 2346  sub metadata {
       ) { $metacache{$uri.':'.$unikey}=        ) { $metacache{$uri.':'.$unikey}=
       $metacache{$uri.':'.$unikey.'.default'};        $metacache{$uri.':'.$unikey.'.default'};
       }        }
     }  # end of not-a-package not-a-library import
      }
   # end of not-a-package start tag
     }
   # the next is the end of "start tag"
  }   }
        }         }
        $metacache{$uri.':keys'}=join(',',keys %metathesekeys);         $metacache{$uri.':keys'}=join(',',keys %metathesekeys);
          $metacache{$uri.':cachedtimestamp'}=time;
   # this is the end of "was not already recently cached
     }      }
     return $metacache{$uri.':'.$what};      return $metacache{$uri.':'.$what};
 }  }

Removed from v.1.169  
changed lines
  Added in v.1.177


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