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

version 1.18, 2002/05/17 14:03:04 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 56  sub wanted { Line 140  sub wanted {
 }  }
   
 # ---------------  Read loncapa_apache.conf and loncapa.conf and get variables  # ---------------  Read loncapa_apache.conf and loncapa.conf and get variables
 my $perlvarref=LONCAPA::Configuration::read_conf('loncapa_apache.conf',  my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
                                                  'loncapa.conf');  
 my %perlvar=%{$perlvarref};  my %perlvar=%{$perlvarref};
 undef $perlvarref; # remove since sensitive and not needed  undef $perlvarref; # remove since sensitive and not needed
 delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed  delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
Line 74  my $dbh; Line 157  my $dbh;
  print "Cannot connect to database!\n";   print "Cannot connect to database!\n";
  exit;   exit;
     }      }
       my $make_metadata_table = "CREATE TABLE IF NOT EXISTS metadata (".
           "title TEXT, author TEXT, subject TEXT, url TEXT, keywords TEXT, ".
           "version TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, ".
           "creationdate DATETIME, lastrevisiondate DATETIME, owner TEXT, ".
           "copyright TEXT, FULLTEXT idx_title (title), ".
           "FULLTEXT idx_author (author), FULLTEXT idx_subject (subject), ".
           "FULLTEXT idx_url (url), FULLTEXT idx_keywords (keywords), ".
           "FULLTEXT idx_version (version), FULLTEXT idx_notes (notes), ".
           "FULLTEXT idx_abstract (abstract), FULLTEXT idx_mime (mime), ".
           "FULLTEXT idx_language (language), FULLTEXT idx_owner (owner), ".
           "FULLTEXT idx_copyright (copyright)) TYPE=MYISAM";
       # It would sure be nice to have some logging mechanism.
       $dbh->do($make_metadata_table);
 }  }
   
 # ------------------------------------------------------------- get .meta files  # ------------------------------------------------------------- get .meta files
Line 93  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.18  
changed lines
  Added in v.1.21


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