[LON-CAPA-cvs] cvs: loncom /metadata_database searchcat.pl

matthew lon-capa-cvs@mail.lon-capa.org
Thu, 19 Jun 2003 19:34:27 -0000


This is a MIME encoded message

--matthew1056051267
Content-Type: text/plain

matthew		Thu Jun 19 15:34:27 2003 EDT

  Modified files:              
    /loncom/metadata_database	searchcat.pl 
  Log:
  Indentation fix only.  No real code changes.  Move along.......
  
  
--matthew1056051267
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20030619153427.txt"

Index: loncom/metadata_database/searchcat.pl
diff -u loncom/metadata_database/searchcat.pl:1.32 loncom/metadata_database/searchcat.pl:1.33
--- loncom/metadata_database/searchcat.pl:1.32	Wed Mar 26 15:15:57 2003
+++ loncom/metadata_database/searchcat.pl	Thu Jun 19 15:34:27 2003
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # searchcat.pl "Search Catalog" batch script
 #
-# $Id: searchcat.pl,v 1.32 2003/03/26 20:15:57 www Exp $
+# $Id: searchcat.pl,v 1.33 2003/06/19 19:34:27 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -27,6 +27,7 @@
 # http://www.lon-capa.org/
 #
 ###
+
 =pod
 
 =head1 NAME
@@ -103,82 +104,82 @@
     my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);
     my $prodir=&propath($adomain,$aauthor);
     if ((tie(%evaldata,'GDBM_File',
-            $prodir.'/nohist_resevaldata.db',&GDBM_READER(),0640)) &&
+             $prodir.'/nohist_resevaldata.db',&GDBM_READER(),0640)) &&
         (tie(%newevaldata,'GDBM_File',
-            $prodir.'/nohist_new_resevaldata.db',&GDBM_WRCREAT(),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/) {
-	    my $ctype=$1;
-            if (defined($cnt{$ctype})) { 
-               $cnt{$ctype}++; 
-            } else { 
-               $cnt{$ctype}=1; 
+             $prodir.'/nohist_new_resevaldata.db',&GDBM_WRCREAT(),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/) {
+                my $ctype=$1;
+                if (defined($cnt{$ctype})) { 
+                    $cnt{$ctype}++; 
+                } else { 
+                    $cnt{$ctype}=1; 
+                }
+                unless ($listitems{$ctype} eq 'app') {
+                    if (defined($sum{$ctype})) {
+                        $sum{$ctype}+=$evaldata{$_};
+                    } else {
+                        $sum{$ctype}=$evaldata{$_};
+                    }
+                } else {
+                    if (defined($sum{$ctype})) {
+                        if ($evaldata{$_}) {
+                            $sum{$ctype}.='<hr>'.$evaldata{$_};
+                        }
+                    } else {
+                        $sum{$ctype}=''.$evaldata{$_};
+                    }
+                }
+                if ($ctype ne 'count') {
+                    $newevaldata{$_}=$evaldata{$_};
+                }
             }
-            unless ($listitems{$ctype} eq 'app') {
-               if (defined($sum{$ctype})) {
-                  $sum{$ctype}+=$evaldata{$_};
-   	       } else {
-                  $sum{$ctype}=$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 {
-               if (defined($sum{$ctype})) {
-                  if ($evaldata{$_}) {
-                     $sum{$ctype}.='<hr>'.$evaldata{$_};
-	          }
- 	       } else {
-	             $sum{$ctype}=''.$evaldata{$_};
-	       }
-	    }
-	    if ($ctype ne 'count') {
-	       $newevaldata{$_}=$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{$_};
-         }
-     }
-     if ($returnhash{'count'}) {
-         my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';
-         $newevaldata{$newkey}=$returnhash{'count'};
-     }
-     untie(%evaldata);
-     untie(%newevaldata);
-   }
-   return %returnhash;
+                $returnhash{$_}=$sum{$_};
+            }
+        }
+        if ($returnhash{'count'}) {
+            my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';
+            $newevaldata{$newkey}=$returnhash{'count'};
+        }
+        untie(%evaldata);
+        untie(%newevaldata);
+    }
+    return %returnhash;
 }
-  
+
 # ----------------- Code to enable 'find' subroutine listing of the .meta files
 require "find.pl";
 sub wanted {
     (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-    -f _ &&
-    /^.*\.meta$/ && !/^.+\.\d+\.[^\.]+\.meta$/ &&
-    push(@metalist,"$dir/$_");
+        -f _ &&
+        /^.*\.meta$/ && !/^.+\.\d+\.[^\.]+\.meta$/ &&
+        push(@metalist,"$dir/$_");
 }
 
 # ---------------  Read loncapa_apache.conf and loncapa.conf and get variables
@@ -194,11 +195,11 @@
 
 my $wwwid=getpwnam('www');
 if ($wwwid!=$<) {
-   $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
-   $subj="LON: $perlvar{'lonHostID'} User ID mismatch";
-   system("echo 'User ID mismatch. searchcat.pl must be run as user www.' |\
+    $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
+    $subj="LON: $perlvar{'lonHostID'} User ID mismatch";
+    system("echo 'User ID mismatch. searchcat.pl must be run as user www.' |\
  mailto $emailto -s '$subj' > /dev/null");
-   exit 1;
+    exit 1;
 }
 
 
@@ -232,69 +233,70 @@
 
 # ------------------------------------------------------------- get .meta files
 opendir(RESOURCES,"$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}");
-my @homeusers=grep
-          {&ishome("$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}/$_")}
-          grep {!/^\.\.?$/} readdir(RESOURCES);
+my @homeusers = grep {
+    &ishome("$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}/$_")
+    } grep {!/^\.\.?$/} readdir(RESOURCES);
 closedir RESOURCES;
 foreach my $user (@homeusers) {
     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
     my $prodir=&propath($perlvar{'lonDefDomain'},$user);
     unlink($prodir.'/nohist_new_resevaldata.db');
-# Use find.pl
+    # Use find.pl
     undef @metalist;
     @metalist=();
     &find("$perlvar{'lonDocRoot'}/res/$perlvar{'lonDefDomain'}/$user");
-
-# -- process each file to get metadata and put into search catalog SQL database
-# Also, check to see if already there.
-# I could just delete (without searching first), but this works for now.
-foreach my $m (@metalist) {
-    print LOG "- ".$m."\n";
-    my $ref=&metadata($m);
-    my $m2='/res/'.&declutter($m);
-    $m2=~s/\.meta$//;
-    &dynamicmeta($m2);
-    my $q2="select * from metadata where url like binary '$m2'";
-    my $sth = $dbh->prepare($q2);
-    $sth->execute();
-    my $r1=$sth->fetchall_arrayref;
-    if (@$r1) {
-	$sth=$dbh->prepare("delete from metadata where url like binary '$m2'");
+    # -- process each file to get metadata and put into search catalog SQL
+    # database.  Also, check to see if already there.
+    # I could just delete (without searching first), but this works for now.
+    foreach my $m (@metalist) {
+        print LOG "- ".$m."\n";
+        my $ref=&metadata($m);
+        my $m2='/res/'.&declutter($m);
+        $m2=~s/\.meta$//;
+        &dynamicmeta($m2);
+        my $q2="select * from metadata where url like binary '$m2'";
+        my $sth = $dbh->prepare($q2);
+        $sth->execute();
+        my $r1=$sth->fetchall_arrayref;
+        if (@$r1) {
+            $sth=$dbh->prepare("delete from metadata where url like binary '$m2'");
+            $sth->execute();
+        }
+        $sth=$dbh->prepare('insert into metadata values ('.
+                           '"'.delete($ref->{'title'}).'"'.','.
+                           '"'.delete($ref->{'author'}).'"'.','.
+                           '"'.delete($ref->{'subject'}).'"'.','.
+                           '"'.$m2.'"'.','.
+                           '"'.delete($ref->{'keywords'}).'"'.','.
+                           '"'.'current'.'"'.','.
+                           '"'.delete($ref->{'notes'}).'"'.','.
+                           '"'.delete($ref->{'abstract'}).'"'.','.
+                           '"'.delete($ref->{'mime'}).'"'.','.
+                           '"'.delete($ref->{'language'}).'"'.','.
+                           '"'.sqltime(delete($ref->{'creationdate'})).'"'.','.
+                           '"'.sqltime(delete($ref->{'lastrevisiondate'})).'"'.','.
+                           '"'.delete($ref->{'owner'}).'"'.','.
+                           '"'.delete($ref->{'copyright'}).'"'.')');
         $sth->execute();
     }
-    $sth=$dbh->prepare('insert into metadata values ('.
-			  '"'.delete($ref->{'title'}).'"'.','.
-			  '"'.delete($ref->{'author'}).'"'.','.
-			  '"'.delete($ref->{'subject'}).'"'.','.
-			  '"'.$m2.'"'.','.
-			  '"'.delete($ref->{'keywords'}).'"'.','.
-			  '"'.'current'.'"'.','.
-			  '"'.delete($ref->{'notes'}).'"'.','.
-			  '"'.delete($ref->{'abstract'}).'"'.','.
-			  '"'.delete($ref->{'mime'}).'"'.','.
-			  '"'.delete($ref->{'language'}).'"'.','.
-			  '"'.sqltime(delete($ref->{'creationdate'})).'"'.','.
-			  '"'.sqltime(delete($ref->{'lastrevisiondate'})).'"'.','.
-			  '"'.delete($ref->{'owner'}).'"'.','.
-			  '"'.delete($ref->{'copyright'}).'"'.')');
-    $sth->execute();
-}
-
-# ----------------------------------------------------------- Clean up database
-# Need to, perhaps, remove stale SQL database records.
-# ... not yet implemented
-
-
-# -------------------------------------------------- Copy over the new db-files
+    
+    # --------------------------------------------------- Clean up database
+    # Need to, perhaps, remove stale SQL database records.
+    # ... not yet implemented
+        
+    # ------------------------------------------- Copy over the new db-files
     system('mv '.$prodir.'/nohist_new_resevaldata.db '.
-	         $prodir.'/nohist_resevaldata.db');
+           $prodir.'/nohist_resevaldata.db');
 }
 # --------------------------------------------------- Close database connection
 $dbh->disconnect;
 print LOG "\n==== Searchcat completed ".localtime()." ====\n";
 close(LOG);
 exit 0;
+
+
+
 # =============================================================================
 
 # ---------------------------------------------------------------- Get metadata
@@ -312,30 +314,30 @@
         my $parser=HTML::TokeParser->new(\$metastring);
         my $token;
         while ($token=$parser->get_token) {
-           if ($token->[0] eq 'S') {
-	      my $entry=$token->[1];
-              my $unikey=$entry;
-              if (defined($token->[2]->{'part'})) { 
-                 $unikey.='_'.$token->[2]->{'part'}; 
-	      }
-              if (defined($token->[2]->{'name'})) { 
-                 $unikey.='_'.$token->[2]->{'name'}; 
-	      }
-              if ($metacache{$uri.'keys'}) {
-                 $metacache{$uri.'keys'}.=','.$unikey;
-              } else {
-                 $metacache{$uri.'keys'}=$unikey;
-	      }
-              map {
-		  $metacache{$uri.''.$unikey.'.'.$_}=$token->[2]->{$_};
-              } @{$token->[3]};
-              unless (
-                 $metacache{$uri.''.$unikey}=$parser->get_text('/'.$entry)
-		      ) { $metacache{$uri.''.$unikey}=
-			      $metacache{$uri.''.$unikey.'.default'};
-		      }
-          }
-       }
+            if ($token->[0] eq 'S') {
+                my $entry=$token->[1];
+                my $unikey=$entry;
+                if (defined($token->[2]->{'part'})) { 
+                    $unikey.='_'.$token->[2]->{'part'}; 
+                }
+                if (defined($token->[2]->{'name'})) { 
+                    $unikey.='_'.$token->[2]->{'name'}; 
+                }
+                if ($metacache{$uri.'keys'}) {
+                    $metacache{$uri.'keys'}.=','.$unikey;
+                } else {
+                    $metacache{$uri.'keys'}=$unikey;
+                }
+                map {
+                    $metacache{$uri.''.$unikey.'.'.$_}=$token->[2]->{$_};
+                } @{$token->[3]};
+                unless (
+                        $metacache{$uri.''.$unikey}=$parser->get_text('/'.$entry)
+                        ) { $metacache{$uri.''.$unikey}=
+                                $metacache{$uri.''.$unikey.'.default'};
+                        }
+            }
+        }
     }
     return \%metacache;
 }
@@ -343,12 +345,12 @@
 # ------------------------------------------------------------ Serves up a file
 # returns either the contents of the file or a -1
 sub getfile {
-  my $file=shift;
-  if (! -e $file ) { return -1; };
-  my $fh=IO::File->new($file);
-  my $a='';
-  while (<$fh>) { $a .=$_; }
-  return $a
+    my $file=shift;
+    if (! -e $file ) { return -1; };
+    my $fh=IO::File->new($file);
+    my $a='';
+    while (<$fh>) { $a .=$_; }
+    return $a;
 }
 
 # ------------------------------------------------------------- Declutters URLs
@@ -396,9 +398,9 @@
 
 sub maketime {
     my %th=@_;
-    return POSIX::mktime(
-        ($th{'seconds'},$th{'minutes'},$th{'hours'},
-         $th{'day'},$th{'month'}-1,$th{'year'}-1900,0,0,$th{'dlsav'}));
+    return POSIX::mktime(($th{'seconds'},$th{'minutes'},$th{'hours'},
+                          $th{'day'},$th{'month'}-1,
+                          $th{'year'}-1900,0,0,$th{'dlsav'}));
 }
 
 
@@ -409,9 +411,8 @@
 sub unsqltime {
     my $timestamp=shift;
     if ($timestamp=~/^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/) {
-       $timestamp=&maketime(
-	   'year'=>$1,'month'=>$2,'day'=>$3,
-           'hours'=>$4,'minutes'=>$5,'seconds'=>$6);
+        $timestamp=&maketime('year'=>$1,'month'=>$2,'day'=>$3,
+                             'hours'=>$4,'minutes'=>$5,'seconds'=>$6);
     }
     return $timestamp;
 }

--matthew1056051267--