Diff for /loncom/metadata_database/searchcat.pl between versions 1.33 and 1.34

version 1.33, 2003/06/19 19:34:27 version 1.34, 2003/06/19 20:24:57
Line 125  sub dynamicmeta { Line 125  sub dynamicmeta {
         my $regexp=$url;          my $regexp=$url;
         $regexp=~s/(\W)/\\$1/g;          $regexp=~s/(\W)/\\$1/g;
         $regexp='___'.$regexp.'___([a-z]+)$';          $regexp='___'.$regexp.'___([a-z]+)$';
         foreach (keys %evaldata) {          study($regexp);
             my $key=&unescape($_);          while (my ($key,$value) = each(%evaldata)) {
             if ($key=~/$regexp/) {              $key=&unescape($key);
                 my $ctype=$1;              next if ($key !~ /$regexp/);
                 if (defined($cnt{$ctype})) {               my $ctype=$1;
                     $cnt{$ctype}++;               if (defined($cnt{$ctype})) { 
                 } else {                   $cnt{$ctype}++; 
                     $cnt{$ctype}=1;               } else { 
                   $cnt{$ctype}=1; 
               }
               unless ($listitems{$ctype} eq 'app') {
                   if (defined($sum{$ctype})) {
                       $sum{$ctype}+=$value;
                   } else {
                       $sum{$ctype}=$value;
                 }                  }
                 unless ($listitems{$ctype} eq 'app') {              } else {
                     if (defined($sum{$ctype})) {                  if (defined($sum{$ctype})) {
                         $sum{$ctype}+=$evaldata{$_};                      if ($value) {
                     } else {                          $sum{$ctype}.='<hr>'.$value;
                         $sum{$ctype}=$evaldata{$_};  
                     }                      }
                 } else {                  } else {
                     if (defined($sum{$ctype})) {                      $sum{$ctype}=''.$value;
                         if ($evaldata{$_}) {  
                             $sum{$ctype}.='<hr>'.$evaldata{$_};  
                         }  
                     } else {  
                         $sum{$ctype}=''.$evaldata{$_};  
                     }  
                 }  
                 if ($ctype ne 'count') {  
                     $newevaldata{$_}=$evaldata{$_};  
                 }                  }
             }              }
               if ($ctype ne 'count') {
                   $newevaldata{$_}=$value;
               }
         }          }
         foreach (keys %cnt) {          while (my($key,$value) = each(%cnt)) {
             if ($listitems{$_} eq 'avg') {              if ($listitems{$key} eq 'avg') {
                 $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;                  $returnhash{$key}=int(($sum{$key}/$value)*100.0+0.5)/100.0;
             } elsif ($listitems{$_} eq 'cnt') {              } elsif ($listitems{$key} eq 'cnt') {
                 $returnhash{$_}=$cnt{$_};                  $returnhash{$key}=$value;
             } else {              } else {
                 $returnhash{$_}=$sum{$_};                  $returnhash{$key}=$sum{$key};
             }              }
         }          }
         if ($returnhash{'count'}) {          if ($returnhash{'count'}) {
Line 237  my @homeusers = grep { Line 237  my @homeusers = grep {
     &ishome("$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}/$_")      &ishome("$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}/$_")
     } grep {!/^\.\.?$/} readdir(RESOURCES);      } grep {!/^\.\.?$/} readdir(RESOURCES);
 closedir RESOURCES;  closedir RESOURCES;
   
   #
   # Create the statement handlers we need
   my $delete_sth = $dbh->prepare
       ("DELETE FROM metadata WHERE url LIKE BINARY ?");
   
   my $insert_sth = $dbh->prepare
       ("INSERT INTO metadata VALUES (".
        "?,".   # title
        "?,".   # author
        "?,".   # subject
        "?,".   # m2???
        "?,".   # version
        "?,".   # current
        "?,".   # notes
        "?,".   # abstract
        "?,".   # mime
        "?,".   # language
        "?,".   # creationdate
        "?,".   # revisiondate
        "?,".   # owner
        "?)"    # copyright
        );
   
 foreach my $user (@homeusers) {  foreach my $user (@homeusers) {
     print LOG "\n=== User: ".$user."\n\n";      print LOG "\n=== User: ".$user."\n\n";
     # Remove left-over db-files from potentially crashed searchcat run      # Remove left-over db-files from potentially crashed searchcat run
Line 255  foreach my $user (@homeusers) { Line 279  foreach my $user (@homeusers) {
         my $m2='/res/'.&declutter($m);          my $m2='/res/'.&declutter($m);
         $m2=~s/\.meta$//;          $m2=~s/\.meta$//;
         &dynamicmeta($m2);          &dynamicmeta($m2);
         my $q2="select * from metadata where url like binary '$m2'";          $delete_sth->execute($m2);
         my $sth = $dbh->prepare($q2);          $insert_sth->execute($ref->{'title'},
         $sth->execute();                               $ref->{'author'},
         my $r1=$sth->fetchall_arrayref;                               $ref->{'subject'},
         if (@$r1) {                               $m2,
             $sth=$dbh->prepare("delete from metadata where url like binary '$m2'");                               $ref->{'keywords'},
             $sth->execute();                               'current',
         }                               $ref->{'notes'},
         $sth=$dbh->prepare('insert into metadata values ('.                               $ref->{'abstract'},
                            '"'.delete($ref->{'title'}).'"'.','.                               $ref->{'mime'},
                            '"'.delete($ref->{'author'}).'"'.','.                               $ref->{'language'},
                            '"'.delete($ref->{'subject'}).'"'.','.                               sqltime($ref->{'creationdate'}),
                            '"'.$m2.'"'.','.                               sqltime($ref->{'lastrevisiondate'}),
                            '"'.delete($ref->{'keywords'}).'"'.','.                               $ref->{'owner'},
                            '"'.'current'.'"'.','.                               $ref->{'copyright'});
                            '"'.delete($ref->{'notes'}).'"'.','.  #        if ($dbh->err()) {
                            '"'.delete($ref->{'abstract'}).'"'.','.  #            print STDERR "Error:".$dbh->errstr()."\n";
                            '"'.delete($ref->{'mime'}).'"'.','.  #        }
                            '"'.delete($ref->{'language'}).'"'.','.          $ref = undef;
                            '"'.sqltime(delete($ref->{'creationdate'})).'"'.','.  
                            '"'.sqltime(delete($ref->{'lastrevisiondate'})).'"'.','.  
                            '"'.delete($ref->{'owner'}).'"'.','.  
                            '"'.delete($ref->{'copyright'}).'"'.')');  
         $sth->execute();  
     }      }
           
     # --------------------------------------------------- Clean up database      # --------------------------------------------------- Clean up database

Removed from v.1.33  
changed lines
  Added in v.1.34


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