--- loncom/lonsql 2001/03/14 14:19:44 1.5 +++ loncom/lonsql 2001/03/26 20:31:25 1.15 @@ -1,7 +1,8 @@ #!/usr/bin/perl # lonsql-based on the preforker:harsha jagasia:date:5/10/00 # 7/25 Gerd Kortemeyer - +# many different dates Scott Harrison +# 03/22/2001 Scott Harrison use IO::Socket; use Symbol; use POSIX; @@ -12,6 +13,16 @@ use Fcntl; use Tie::RefHash; use DBI; +my @metalist; +# ----------------- Code to enable 'find' subroutine listing of the .meta files +require "find.pl"; +sub wanted { + (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && + -f _ && + /^.*\.meta$/ && + push(@metalist,"$dir/$_"); +} + $childmaxattempts=10; $run =0;#running counter to generate the query-id @@ -201,8 +212,9 @@ sub make_new_child { my $userinput = <$client>; chomp($userinput); - my ($conserver,$querytmp)=split(/&/,$userinput); + my ($conserver,$querytmp,$customtmp)=split(/&/,$userinput); my $query=unescape($querytmp); + my $custom=unescape($customtmp); #send query id which is pid_unixdatetime_runningcounter $queryid = $thisserver; @@ -224,7 +236,33 @@ sub make_new_child { my @r2; map {my $a=$_; my @b=map {escape($_)} @$a; push @r2,join(",", @b)} (@$r1); $result=join("&",@r2) . "\n"; } - &reply("queryreply:$queryid:$result",$conserver); + + # do custom metadata searching here and build into result + if ($custom) { + &logthis("am going to do custom query for $custom"); + @metalist=(); pop @metalist; + &find("$perlvar{'lonDocRoot'}/res"); + &logthis("FILELIST:" . join(":::",@metalist)); + # if file is indicated in sql database and + # not part of sql-relevant query, do not pattern match. + # if file is not in sql database, output error. + # if file is indicated in sql database and is + # part of query result list, then do the pattern match. + my $customresult=''; + foreach my $m (@metalist) { + my $fh=IO::File->new($m); + my @lines=<$fh>; + my $stuff=join('',@lines); + if ($stuff=~/$custom/s) { + &logthis("found: $stuff"); + } + $customresult.='&custom='.escape($stuff); + } +# $result.=$customresult; + } + # reply with result + $result.="ABCABC"; + &reply("queryreply:$queryid:${result}DEF",$conserver); }