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

www lon-capa-cvs@mail.lon-capa.org
Tue, 08 Oct 2002 16:59:26 -0000


www		Tue Oct  8 12:59:26 2002 EDT

  Modified files:              
    /loncom/metadata_database	searchcat.pl 
  Log:
  Does cleanup now (still disabled)
  
  
Index: loncom/metadata_database/searchcat.pl
diff -u loncom/metadata_database/searchcat.pl:1.21 loncom/metadata_database/searchcat.pl:1.22
--- loncom/metadata_database/searchcat.pl:1.21	Tue Oct  8 11:09:36 2002
+++ loncom/metadata_database/searchcat.pl	Tue Oct  8 12:59:26 2002
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # searchcat.pl "Search Catalog" batch script
 #
-# $Id: searchcat.pl,v 1.21 2002/10/08 15:09:36 www Exp $
+# $Id: searchcat.pl,v 1.22 2002/10/08 16:59:26 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -57,6 +57,14 @@
     return $str;
 }
 
+# -------------------------------------------------------- Escape Special Chars
+
+sub escape {
+    my $str=shift;
+    $str =~ s/(\W)/"%".unpack('H2',$1)/eg;
+    return $str;
+}
+
 
 # ------------------------------------------- Code to evaluate dynamic metadata
 
@@ -76,7 +84,7 @@
     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_WRCREAT,0640)) {
        my %sum=();
        my %cnt=();
        my %listitems=('count'        => 'add',
@@ -98,32 +106,44 @@
        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{$_};
+	    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{$_};
 	          }
-	      }
-          }
-          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{$_};
-             }
-          }
+ 	       } else {
+	             $sum{$ctype}=''.$evaldata{$_};
+	       }
+	    }
+	    if ($ctype eq 'count') {
+	       delete($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';
+         $evaldata{$newkey}=$returnhash{'count'};
      }
      untie(%evaldata);
    }