package BackupPC::CGI::BurnMedia; use strict; use BackupPC::CGI::Lib qw(:all); use BackupPC::Search; use Data::Dumper; use vars qw($Cgi %In $MyURL $User $TopDir $BinDir $bpc); sub action() { my $cont = ""; my $title; my $subtitle; my @files; $bpc->ConfigRead('_search_archive'); my %Conf = $bpc->Conf; my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 } ); BackupPC::CGI::Lib::NewRequest(); # $cont = Dumper(\%In); if (!defined($In{submitBurner})) { $title = eval(q{ ${h1($Lang->{Burn_media})}}); $cont = Dumper(%In); $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}}); $cont = <selectrow_array( q{ SELECT sum(size) FROM backup_parts WHERE id IN ( }.join(',', @selected_backup_parts).q{ ) }); if ($total_size > ($Conf{ArchiveMediaSize})) { $cont .= eval(' ${h2(Error)} '); $cont .= join(' ' , "Selected backups size", unit($total_size) , "exceed medium size ", unit($Conf{ArchiveMediaSize}) ); } elsif ($total_size == 0) { $cont .= eval( q{ ${h2(Error)}}); $cont .= "No backups selected."; } else { # create new archive my $sth = $dbh->prepare(q{ INSERT INTO archive ( id, dvd_nr, note, username, date, total_size ) VALUES ( nextVal('archive_id_seq'), nextVal('dvd_nr'), ?, ?, NOW(), ? ) }); $sth->execute($In{'note'}, $User, $total_size); my $sth = $dbh->prepare(q{ INSERT INTO archive_parts ( archive_id, backup_part_id ) VALUES ( (SELECT last_value FROM archive_id_seq), ? ) }); $sth->execute($_) foreach @selected_backup_parts; my ($dvd_nr) = $dbh->selectrow_array(qq{ select last_value from dvd_nr }); die "no dvd_nr" unless $dvd_nr; $dbh->commit(); $cont .= q{ Archived following backups parts: } . join(", ", @selected_backup_parts); my $sth = $dbh->prepare(qq{ select filename, part_nr, TIMESTAMP 'epoch' + date * INTERVAL '1 second' as date, size from archive_backup_parts where dvd_nr = ? order by backup_part_id }); $sth->execute( $dvd_nr ); $cont .= ''; while( my $row = $sth->fetchrow_arrayref ) { $cont .= ''; } $cont .= '
' . join('', @$row) . '
'; $cont .= q{
with total size of } . unit($total_size) . q{ to media } . $dvd_nr . q{ with following message:
} . $In{'note'} . q{
}; } } $cont .= "ArchiveMediaSize:" . unit($Conf{ArchiveMediaSize}); Header($Lang->{Burn_media}, "", 1, "", $cont); Trailer(); $dbh->disconnect(); } 1;