--- loncom/lonsql	2011/11/07 18:13:38	1.91
+++ loncom/lonsql	2013/09/01 22:39:44	1.92
@@ -3,7 +3,7 @@
 # The LearningOnline Network
 # lonsql - LON TCP-MySQL-Server Daemon for handling database requests.
 #
-# $Id: lonsql,v 1.91 2011/11/07 18:13:38 raeburn Exp $
+# $Id: lonsql,v 1.92 2013/09/01 22:39:44 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -489,7 +489,7 @@ sub make_new_child {
                 $result = &allusers_table_update($query,$uname,$udom,\%userdata);
             } else {
                 # Do an sql query
-                $result = &do_sql_query($query,$arg1,$arg2,$searchdomain);
+                $result = &do_sql_query($query,$arg1,$arg2,$arg3,$searchdomain);
             }
             # result does not need to be escaped because it has already been
             # escaped.
@@ -651,12 +651,30 @@ sub process_file {
 }
 
 sub do_sql_query {
-    my ($query,$custom,$customshow,$searchdomain) = @_;
+    my ($query,$custom,$customshow,$domainstr,$searchdomain) = @_;
 
 #
 # limit to searchdomain if given and table is metadata
 #
-    if (($searchdomain) && ($query=~/FROM metadata/)) {
+    if ($domainstr && ($query=~/FROM metadata/)) {
+        my $havingstr;
+        $domainstr = &unescape($domainstr); 
+        if ($domainstr =~ /,/) {
+            foreach my $dom (split(/,/,$domainstr)) {
+                if ($dom =~ /^$LONCAPA::domain_re$/) {
+                    $havingstr .= 'domain="'.$dom.'" OR ';
+                }
+            }
+            $havingstr =~ s/ OR $//;
+        } else {
+            if ($domainstr =~ /^$LONCAPA::domain_re$/) {
+                $havingstr = 'domain="'.$domainstr.'"';
+            }
+        }
+        if ($havingstr) {
+            $query.=' HAVING ('.$havingstr.')';
+        }
+    } elsif (($searchdomain) && ($query=~/FROM metadata/)) {
 	$query.=' HAVING (domain="'.$searchdomain.'")';
     }
 #    &logthis('doing query ('.$searchdomain.')'.$query);