--- loncom/metadata_database/LONCAPA/lonmetadata.pm 2007/08/18 00:32:05 1.24
+++ loncom/metadata_database/LONCAPA/lonmetadata.pm 2011/05/29 18:11:45 1.30
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonmetadata.pm,v 1.24 2007/08/18 00:32:05 albertel Exp $
+# $Id: lonmetadata.pm,v 1.30 2011/05/29 18:11:45 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -356,6 +356,9 @@ sub create_metadata_storage {
$col_des.="(".$coldata->{'size'}.")";
}
}
+ if (($tablename =~ /allusers/) && ($column eq 'username')) {
+ $request .= ' CHARACTER SET latin1 COLLATE latin1_general_cs';
+ }
# Modifiers
if (exists($coldata->{'restrictions'})){
$col_des.=" ".$coldata->{'restrictions'};
@@ -935,16 +938,20 @@ sub process_dynamic_metadata {
}
#
# put together comments
- my $comments = '
';
- $data{'comments'} = $comments;
+ if ($comments) {
+ $comments = '';
+ $data{'comments'} = $comments;
+ }
#
if (exists($resdata->{'stats'})) {
$data{'stats'} = $resdata->{'stats'};
@@ -1076,10 +1083,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'},
@@ -1123,7 +1134,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;
}
@@ -1138,6 +1150,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);
@@ -1183,8 +1198,8 @@ sub process_allusers_data {
if ($udom eq '' || $uname eq '' ) {
$error = 'No domain and/or username specified';
} else {
- $delitem = 'domain = '.$dbh->quote($udom).' AND username = '.
- $dbh->quote($uname);
+ $delitem = 'domain = '.$dbh->quote($udom).' AND username '.
+ 'COLLATE latin1_general_cs = '.$dbh->quote($uname);
$error=&delete_metadata($dbh,$newnames->{'allusers'},$delitem);
}
if (defined($error)) {
@@ -1229,11 +1244,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];
@@ -1242,17 +1257,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
@@ -1275,7 +1290,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;
'. - ''.$evaluator.':'. + ''.$evaluator.': '. $resdata->{'evaluation'}->{'comments'}->{$evaluator}. '
'; } - $comments .= '