# The LearningOnline Network with CAPA
# Handler to retrieve an old version of a file
#
# $Id: lonretrieve.pm,v 1.37 2008/12/19 03:55:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# 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.
#
# 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/
#
#
###
=head1 NAME
Apache::lonretrieve - retrieves an old version of a file
=head1 SYNOPSIS
Invoked by /etc/httpd/conf/srm.conf:
'.&mt('No previous versions published.').'
'); } $r->print('' .&mt('Back to [_1]',''.$fn.'') .'
'); } # ---------------------------------- Interface for presenting specified version sub phasetwo { my ($r,$fn,$uname,$udom)=@_; if ($env{'form.version'}) { my $version=$env{'form.version'}; if ($version eq 'new') { $r->print(''.&mt('Copying file').': '); if (copy($csource,$ctarget)) { $r->print('' .&mt('ok') .''); print $logfile "Copied sucessfully.\n\n"; } else { my $error=$!; $r->print('' .&mt('Copy failed: [_1]',$error) .''); print $logfile "Copy failed: $error\n\n"; } $r->print('
' .''); } else { $r->print(''.&mt('Please pick a version to retrieve:').'
'); &phaseone($r,$fn,$uname,$udom); } } sub get_file_info { my ($fn) = @_; my ($main,$suffix) = ($fn=~/\/([^\/]+)\.(\w+)$/); my $is_meta=0; if ($suffix eq 'meta') { $is_meta = 1; ($main,$suffix) = ($main=~/(.+)\.(\w+)$/); $suffix .= '.meta'; } return ($main,$suffix,$is_meta); } # ---------------------------------------------------------------- Main Handler sub handler { my $r=shift; my $fn; # Get query string for limited number of parameters &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['filename']); if ($env{'form.filename'}) { $fn=$env{'form.filename'}; $fn=~s/^https?\:\/\/[^\/]+//; } else { $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. ' unspecified filename for retrieval', $r->filename); return HTTP_NOT_FOUND; } unless ($fn) { $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. ' trying to retrieve non-existing file', $r->filename); return HTTP_NOT_FOUND; } # ----------------------------------------------------------- Start page output my $uname; my $udom; ($uname,$udom)= &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain')); unless (($uname) && ($udom)) { $r->log_reason($uname.' at '.$udom. ' trying to publish file '.$env{'form.filename'}. ' ('.$fn.') - not authorized', $r->filename); return HTTP_NOT_ACCEPTABLE; } $fn=~s{/~($LONCAPA::username_re)}{}; &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; $r->print(&Apache::loncommon::start_page('Retrieve Published Resources')); $r->print('