version 1.23, 2004/07/26 19:36:21
|
version 1.28, 2005/02/21 18:08:19
|
Line 35 use POSIX qw(strftime mktime);
|
Line 35 use POSIX qw(strftime mktime);
|
|
|
my $mysqluser; |
my $mysqluser; |
my $mysqlpassword; |
my $mysqlpassword; |
|
my $mysqldatabase; |
|
|
sub set_mysql_user_and_password { |
sub set_mysql_user_and_password { |
# If we are running under Apache and LONCAPA, use the LON-CAPA |
# If we are running under Apache and LONCAPA, use the LON-CAPA |
# user and password. Otherwise...? ? ? ? |
# 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 (! defined($mysqluser) || ! defined($mysqlpassword)) { |
if (! eval 'require Apache::lonnet();') { |
if (! eval 'require Apache::lonnet();') { |
$mysqluser = 'www'; |
$mysqluser = 'www'; |
Line 49 sub set_mysql_user_and_password {
|
Line 56 sub set_mysql_user_and_password {
|
$mysqlpassword = ''; |
$mysqlpassword = ''; |
} |
} |
} |
} |
|
if (defined($input_mysqluser)) { |
|
$mysqluser = $input_mysqluser; |
|
} |
|
if (defined($input_mysqlpassword)) { |
|
$mysqlpassword = $input_mysqlpassword; |
|
} |
} |
} |
|
|
###################################################################### |
###################################################################### |
Line 349 sub connect_to_db {
|
Line 362 sub connect_to_db {
|
if (! defined($mysqluser) || ! defined($mysqlpassword)) { |
if (! defined($mysqluser) || ! defined($mysqlpassword)) { |
&set_mysql_user_and_password(); |
&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}))) { |
{ RaiseError=>0,PrintError=>0}))) { |
$debugstring = "Unable to connect to loncapa database."; |
$debugstring = "Unable to connect to loncapa database."; |
if (! defined($dbh)) { |
if (! defined($dbh)) { |
Line 556 sub update_table_info {
|
Line 569 sub update_table_info {
|
# |
# |
my @info=$sth->fetchrow_array; |
my @info=$sth->fetchrow_array; |
for (my $i=0;$i<= $#info ; $i++) { |
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 |
# Determine the column order |
Line 580 sub update_table_info {
|
Line 598 sub update_table_info {
|
$debugstring = "Retrieved table info for $tablename"; |
$debugstring = "Retrieved table info for $tablename"; |
return 1; |
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 |
=pod |
Line 592 Returns: array with column order
|
Line 633 Returns: array with column order
|
|
|
=cut |
=cut |
|
|
|
############################### |
sub col_order { |
sub col_order { |
my $table_id=shift; |
my $table_id=shift; |
if (&update_table_info($table_id)) { |
if (&update_table_info($table_id)) { |
Line 619 Returns:
|
Line 660 Returns:
|
sub create_table { |
sub create_table { |
return undef if (!defined(&connect_to_db($dbh))); |
return undef if (!defined(&connect_to_db($dbh))); |
my ($table_des)=@_; |
my ($table_des)=@_; |
my $request = &build_table_creation_request($table_des); |
my ($request,$table_id) = &build_table_creation_request($table_des); |
# |
# |
# Execute the request to create the table |
# Execute the request to create the table |
############################################# |
############################################# |
Line 629 sub create_table {
|
Line 670 sub create_table {
|
$dbh->errstr(); |
$dbh->errstr(); |
return undef; |
return undef; |
} |
} |
# |
|
# Set up the internal bookkeeping |
|
############################################# |
|
my $table_id; |
|
if (exists($table_des->{'id'})) { |
|
$table_id = $table_des->{'id'}; |
|
} else { |
|
$table_id = &get_new_table_id(); |
|
} |
|
my $tablename = &translate_id($table_id); |
my $tablename = &translate_id($table_id); |
delete($Tables{$tablename}) if (exists($Tables{$tablename})); |
delete($Tables{$tablename}) if (exists($Tables{$tablename})); |
return undef if (! defined(&update_table_info($table_id))); |
return undef if (! defined(&update_table_info($table_id))); |
Line 770 sub build_table_creation_request {
|
Line 802 sub build_table_creation_request {
|
$request.="COMMENT = 'temporary' "; |
$request.="COMMENT = 'temporary' "; |
} |
} |
$request .= "TYPE=MYISAM"; |
$request .= "TYPE=MYISAM"; |
return $request; |
return $request,$table_id; |
} |
} |
|
|
############################### |
############################### |
Line 1163 sub drop_table {
|
Line 1195 sub drop_table {
|
return 1; # if we got here there was no error, so return a 'true' value |
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+[eE]\d+)/_$1/; |
|
return $name; |
|
} |
|
|
|
|
# ---------------------------- convert 'time' format into a datetime sql format |
# ---------------------------- convert 'time' format into a datetime sql format |