--- loncom/lonsql 2005/04/13 18:39:13 1.67 +++ loncom/lonsql 2006/03/27 19:51:42 1.71.2.2 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-MySQL-Server Daemon for handling database requests. # -# $Id: lonsql,v 1.67 2005/04/13 18:39:13 albertel Exp $ +# $Id: lonsql,v 1.71.2.2 2006/03/27 19:51:42 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -386,6 +386,8 @@ sub make_new_child { $run = $run+1; my $userinput = <$client>; chomp($userinput); + $userinput=~s/\:(\w+)$//; + my $searchdomain=$1; # my ($conserver,$query, $arg1,$arg2,$arg3)=split(/&/,$userinput); @@ -423,7 +425,8 @@ sub make_new_child { $result='no_such_file'; } # end of log query - } elsif ($query eq 'fetchenrollment') { + } elsif (($query eq 'fetchenrollment') || + ($query eq 'institutionalphotos')) { # retrieve institutional class lists my $dom = &unescape($arg1); my %affiliates = (); @@ -431,11 +434,22 @@ sub make_new_child { my $locresult = ''; my $querystr = &unescape($arg3); foreach (split/%%/,$querystr) { - if (/^(\w+)=([^=]+)$/) { + if (/^([^=]+)=([^=]+)$/) { @{$affiliates{$1}} = split/,/,$2; } } - $locresult = &localenroll::fetch_enrollment($dom,\%affiliates,\%replies); + if ($query eq 'fetchenrollment') { + $locresult = &localenroll::fetch_enrollment($dom,\%affiliates,\%replies); + } elsif ($query eq 'institutionalphotos') { + my $crs = &unescape($arg2); + eval { + local($SIG{__DIE__})='DEFAULT'; + $locresult = &localenroll::institutional_photos($dom,$crs,\%affiliates,\%replies,'update'); + }; + if ($@) { + $locresult = 'error'; + } + } $result = &escape($locresult.':'); if ($locresult) { $result .= &escape(join(':',map{$_.'='.$replies{$_}} keys %replies)); @@ -456,7 +470,7 @@ sub make_new_child { } } else { # Do an sql query - $result = &do_sql_query($query,$arg1,$arg2); + $result = &do_sql_query($query,$arg1,$arg2,$searchdomain); } # result does not need to be escaped because it has already been # escaped. @@ -507,8 +521,18 @@ sub process_file { } sub do_sql_query { - my ($query,$custom,$customshow) = @_; - &logthis('doing query '.$query); + my ($query,$custom,$customshow,$searchdomain) = @_; + +# +# limit to searchdomain if given and table is metadata +# + if (($searchdomain) && ($query=~/FROM metadata/)) { + $query.=' HAVING (domain="'.$searchdomain.'")'; + } +# &logthis('doing query ('.$searchdomain.')'.$query); + + + $custom = &unescape($custom); $customshow = &unescape($customshow); # 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.