--- loncom/metadata_database/searchcat.pl 2003/06/25 14:42:00 1.35 +++ loncom/metadata_database/searchcat.pl 2003/10/08 19:38:41 1.43 @@ -2,7 +2,7 @@ # The LearningOnline Network # searchcat.pl "Search Catalog" batch script # -# $Id: searchcat.pl,v 1.35 2003/06/25 14:42:00 www Exp $ +# $Id: searchcat.pl,v 1.43 2003/10/08 19:38:41 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -76,7 +76,34 @@ use POSIX qw(strftime mktime); my @metalist; +$simplestatus=''; +my %countext=(); +sub writesimple { + open(SMP,'>/home/httpd/html/lon-status/mysql.txt'); + print SMP $simplestatus."\n"; + close(SMP); +} + +sub writecount { + open(RSMP,'>/home/httpd/html/lon-status/rescount.txt'); + foreach (keys %countext) { + print RSMP $_.'='.$countext{$_}.'&'; + } + print RSMP 'time='.time."\n"; + close(RSMP); +} + +sub count { + my $file=shift; + $file=~/\.(\w+)$/; + my $ext=lc($1); + if (defined($countext{$ext})) { + $countext{$ext}++; + } else { + $countext{$ext}=1; + } +} # ----------------------------------------------------- Un-Escape Special Chars sub unescape { @@ -111,6 +138,8 @@ sub dynamicmeta { my %cnt=(); my %listitems=('count' => 'add', 'course' => 'add', + 'goto' => 'add', + 'comefrom' => 'add', 'avetries' => 'avg', 'stdno' => 'add', 'difficulty' => 'avg', @@ -125,8 +154,8 @@ sub dynamicmeta { my $regexp=$url; $regexp=~s/(\W)/\\$1/g; $regexp='___'.$regexp.'___([a-z]+)$'; - foreach (keys %evaldata) { - my $key=&unescape($_); + while (my ($esckey,$value)=each %evaldata) { + $key=&unescape($esckey); if ($key=~/$regexp/) { my $ctype=$1; if (defined($cnt{$ctype})) { @@ -136,21 +165,21 @@ sub dynamicmeta { } unless ($listitems{$ctype} eq 'app') { if (defined($sum{$ctype})) { - $sum{$ctype}+=$evaldata{$_}; + $sum{$ctype}+=$value; } else { - $sum{$ctype}=$evaldata{$_}; + $sum{$ctype}=$value; } } else { if (defined($sum{$ctype})) { - if ($evaldata{$_}) { - $sum{$ctype}.='
'.$evaldata{$_}; + if ($value) { + $sum{$ctype}.='
'.$value; } } else { - $sum{$ctype}=''.$evaldata{$_}; + $sum{$ctype}=''.$value; } } if ($ctype ne 'count') { - $newevaldata{$_}=$evaldata{$_}; + $newevaldata{$esckey}=$value; } } } @@ -207,6 +236,7 @@ if ($wwwid!=$<) { open(LOG,'>'.$perlvar{'lonDaemons'}.'/logs/searchcat.log'); print LOG '==== Searchcat Run '.localtime()."====\n\n"; +$simplestatus='time='.time.'&'; my $dbh; # ------------------------------------- Make sure that database can be accessed { @@ -214,8 +244,11 @@ my $dbh; $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0}) ) { print LOG "Cannot connect to database!\n"; + $simplestatus.='mysql=defunct'; + &writesimple(); exit; } + my $make_metadata_table = "CREATE TABLE IF NOT EXISTS metadata (". "title TEXT, author TEXT, subject TEXT, url TEXT, keywords TEXT, ". "version TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, ". @@ -279,6 +312,9 @@ foreach my $user (@homeusers) { my $m2='/res/'.&declutter($m); $m2=~s/\.meta$//; &dynamicmeta($m2); + if ($ref->{'obsolete'}) { print LOG "obsolete\n"; next; } + if ($ref->{'copyright'} eq 'private') { print LOG "private\n"; next; } + &count($m2); $delete_sth->execute($m2); $insert_sth->execute($ref->{'title'}, $ref->{'author'}, @@ -305,13 +341,18 @@ foreach my $user (@homeusers) { # ... not yet implemented # ------------------------------------------- Copy over the new db-files - system('mv '.$prodir.'/nohist_new_resevaldata.db '. - $prodir.'/nohist_resevaldata.db'); + # + + system('mv '.$prodir.'/nohist_new_resevaldata.db '. + $prodir.'/nohist_resevaldata.db'); + } # --------------------------------------------------- Close database connection $dbh->disconnect; print LOG "\n==== Searchcat completed ".localtime()." ====\n"; close(LOG); +&writesimple(); +&writecount(); exit 0;