--- loncom/lonsql 2004/05/11 20:03:05 1.59 +++ loncom/lonsql 2004/06/08 22:09:44 1.62 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-MySQL-Server Daemon for handling database requests. # -# $Id: lonsql,v 1.59 2004/05/11 20:03:05 albertel Exp $ +# $Id: lonsql,v 1.62 2004/06/08 22:09:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,6 +115,7 @@ use Fcntl; use Tie::RefHash; use DBI; use File::Find; +use localenroll; ######################################################## ######################################################## @@ -381,7 +382,7 @@ sub make_new_child { $queryid .= $run; print $client "$queryid\n"; # - &logthis("QUERY: $query - $arg1 - $arg2 - $arg3"); + # &logthis("QUERY: $query - $arg1 - $arg2 - $arg3"); sleep 1; # my $result=''; @@ -406,6 +407,23 @@ sub make_new_child { $result='no_such_file'; } # end of log query + } elsif ($query eq 'fetchenrollment') { + # retrieve institutional class lists + my $dom = &unescape($arg1); + my %affiliates = (); + my %replies = (); + my $locresult = ''; + my $querystr = &unescape($arg3); + foreach (split/%%/,$querystr) { + if (/^(\w+)=([^=]+)$/) { + @{$affiliates{$1}} = split/,/,$2; + } + } + $locresult = &localenroll::fetch_enrollment($dom,\%affiliates,\%replies); + $result = &escape($locresult.':'); + if ($locresult) { + $result .= &escape(join(':',map{$_.'='.$replies{$_}} keys %replies)); + } } else { # Do an sql query $result = &do_sql_query($query,$arg1,$arg2); @@ -413,8 +431,6 @@ sub make_new_child { # result does not need to be escaped because it has already been # escaped. #$result=&escape($result); - # reply with result, append \n unless already there - $result.="\n" unless ($result=~/\n$/); &reply("queryreply:$queryid:$result",$conserver); } # tidy up gracefully and finish