[LON-CAPA-cvs] cvs: loncom /interface lonsearchcat.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 02 Feb 2005 21:08:24 -0000
albertel Wed Feb 2 16:08:24 2005 EDT
Modified files:
/loncom/interface lonsearchcat.pm
Log:
- setect aborted connections
- searching could go into an infinte loop
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.235 loncom/interface/lonsearchcat.pm:1.236
--- loncom/interface/lonsearchcat.pm:1.235 Fri Dec 17 16:44:19 2004
+++ loncom/interface/lonsearchcat.pm Wed Feb 2 16:08:23 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.235 2004/12/17 21:44:19 albertel Exp $
+# $Id: lonsearchcat.pm,v 1.236 2005/02/02 21:08:23 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -445,6 +445,7 @@
{ # Scope the course search to avoid global variables
#
# Variables For course search
+my %alreadyseen;
my %hash;
my $totalfound;
@@ -463,6 +464,7 @@
my $pretty_search_string = '<b>'.$ENV{'form.courseexp'}.'</b>';
my $search_string = $ENV{'form.courseexp'};
my @New_Words;
+ undef(%alreadyseen);
if ($ENV{'form.crsrelated'}) {
($search_string,@New_Words) = &related_version($ENV{'form.courseexp'});
if (@New_Words) {
@@ -581,6 +583,8 @@
sub checkonthis {
my ($r,$id,$url,$level,$title,$fulltext,$symb,@allwords)=@_;
+ $alreadyseen{$id}=1;
+ if (&Apache::loncommon::connection_aborted($r)) { return; }
$r->rflush();
my $result=$title.' ';
@@ -621,7 +625,7 @@
# Check also the dependencies of this one
my $dependencies=
&Apache::lonnet::metadata($url,'dependencies');
- foreach (split(/\,/,$dependencies)) {
+ foreach (split(/\,/,$dependencies) && (!$alreadyseen{$id})) {
if (($_=~/^\/res\//)) {
&checkonthis($r,$id,$_,$level+1,'',$fulltext,undef,@allwords);
}