--- loncom/metadata_database/searchcat.pl 2002/11/18 20:44:15 1.25 +++ loncom/metadata_database/searchcat.pl 2003/03/26 20:15:57 1.32 @@ -2,7 +2,7 @@ # The LearningOnline Network # searchcat.pl "Search Catalog" batch script # -# $Id: searchcat.pl,v 1.25 2002/11/18 20:44:15 www Exp $ +# $Id: searchcat.pl,v 1.32 2003/03/26 20:15:57 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,17 +26,43 @@ # # http://www.lon-capa.org/ # -# YEAR=2001 -# 04/14/2001, 04/16/2001 Scott Harrison -# -# YEAR=2002 -# 05/11/2002 Scott Harrison -# ### +=pod + +=head1 NAME + +B - put authoritative filesystem data into sql database. + +=head1 SYNOPSIS + +Ordinarily this script is to be called from a loncapa cron job +(CVS source location: F; typical +filesystem installation location: F). + +Here is the cron job entry. + +C<# Repopulate and refresh the metadata database used for the search catalog.> +C<10 1 * * 7 www /home/httpd/perl/searchcat.pl> + +This script only allows itself to be run as the user C. -# This script goes through a LON-CAPA resource -# directory and gathers metadata. -# The metadata is entered into a SQL database. +=head1 DESCRIPTION + +This script goes through a loncapa resource directory and gathers metadata. +The metadata is entered into a SQL database. + +This script also does general database maintenance such as reformatting +the C table if it is deprecated. + +This script evaluates dynamic metadata from the authors' +F database file in order to store it in MySQL, as +well as to compress the filesize (add up all "count"-type metadata). + +This script is playing an increasingly important role for a loncapa +library server. The proper operation of this script is critical for a smooth +and correct user experience. + +=cut use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; @@ -164,6 +190,18 @@ delete $perlvar{'lonReceipt'}; # remove # ------------------------------------- Only run if machine is a library server exit unless $perlvar{'lonRole'} eq 'library'; +# ----------------------------- Make sure this process is running from user=www + +my $wwwid=getpwnam('www'); +if ($wwwid!=$<) { + $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; + $subj="LON: $perlvar{'lonHostID'} User ID mismatch"; + system("echo 'User ID mismatch. searchcat.pl must be run as user www.' |\ + mailto $emailto -s '$subj' > /dev/null"); + exit 1; +} + + # ---------------------------------------------------------- We are in business open(LOG,'>'.$perlvar{'lonDaemons'}.'/logs/searchcat.log');