--- rat/lonambiguous.pm 2000/10/12 14:54:08 1.2 +++ rat/lonambiguous.pm 2003/01/14 18:47:50 1.8 @@ -1,11 +1,35 @@ # The LearningOnline Network with CAPA # Handler to resolve ambiguous file locations # +# $Id: lonambiguous.pm,v 1.8 2003/01/14 18:47:50 www 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/ +# # (TeX Content Handler # # 05/29/00,05/30,10/11 Gerd Kortemeyer) # -# 10/11,10/12 Gerd Kortemeyer +# 10/11,10/12,10/16 Gerd Kortemeyer package Apache::lonambiguous; @@ -14,6 +38,16 @@ use Apache::lonnet; use Apache::Constants qw(:common REDIRECT); use GDBM_File; +my %bighash; + +sub cleanup { + if (tied(%bighash)){ + &Apache::lonnet::logthis('Cleanup ambiguous: bighash'); + unless (untie(%bighash)) { + &Apache::lonnet::logthis('Failed cleanup ambiguous: bighash'); + } + } +} # ----------------------------------------------------------- Could not resolve @@ -39,27 +73,26 @@ sub handler { } # ---------------------------------------------------------- Is this selecting? - - my %bighash; - + if ($ENV{'form.selecturl'}) { my $envkey; if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', - &GDBM_READER,0640)) { + &GDBM_READER(),0640)) { foreach $envkey (keys %ENV) { if ($envkey=~/^form\.(\d+)\.(\d+)$/) { +# ---------------------------------------------------- Update symb and redirect my $mapid=$1; my $resid=$2; my $resurl=$bighash{'src_'.$mapid.'.'.$resid}; &Apache::lonnet::symblist($bighash{'map_id_'.$mapid}, $resurl => $resid); + untie(%bighash); $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$resurl); return REDIRECT; } } untie(%bighash); -# ---------------------------------------------------- Update symb and redirect } else { &getlost($r,'Could not access course structure.'); return OK; @@ -81,7 +114,7 @@ sub handler { my $syval=''; if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db', - &GDBM_READER,0640)) { + &GDBM_READER(),0640)) { $syval=$hash{$thisfn}; untie(%hash); } @@ -107,9 +140,9 @@ sub handler { # ------------------------------------------------ Would be standalone resource if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', - &GDBM_READER,0640)) { + &GDBM_READER(),0640)) { # ---------------------------------------------- Get ID(s) for current resource - my $ids=$bighash{'ids_/res/'.$thisfn}; + my $ids=$bighash{'ids_'.&Apache::lonnet::clutter($thisfn)}; if ($ids) { # ------------------------------------------------------------------- Has ID(s) my @possibilities=split(/\,/,$ids);