[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);
}