[LON-CAPA-cvs] cvs: loncom /metadata_database searchcat.pl
www
lon-capa-cvs@mail.lon-capa.org
Wed, 25 Jun 2003 14:42:00 -0000
www Wed Jun 25 10:42:00 2003 EDT
Modified files:
/loncom/metadata_database searchcat.pl
Log:
Part of bug #1638: Rollback of changes to dynamic_metadata routine to version
1.32. New routine had been corrupting the data file.
Index: loncom/metadata_database/searchcat.pl
diff -u loncom/metadata_database/searchcat.pl:1.34 loncom/metadata_database/searchcat.pl:1.35
--- loncom/metadata_database/searchcat.pl:1.34 Thu Jun 19 16:24:57 2003
+++ loncom/metadata_database/searchcat.pl Wed Jun 25 10:42:00 2003
@@ -2,7 +2,7 @@
# The LearningOnline Network
# searchcat.pl "Search Catalog" batch script
#
-# $Id: searchcat.pl,v 1.34 2003/06/19 20:24:57 matthew Exp $
+# $Id: searchcat.pl,v 1.35 2003/06/25 14:42:00 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -104,75 +104,75 @@
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]+)$';
- study($regexp);
- while (my ($key,$value) = each(%evaldata)) {
- $key=&unescape($key);
- next if ($key !~ /$regexp/);
- my $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}++;
+ $cnt{$ctype}++;
} else {
- $cnt{$ctype}=1;
+ $cnt{$ctype}=1;
}
unless ($listitems{$ctype} eq 'app') {
- if (defined($sum{$ctype})) {
- $sum{$ctype}+=$value;
- } else {
- $sum{$ctype}=$value;
- }
+ if (defined($sum{$ctype})) {
+ $sum{$ctype}+=$evaldata{$_};
+ } else {
+ $sum{$ctype}=$evaldata{$_};
+ }
} else {
- if (defined($sum{$ctype})) {
- if ($value) {
- $sum{$ctype}.='<hr>'.$value;
- }
- } else {
- $sum{$ctype}=''.$value;
- }
- }
- if ($ctype ne 'count') {
- $newevaldata{$_}=$value;
- }
- }
- while (my($key,$value) = each(%cnt)) {
- if ($listitems{$key} eq 'avg') {
- $returnhash{$key}=int(($sum{$key}/$value)*100.0+0.5)/100.0;
- } elsif ($listitems{$key} eq 'cnt') {
- $returnhash{$key}=$value;
- } else {
- $returnhash{$key}=$sum{$key};
- }
- }
- if ($returnhash{'count'}) {
- my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';
- $newevaldata{$newkey}=$returnhash{'count'};
- }
- untie(%evaldata);
- untie(%newevaldata);
- }
- return %returnhash;
+ 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;
}
-
+
# ----------------- Code to enable 'find' subroutine listing of the .meta files
require "find.pl";
sub wanted {