--- loncom/lonsql 2001/03/22 15:21:54 1.7 +++ loncom/lonsql 2001/03/27 02:09:50 1.18 @@ -13,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 @@ -224,11 +234,40 @@ sub make_new_child { else { my $r1=$sth->fetchall_arrayref; my @r2; map {my $a=$_; my @b=map {escape($_)} @$a; push @r2,join(",", @b)} (@$r1); - $result=join("&",@r2) . "\n"; + $result=join("&",@r2); } # 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) { + foreach my $f ('abstract','author','copyright', + 'creationdate','keywords','language', + 'lastrevisiondate','mime','notes', + 'owner','subject','title') { + $stuff=~s/\<$f[^\>]*\>.*?<\/$f[^\>]*\>//; + } + &logthis("found: $stuff"); + $customresult.='&custom='.escape($stuff); + } + } + $result.=$customresult; + } + # reply with result + $result.="\n" if $result; &reply("queryreply:$queryid:$result",$conserver); }