--- loncom/lonsql 2004/05/20 14:15:29 1.61 +++ loncom/lonsql 2004/07/28 20:46:28 1.63 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-MySQL-Server Daemon for handling database requests. # -# $Id: lonsql,v 1.61 2004/05/20 14:15:29 matthew Exp $ +# $Id: lonsql,v 1.63 2004/07/28 20:46:28 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,6 +115,7 @@ use Fcntl; use Tie::RefHash; use DBI; use File::Find; +use localenroll; ######################################################## ######################################################## @@ -205,6 +206,40 @@ my $run =0; # running count my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); my %perlvar=%{$perlvarref}; # +# Write the /home/www/.my.cnf file +my $conf_file = '/home/www/.my.cnf'; +if (! -e $conf_file) { + if (open MYCNF, ">$conf_file") { + print MYCNF <<"ENDMYCNF"; +# Generated by LON-CAPA +# +# This file is edited automatically +# Put your configuration below the LON-CAPA configuration code +# +# BEGIN LON-CAPA Specific configuration code +[client] +user=www +password=$perlvar{'lonSqlAccess'} +# END LON-CAPA Specific configuration code +# +# Place your own configuration code below the next line +#------------------------------------------------- +ENDMYCNF + + close MYCNF; + } else { + warn "Unable to write $conf_file, continuing"; + } +} else { + # it exists. FIXME: Need to ensure we have current password in it... + # my @Original = `cat $conf_file`; + # if ($Original[0] =~ /^\# Generated by LON-CAPA/ ) { + # if (! open MYCNF, ">$conf_file") { + # } +} + + +# # Make sure that database can be accessed # my $dbh; @@ -406,6 +441,35 @@ 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)); + } + } elsif ($query eq 'prepare activity log') { + my ($cid,$domain) = map {&unescape($_);} ($arg1,$arg2); + my $command = + qq{parse_activity_log.pl -course=$cid -domain=$domain}; + system($command); + my $returnvalue = $?>>8; + if ($returnvalue) { + $result = 'error: parse_activity_log.pl returned '. + $returnvalue; + } else { + $result = 'success'; + } } else { # Do an sql query $result = &do_sql_query($query,$arg1,$arg2);