[LON-CAPA-cvs] cvs: loncom / lonsql
www
lon-capa-cvs@mail.lon-capa.org
Mon, 17 Jun 2002 20:25:51 -0000
www Mon Jun 17 16:25:51 2002 EDT
Modified files:
/loncom lonsql
Log:
New routines for userlog and courselog queries.
BUGFIX: $result had the wrong scope.
Index: loncom/lonsql
diff -u loncom/lonsql:1.44 loncom/lonsql:1.45
--- loncom/lonsql:1.44 Mon Jun 17 10:00:09 2002
+++ loncom/lonsql Mon Jun 17 16:25:51 2002
@@ -3,7 +3,7 @@
# The LearningOnline Network
# lonsql - LON TCP-MySQL-Server Daemon for handling database requests.
#
-# $Id: lonsql,v 1.44 2002/06/17 14:00:09 www Exp $
+# $Id: lonsql,v 1.45 2002/06/17 20:25:51 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -189,6 +189,36 @@
my $local=localtime($now);
print $fh "$local ($$): $message\n";
}
+
+
+
+# -------------------------------------------- Return path to profile directory
+
+sub propath {
+ my ($udom,$uname)=@_;
+ $udom=~s/\W//g;
+ $uname=~s/\W//g;
+ my $subdir=$uname.'__';
+ $subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/;
+ my $proname="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname";
+ return $proname;
+}
+
+# ------------------------------------------------------------------ Course log
+
+sub courselog {
+ my ($path,$command)=@_;
+ return 'not_yet_implemented';
+}
+
+# -------------------------------------------------------------------- User log
+
+sub userlog {
+ my ($path,$command)=@_;
+ return 'not_yet_implemented';
+}
+
+
# ---------------------------------------------------- Fork once and dissociate
$fpid=fork;
exit if $fpid;
@@ -276,11 +306,9 @@
my $userinput = <$client>;
chomp($userinput);
- my ($conserver,$querytmp,
- $customtmp,$customshowtmp)=split(/&/,$userinput);
- my $query=unescape($querytmp);
- my $custom=unescape($customtmp);
- my $customshow=unescape($customshowtmp);
+ my ($conserver,$query,
+ $arg1,$arg2,$arg3)=split(/&/,$userinput);
+ my $query=unescape($query);
#send query id which is pid_unixdatetime_runningcounter
$queryid = $thisserver;
@@ -292,14 +320,39 @@
&logthis("QUERY: $query");
sleep 1;
+ my $result='';
+
# ---------- At this point, query is received, query-ID assigned and sent back
# $query eq 'logquery' will mean that this is a query against log-files
- unless ($query eq 'logquery') {
+
+ if (($query eq 'userlog') || ($query eq 'courselog')) {
+# ----------------------------------------------------- beginning of log query
+#
+# this goes against a user's log file
+#
+ my $udom=&unescape($arg1);
+ my $uname=&unescape($arg2);
+ my $command=&unescape($arg3);
+ my $path=&propath($udom,$uname);
+ if (-e "$path/activity.log") {
+ if ($query eq 'userlog') {
+ $result=&userlog($path,$command);
+ } else {
+ $result=&courselog($path,$command);
+ }
+ } else {
+ &logthis('Unable to do log query: '.$uname.'@'.$udom);
+ $result='no_such_file';
+ }
+# ------------------------------------------------------------ end of log query
+ } else {
# -------------------------------------------------------- This is an sql query
+ my $custom=unescape($arg1);
+ my $customshow=unescape($arg2);
#prepare and execute the query
my $sth = $dbh->prepare($query);
- my $result;
+
my @files;
my $subsetflag=0;
if ($query) {
@@ -377,15 +430,9 @@
$result.=$customresult;
}
# ------------------------------------------------------------ end of sql query
- } else {
-# ------------------------------------------------------ beginning of log query
-#
-# do log queries here
-#
- $result='not_yet_implemented';
-# ------------------------------------------------------------ end of log query
- }
+ }
# reply with result, append \n unless already there
+
$result.="\n" unless ($result=~/\n$/);
&reply("queryreply:$queryid:$result",$conserver);