--- loncom/interface/lonmysql.pm	2004/08/20 01:27:05	1.24
+++ loncom/interface/lonmysql.pm	2005/02/21 17:23:32	1.27
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # MySQL utility functions
 #
-# $Id: lonmysql.pm,v 1.24 2004/08/20 01:27:05 matthew Exp $
+# $Id: lonmysql.pm,v 1.27 2005/02/21 17:23:32 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -35,11 +35,18 @@ use POSIX qw(strftime mktime);
 
 my $mysqluser;
 my $mysqlpassword;
+my $mysqldatabase;
 
 sub set_mysql_user_and_password {
     # If we are running under Apache and LONCAPA, use the LON-CAPA 
     # user and password.  Otherwise...? ? ? ?
-    ($mysqluser,$mysqlpassword) = @_;
+    my ($input_mysqluser,$input_mysqlpassword,$input_mysqldatabase) = @_;
+    if (! defined($mysqldatabase)) {
+        $mysqldatabase = 'loncapa';
+    }
+    if (defined($input_mysqldatabase)) {
+        $mysqldatabase = $input_mysqldatabase;
+    }
     if (! defined($mysqluser) || ! defined($mysqlpassword)) {
         if (! eval 'require Apache::lonnet();') {
             $mysqluser = 'www';
@@ -49,6 +56,12 @@ sub set_mysql_user_and_password {
             $mysqlpassword = '';
         }
     }
+    if (defined($input_mysqluser)) {
+        $mysqluser = $input_mysqluser;
+    } 
+    if (defined($input_mysqlpassword)) {
+        $mysqlpassword = $input_mysqlpassword;
+    }
 }
 
 ######################################################################
@@ -349,7 +362,7 @@ sub connect_to_db {
     if (! defined($mysqluser) || ! defined($mysqlpassword)) {
         &set_mysql_user_and_password();
     }
-    if (! ($dbh = DBI->connect("DBI:mysql:loncapa",$mysqluser,$mysqlpassword,
+    if (! ($dbh = DBI->connect("DBI:mysql:$mysqldatabase",$mysqluser,$mysqlpassword,
                                { RaiseError=>0,PrintError=>0}))) {
         $debugstring = "Unable to connect to loncapa database.";    
         if (! defined($dbh)) {
@@ -556,7 +569,12 @@ sub update_table_info {
     #
     my @info=$sth->fetchrow_array;
     for (my $i=0;$i<= $#info ; $i++) {
-        $Tables{$tablename}->{$tabledesc[$i]}= $info[$i];
+        if ($tabledesc[$i] !~ /^(Create_|Update_|Check_)time$/) {
+            $Tables{$tablename}->{$tabledesc[$i]}= 
+                &unsqltime($info[$i]);
+        } else {
+            $Tables{$tablename}->{$tabledesc[$i]}= $info[$i];
+        }
     }
     #
     # Determine the column order
@@ -580,6 +598,29 @@ sub update_table_info {
     $debugstring = "Retrieved table info for $tablename";
     return 1;
 }
+
+###############################
+
+=pod
+
+=item &table_information()
+
+Inputs: table id
+
+Returns: hash with the table status
+
+=cut
+
+###############################
+sub table_information {
+    my $table_id=shift;
+    if (&update_table_info($table_id)) {
+	return %{$Tables{$table_id}};
+    } else {
+	return ();
+    }
+}
+
 ###############################
 
 =pod
@@ -592,7 +633,7 @@ Returns: array with column order
 
 =cut
 
-
+###############################
 sub col_order {
     my $table_id=shift;
     if (&update_table_info($table_id)) {
@@ -1154,7 +1195,22 @@ sub drop_table {
     return 1; # if we got here there was no error, so return a 'true' value
 }
 
+##########################################
+
+=pod
+
+=item fix_table_name 
 
+Fixes a table name so that it will work with MySQL.
+
+=cut
+
+##########################################
+sub fix_table_name {
+    my ($name) = @_;
+    $name =~ s/^(\d+e\d+)/_$1/;
+    return $name;
+}
 
 
 # ---------------------------- convert 'time' format into a datetime sql format