--- loncom/cgi/metadata_harvest.pl 2003/02/03 18:03:52 1.2 +++ loncom/cgi/metadata_harvest.pl 2008/12/25 01:56:03 1.5 @@ -1,14 +1,31 @@ #!/usr/bin/perl +# Inserts metadata from .meta files into the mysql database +# $Id: metadata_harvest.pl,v 1.5 2008/12/25 01:56:03 raeburn Exp $ # -# The LearningOnline Network with CAPA +# Copyright Michigan State University Board of Trustees # -# Gets keywords from metadata database. +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). # -# YEAR=2001 +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. # -# YEAR=2002 +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ # + ############################################################################### ## ## ## ORGANIZATION OF THIS PERL CGI SCRIPT ## @@ -44,53 +61,76 @@ # ------------------------------------------------- Modules used by this script -use lib '/home/httpd/lib/perl/'; -use LONCAPA::Configuration; - +$|=1; use strict; use DBI; +use lib '/home/httpd/lib/perl/'; +use Apache::lonlocal; +use LONCAPA::Configuration; +use LONCAPA::loncgi; +use LONCAPA::lonauthcgi; # ---------------------------- Print MIME Content-type and other initialization -$|=1; print 'Content-type: text/plain'."\n\n"; +&main(); + +sub main { + if (!&LONCAPA::lonauthcgi::check_ipbased_access('metadata_harvest')) { + if (!&LONCAPA::loncgi::check_cookie_and_load_env()) { + &Apache::lonlocal::get_language_handle(); + print(&LONCAPA::loncgi::missing_cookie_msg()); + return; + } + + if (!&LONCAPA::lonauthcgi::can_view('metadata_harvest')) { + &Apache::lonlocal::get_language_handle(); + print(&LONCAPA::lonauthcgi::unauthorized_msg('metadata_harvest')); + return; + } + } + + &Apache::lonlocal::get_language_handle(); + # --- Make sure that database can be accessed and that this is a library server # library server test # By default, loncapa_apache.conf is also read by the read_conf subroutine. -my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); -my %perlvar=%{$perlvarref}; -undef($perlvarref); - -unless ($perlvar{'lonRole'} eq 'library') { - print "This can only be run on a library server!\n"; - exit; -} + my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); + my %perlvar=%{$perlvarref}; + undef($perlvarref); + + unless ($perlvar{'lonRole'} eq 'library') { + print(&Apache::lonlocal::mt('This can only be run on a library server!')."\n"); + return; + } # database test -my $dbh; -{ - unless ( - $dbh = DBI->connect("DBI:mysql:loncapa","www", - $perlvar{'lonSqlAccess'}, - { RaiseError =>0,PrintError=>0}) - ) { - print "Cannot connect to database!\n"; - exit; + my $dbh; + { + unless ( + $dbh = DBI->connect("DBI:mysql:loncapa","www", + $perlvar{'lonSqlAccess'}, + { RaiseError =>0,PrintError=>0}) + ) { + print "Cannot connect to database!\n"; + return; + } } -} -%perlvar=(); # undefine it + %perlvar=(); # undefine it # ------------------------ Loop through database records and print out keywords -my $sth=$dbh->prepare("select * from metadata"); -$sth->execute(); -my @row; -while (@row=$sth->fetchrow_array) { - for (my $i=0;$i<=$#row;$i++) { - $row[$i]=~s/\n/ /g; - $row[$i]=~s/\|/ /g; + my $sth=$dbh->prepare("select * from metadata"); + $sth->execute(); + my @row; + while (@row=$sth->fetchrow_array) { + for (my $i=0;$i<=$#row;$i++) { + $row[$i]=~s/\n/ /g; + $row[$i]=~s/\|/ /g; + } + print join('|',@row)."\n"; } - print join('|',@row)."\n"; -} # --------------------------------------------------- Close database connection -$dbh->disconnect(); + $dbh->disconnect(); + return; +}