--- loncom/metadata_database/LONCAPA/lonmetadata.pm 2006/09/26 15:15:31 1.14 +++ loncom/metadata_database/LONCAPA/lonmetadata.pm 2006/12/29 19:15:28 1.15 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonmetadata.pm,v 1.14 2006/09/26 15:15:31 raeburn Exp $ +# $Id: lonmetadata.pm,v 1.15 2006/12/29 19:15:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -931,6 +931,41 @@ sub dynamic_metadata_storage { ###################################################################### ###################################################################### +## Utility originally in searchcat.pl. Moved to be more widely available. +## +## &sqltime($timestamp) +## +## Convert perl $timestamp to MySQL time. MySQL expects YYYY-MM-DD HH:MM:SS +## +sub sqltime { + my ($time) = @_; + my $mysqltime; + if ($time =~ + /(\d+)-(\d+)-(\d+) # YYYY-MM-DD + \s # a space + (\d+):(\d+):(\d+) # HH:MM::SS + /x ) { + # Some of the .meta files have the time in mysql + # format already, so just make sure they are 0 padded and + # pass them back. + $mysqltime = sprintf('%04d-%02d-%02d %02d:%02d:%02d', + $1,$2,$3,$4,$5,$6); + } elsif ($time =~ /^\d+$/) { + my @TimeData = gmtime($time); + # Alter the month to be 1-12 instead of 0-11 + $TimeData[4]++; + # Alter the year to be from 0 instead of from 1900 + $TimeData[5]+=1900; + $mysqltime = sprintf('%04d-%02d-%02d %02d:%02d:%02d', + @TimeData[5,4,3,2,1,0]); + } elsif (! defined($time) || $time == 0) { + $mysqltime = 0; + } else { + &log(0," sqltime:Unable to decode time ".$time); + $mysqltime = 0; + } + return $mysqltime; +} ###################################################################### ######################################################################