--- /dev/null
+package BackupPC::Config::Db::MySQL;
+
+use base 'BackupPC::Config::Db';
+use warnings;
+use strict;
+
+use DBI;
+use DBD::mysql;
+
+%BackupPC::Config::Db::gConfigTypeField =
+ (BOOLEAN => 'valueBit',
+ INT => 'valueInt',
+ FLOAT => 'valueFloat',
+ STRING => 'valueString',
+ MEMO => 'valueMemo',
+ );
+
+sub ConnectData {
+ my($self) = @_;
+
+ my $dsn = 'DBI:mysql:database=backuppc;host=reagan';
+ $self->{dbh} = DBI->connect($dsn, 'root', undef, {RaiseError => 1,
+ AutoCommit => 1,});
+}
+
+sub ConfigMTime {
+ my($self) = @_;
+return time();
+ my $cmd = "SHOW TABLE STATUS LIKE 'Config'";
+ my $sth = $self->{dbh}->prepare($cmd);
+
+ $sth->execute;
+ my $row = $sth->fetchrow_hashref || return time();
+ my $mtime;
+
+ if (defined($mtime = $row->{'Update_time'})) {
+ $mtime =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
+ || return time();
+ return &Date_SecsSince1970($2,$3,$1,$4,$5,$6);
+ } else {
+ return time();
+ }
+}
+
+sub HostsMTime {
+ my($self) = @_;
+return time();
+ my $cmd = "SHOW TABLE STATUS LIKE 'Client'";
+ my $sth = $self->{dbh}->prepare($cmd);
+
+ $sth->execute;
+ my $row = $sth->fetchrow_hashref || return time();
+ my $mtime;
+
+ if (defined($mtime = $row->{'Update_time'})) {
+ return &Date_SecsSince1970($mtime);
+ } else {
+ return time();
+ }
+}
+
+# Date subs borrowed from Date::Manip.
+# Copyright (c) 1995-2001 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+sub Date_SecsSince1970 {
+ my($mysqlDate) = @_;
+ $mysqlDate =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
+ || return time();
+ my($y,$m,$d,$h,$mn,$s) = ($1,$2,$3,$4,$5,$6);
+ my($sec_now,$sec_70,$Ny,$N4,$N100,$N400,$dayofyear,$days)=();
+ my($cc,$yy)=();
+
+ $y=~ /(\d{2})(\d{2})/;
+ ($cc,$yy)=($1,$2);
+
+ $Ny=$y;
+
+ $N4=($Ny-1)/4 + 1;
+ $N4=0 if ($y==0);
+
+ $N100=$cc + 1;
+ $N100-- if ($yy==0);
+ $N100=0 if ($y==0);
+
+ $N400=($N100-1)/4 + 1;
+ $N400=0 if ($y==0);
+
+ my(@days) = ( 0, 31, 59, 90,120,151,181,212,243,273,304,334,365);
+ my($ly)=0;
+ $ly=1 if ($m>2 && &Date_LeapYear($y));
+
+ $dayofyear=$days[$m-1]+$d+$ly;
+ $days= $Ny*365 + $N4 - $N100 + $N400 + $dayofyear;
+ $sec_now=($days-1)*24*3600 + $h*3600 + $mn*60 + $s;
+ $sec_70 =62167219200;
+ return ($sec_now-$sec_70);
+}
+
+sub Date_LeapYear {
+ my($y)=@_;
+ return 0 if $y % 4;
+ return 1 if $y % 100;
+ return 0 if $y % 400;
+ return 1;
+}
+
+
+
+1;