--- 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"; }