--- loncom/metadata_database/LONCAPA/lonmetadata.pm 2009/04/21 15:38:05 1.26
+++ loncom/metadata_database/LONCAPA/lonmetadata.pm 2012/03/14 20:53:56 1.35
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonmetadata.pm,v 1.26 2009/04/21 15:38:05 bisitz Exp $
+# $Id: lonmetadata.pm,v 1.35 2012/03/14 20:53:56 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -93,7 +93,7 @@ FULLTEXT idx_language (language),
FULLTEXT idx_owner (owner),
FULLTEXT idx_copyright (copyright))
-TYPE=MYISAM;
+ENGINE=MYISAM;
=cut
@@ -356,6 +356,9 @@ sub create_metadata_storage {
$col_des.="(".$coldata->{'size'}.")";
}
}
+ if (($tablename =~ /allusers/) && ($column eq 'username')) {
+ $col_des .= ' CHARACTER SET latin1 COLLATE latin1_general_cs';
+ }
# Modifiers
if (exists($coldata->{'restrictions'})){
$col_des.=" ".$coldata->{'restrictions'};
@@ -381,7 +384,7 @@ sub create_metadata_storage {
$text .= 'idx_'.$colname.' ('.$colname.')';
push (@Columns,$text);
}
- $request .= "(".join(", ",@Columns).") TYPE=MyISAM";
+ $request .= "(".join(", ",@Columns).") ENGINE=MyISAM";
return $request;
}
@@ -460,7 +463,8 @@ sub store_metadata {
$mdata->{$fname} eq '') {
push(@MData,'NULL');
} else {
- push(@MData,$mdata->{$fname});
+ push(@MData, $field->{type} eq 'DATETIME' ?
+ sqltime($mdata->{$fname}) : $mdata->{$fname});
}
} else {
push(@MData,undef);
@@ -915,6 +919,10 @@ sub process_dynamic_metadata {
$data{$type.'_list'} = join(',',@{$resdata->{$type}});
}
}
+#
+# NOTE: usage is named sequsage elsewhere in LON-CAPA
+# The translation happens here
+#
if (defined($resdata->{'usage'}) &&
ref($resdata->{'usage'}) eq 'ARRAY') {
$data{'sequsage'} = scalar(@{$resdata->{'usage'}});
@@ -947,8 +955,8 @@ sub process_dynamic_metadata {
$comments = '
';
+ $data{'comments'} = $comments;
}
- $data{'comments'} = $comments;
#
if (exists($resdata->{'stats'})) {
$data{'stats'} = $resdata->{'stats'};
@@ -1080,10 +1088,14 @@ sub process_portfolio_access_data {
($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/);
next if (($scope ne 'public') && ($scope ne 'guest'));
$acc_data->{scope} = $scope;
+ my $sqltime_error;
if ($end != 0) {
- $acc_data->{end} = &sqltime($end);
+ $acc_data->{end} = &sqltime($end,\$sqltime_error);
+ }
+ $acc_data->{start} = &sqltime($start,\$sqltime_error);
+ if ($sqltime_error) {
+ $loghash{$key}{'err'} = $sqltime_error;
}
- $acc_data->{start} = &sqltime($start);
if (! $simulate) {
my ($count,$err) =
&store_metadata($dbh,$newnames->{'access'},
@@ -1127,7 +1139,8 @@ sub process_portfolio_metadata {
if (-e $fullpath) {
my ($ref,$crs,$addedfields) = &portfolio_metadata($fullpath,$dom,$uname,
$group);
- &getfiledates($ref,$fullpath);
+ my $sqltime_error;
+ &getfiledates($ref,$fullpath,\$sqltime_error);
if ($is_course) {
$ref->{'groupname'} = $group;
}
@@ -1142,6 +1155,9 @@ sub process_portfolio_metadata {
);
my %loghash;
if (! $simulate) {
+ if ($sqltime_error) {
+ $loghash{'metadata'."\0"}{'err'} = $sqltime_error;
+ }
my ($count,$err) =
&store_metadata($dbh,$newnames->{'portfolio'},'portfolio_metadata',
\%Data);
@@ -1233,11 +1249,11 @@ sub getfile {
}
##
-## &getfiledates()
+## &getfiledates($ref,$target,$sqltime_error)
## Converts creationdate and modifieddates to SQL format
## Applies stat() to file to retrieve dates if missing
sub getfiledates {
- my ($ref,$target) = @_;
+ my ($ref,$target,$sqltime_error) = @_;
if (! defined($ref->{'creationdate'}) ||
$ref->{'creationdate'} =~ /^\s*$/) {
$ref->{'creationdate'} = (stat($target))[9];
@@ -1246,17 +1262,17 @@ sub getfiledates {
$ref->{'lastrevisiondate'} =~ /^\s*$/) {
$ref->{'lastrevisiondate'} = (stat($target))[9];
}
- $ref->{'creationdate'} = &sqltime($ref->{'creationdate'});
- $ref->{'lastrevisiondate'} = &sqltime($ref->{'lastrevisiondate'});
+ $ref->{'creationdate'} = &sqltime($ref->{'creationdate'},$sqltime_error);
+ $ref->{'lastrevisiondate'} = &sqltime($ref->{'lastrevisiondate'},$sqltime_error);
}
##
-## &sqltime($timestamp)
+## &sqltime($timestamp,$sqltime_error)
##
## Convert perl $timestamp to MySQL time. MySQL expects YYYY-MM-DD HH:MM:SS
##
sub sqltime {
- my ($time) = @_;
+ my ($time,$sqltime_error) = @_;
my $mysqltime;
if ($time =~
/(\d+)-(\d+)-(\d+) # YYYY-MM-DD
@@ -1279,7 +1295,9 @@ sub sqltime {
} elsif (! defined($time) || $time == 0) {
$mysqltime = 0;
} else {
- &log(0," sqltime:Unable to decode time ".$time);
+ if (ref($sqltime_error) eq 'SCALAR') {
+ $$sqltime_error = "sqltime:Unable to decode time ".$time;
+ }
$mysqltime = 0;
}
return $mysqltime;