--- loncom/metadata_database/searchcat.pl 2003/12/25 13:11:56 1.48 +++ 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.48 2003/12/25 13:11:56 www Exp $ +# $Id: searchcat.pl,v 1.54 2004/01/05 15:54:22 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -134,7 +134,7 @@ sub dynamicmeta { 'count' => 0, 'course' => 0, 'course_list' => '', - 'avetries' => 0, + 'avetries' => 'NULL', 'avetries_list' => '', 'stdno' => 0, 'stdno_list' => '', @@ -144,8 +144,14 @@ sub dynamicmeta { 'goto_list' => '', 'comefrom' => 0, 'comefrom_list' => '', - 'difficulty' => 0, - 'difficulty_list' => '' + 'difficulty' => 'NULL', + 'difficulty_list' => '', + 'clear' => 'NULL', + 'technical' => 'NULL', + 'correct' => 'NULL', + 'helpful' => 'NULL', + 'depth' => 'NULL', + 'comments' => '' ); my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//); my $prodir=&propath($adomain,$aauthor); @@ -182,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}); } } } @@ -235,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 @@ -276,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, ". @@ -285,13 +294,18 @@ my $dbh; "stdno INTEGER UNSIGNED, stdno_list TEXT, ". "avetries FLOAT, avetries_list TEXT, ". "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)) { @@ -326,6 +340,12 @@ my $insert_sth = $dbh->prepare "?,". # revisiondate "?,". # owner "?,". # copyright + "?,". # dependencies + "?,". # modifyinguser + "?,". # authorspace + "?,". # lowestgradelevel + "?,". # highestgradelevel + "?,". # standards "?,". # count "?,". # course "?,". # course_list @@ -340,7 +360,13 @@ my $insert_sth = $dbh->prepare "?,". # avetries "?,". # avetries_list "?,". # difficulty - "?". # difficulty_list + "?,". # difficulty_list + "?,". # clear + "?,". # technical + "?,". # correct + "?,". # helpful + "?,". # depth + "?". # comments ")" ); @@ -362,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'}, @@ -379,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'}, @@ -393,7 +430,13 @@ foreach my $user (@homeusers) { $dyn{'avetries'}, $dyn{'avetries_list'}, $dyn{'difficulty'}, - $dyn{'difficulty_list'} + $dyn{'difficulty_list'}, + $dyn{'clear'}, + $dyn{'technical'}, + $dyn{'correct'}, + $dyn{'helpful'}, + $dyn{'depth'}, + $dyn{'comments'} )) { print LOG "\nMySQL Error Insert: ".$dbh->errstr."\n"; die $dbh->errstr; @@ -512,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"; }