--- loncom/metadata_database/searchcat.pl 2003/12/25 15:20:00 1.49
+++ loncom/metadata_database/searchcat.pl 2004/01/05 15:54:22 1.54
@@ -2,7 +2,7 @@
# The LearningOnline Network
# searchcat.pl "Search Catalog" batch script
#
-# $Id: searchcat.pl,v 1.49 2003/12/25 15:20:00 www Exp $
+# $Id: searchcat.pl,v 1.54 2004/01/05 15:54:22 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -188,19 +188,19 @@ sub dynamicmeta {
if (defined($cnt{$cat})) { $cnt{$cat}++; } else { $cnt{$cat}=1; }
unless ($listitems{$cat} eq 'app') {
if (defined($sum{$cat})) {
- $sum{$cat}+=$evaldata{$esckey};
+ $sum{$cat}+=&unescape($evaldata{$esckey});
$concat{$cat}.=','.$item;
} else {
- $sum{$cat}=$evaldata{$esckey};
+ $sum{$cat}=&unescape($evaldata{$esckey});
$concat{$cat}=$item;
}
} else {
if (defined($sum{$cat})) {
if ($evaldata{$esckey}=~/\w/) {
- $sum{$cat}.='
'.$evaldata{$esckey};
+ $sum{$cat}.='
'.&unescape($evaldata{$esckey});
}
} else {
- $sum{$cat}=''.$evaldata{$esckey};
+ $sum{$cat}=''.&unescape($evaldata{$esckey});
}
}
}
@@ -241,7 +241,7 @@ sub dynamicmeta {
# --------------- Read loncapa_apache.conf and loncapa.conf and get variables
my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
my %perlvar=%{$perlvarref};
-undef $perlvarref; # remove since sensitive and not needed
+undef $perlvarref;
delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
# ------------------------------------- Only run if machine is a library server
@@ -282,7 +282,10 @@ my $dbh;
"title TEXT, author TEXT, subject TEXT, url TEXT, keywords TEXT, ".
"version TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, ".
"creationdate DATETIME, lastrevisiondate DATETIME, owner TEXT, ".
- "copyright TEXT, ".
+ "copyright TEXT, dependencies TEXT, ".
+ "modifyinguser TEXT, authorspace TEXT, ".
+ "lowestgradelevel INTEGER UNSIGNED, highestgradelevel INTEGER UNSIGNED, ".
+ "standards TEXT, ".
"count INTEGER UNSIGNED, ".
"course INTEGER UNSIGNED, course_list TEXT, ".
"goto INTEGER UNSIGNED, goto_list TEXT, ".
@@ -293,13 +296,16 @@ my $dbh;
"difficulty FLOAT, difficulty_list TEXT, ".
"clear FLOAT, technical FLOAT, correct FLOAT, helpful FLOAT, depth FLOAT, ".
"comments TEXT, ".
+# For backward compatibility, only insert new fields below
+# ...
+# For backward compatibility, end new fields above
"FULLTEXT idx_title (title), ".
"FULLTEXT idx_author (author), FULLTEXT idx_subject (subject), ".
"FULLTEXT idx_url (url), FULLTEXT idx_keywords (keywords), ".
- "FULLTEXT idx_version (version), FULLTEXT idx_notes (notes), ".
+ "FULLTEXT idx_notes (notes), ".
"FULLTEXT idx_abstract (abstract), FULLTEXT idx_mime (mime), ".
- "FULLTEXT idx_language (language), FULLTEXT idx_owner (owner), ".
- "FULLTEXT idx_copyright (copyright)) ".
+ "FULLTEXT idx_owner (owner), ".
+ "FULLTEXT idx_standards (standards))".
"TYPE=MyISAM";
# It would sure be nice to have some logging mechanism.
unless ($dbh->do($make_metadata_table)) {
@@ -334,6 +340,12 @@ my $insert_sth = $dbh->prepare
"?,". # revisiondate
"?,". # owner
"?,". # copyright
+ "?,". # dependencies
+ "?,". # modifyinguser
+ "?,". # authorspace
+ "?,". # lowestgradelevel
+ "?,". # highestgradelevel
+ "?,". # standards
"?,". # count
"?,". # course
"?,". # course_list
@@ -376,8 +388,13 @@ foreach my $user (@homeusers) {
$m2=~s/\.meta$//;
if ($ref->{'obsolete'}) { print LOG "obsolete\n"; next; }
if ($ref->{'copyright'} eq 'private') { print LOG "private\n"; next; }
- my %dyn=&dynamicmeta($m2);
- &count($m2);
+ my %dyn=();
+ if ($m2=~/\/default$/) {
+ $m2=~s/\/default$/\//;
+ } else {
+ %dyn=&dynamicmeta($m2);
+ &count($m2);
+ }
unless ($insert_sth->execute(
$ref->{'title'},
$ref->{'author'},
@@ -393,6 +410,12 @@ foreach my $user (@homeusers) {
sqltime($ref->{'lastrevisiondate'}),
$ref->{'owner'},
$ref->{'copyright'},
+ $ref->{'dependencies'},
+ $ref->{'modifyinguser'},
+ $ref->{'authorspace'},
+ $ref->{'lowestgradelevel'},
+ $ref->{'highestgradelevel'},
+ $ref->{'standards'},
$dyn{'count'},
$dyn{'course'},
$dyn{'course_list'},
@@ -532,8 +555,10 @@ sub propath {
# ---------------------------- convert 'time' format into a datetime sql format
sub sqltime {
+ my $time=&unsqltime(@_[0]);
+ unless ($time) { return 'NULL'; }
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
- localtime(&unsqltime(@_[0]));
+ localtime($time);
$mon++; $year+=1900;
return "$year-$mon-$mday $hour:$min:$sec";
}