Diff for /loncom/metadata_database/searchcat.pl between versions 1.20 and 1.21

version 1.20, 2002/09/09 14:00:24 version 1.21, 2002/10/08 15:09:36
Line 44  use LONCAPA::Configuration; Line 44  use LONCAPA::Configuration;
 use IO::File;  use IO::File;
 use HTML::TokeParser;  use HTML::TokeParser;
 use DBI;  use DBI;
   use GDBM_File;
   
 my @metalist;  my @metalist;
   
   
   # ----------------------------------------------------- Un-Escape Special Chars
   
   sub unescape {
       my $str=shift;
       $str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
       return $str;
   }
   
   
   # ------------------------------------------- Code to evaluate dynamic metadata
   
   sub dynamicmeta {
   #
   #
   # Do nothing for now ...
   #
   #
       return;
   #
   # ..., but stuff below already works
   #
       my $url=&declutter(shift);
       $url=~s/\.meta$//;
       my %returnhash=();
       my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);
       my $prodir=&propath($adomain,$aauthor);
       if (tie(%evaldata,'GDBM_File',
               $prodir.'/nohist_resevaldata.db',&GDBM_READER,0640)) {
          my %sum=();
          my %cnt=();
          my %listitems=('count'        => 'add',
                         'course'       => 'add',
                         'avetries'     => 'avg',
                         'stdno'        => 'add',
                         'difficulty'   => 'avg',
                         'clear'        => 'avg',
                         'technical'    => 'avg',
                         'helpful'      => 'avg',
                         'correct'      => 'avg',
                         'depth'        => 'avg',
                         'comments'     => 'app',
                         'usage'        => 'cnt'
                         );
          my $regexp=$url;
          $regexp=~s/(\W)/\\$1/g;
          $regexp='___'.$regexp.'___([a-z]+)$';
          foreach (keys %evaldata) {
    my $key=&unescape($_);
    if ($key=~/$regexp/) {
               if (defined($cnt{$1})) { $cnt{$1}++; } else { $cnt{$1}=1; }
               unless ($listitems{$1} eq 'app') {
                     if (defined($sum{$1})) {
                        $sum{$1}+=$evaldata{$_};
                } else {
                        $sum{$1}=$evaldata{$_};
             }
                } else {
                     if (defined($sum{$1})) {
                        if ($evaldata{$_}) {
                           $sum{$1}.='<hr>'.$evaldata{$_};
                }
              } else {
                $sum{$1}=''.$evaldata{$_};
             }
         }
             }
             foreach (keys %cnt) {
                if ($listitems{$_} eq 'avg') {
            $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;
                } elsif ($listitems{$_} eq 'cnt') {
                    $returnhash{$_}=$cnt{$_};
                } else {
                    $returnhash{$_}=$sum{$_};
                }
             }
        }
        untie(%evaldata);
      }
      return %returnhash;
   }
     
 # ----------------- Code to enable 'find' subroutine listing of the .meta files  # ----------------- Code to enable 'find' subroutine listing of the .meta files
 require "find.pl";  require "find.pl";
 sub wanted {  sub wanted {
Line 105  foreach my $m (@metalist) { Line 189  foreach my $m (@metalist) {
     my $ref=&metadata($m);      my $ref=&metadata($m);
     my $m2='/res/'.&declutter($m);      my $m2='/res/'.&declutter($m);
     $m2=~s/\.meta$//;      $m2=~s/\.meta$//;
       &dynamicmeta($m2);
     my $q2="select * from metadata where url like binary '$m2'";      my $q2="select * from metadata where url like binary '$m2'";
     my $sth = $dbh->prepare($q2);      my $sth = $dbh->prepare($q2);
     $sth->execute();      $sth->execute();

Removed from v.1.20  
changed lines
  Added in v.1.21


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