[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);