1 package BackupPC::CGI::BurnMedia;
4 use BackupPC::CGI::Lib qw(:all);
7 use vars qw($Cgi %In $MyURL $User $TopDir $BinDir $bpc);
15 $bpc->ConfigRead('_search_archive');
16 my %Conf = $bpc->Conf;
18 my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 } );
20 BackupPC::CGI::Lib::NewRequest();
21 # $cont = Dumper(\%In);
22 if (!defined($In{submitBurner})) {
23 $title = eval(q{ ${h1($Lang->{Burn_media})}});
25 $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});
33 $cont .= "Backups that have not been archived:<br>";
34 $cont .= BackupPC::Search::displayBackupsGrid( \%In );
38 my @selected_backup_parts;
40 foreach my $key(keys(%In)) {
41 next unless $key =~ m/^fcb(\d+)/;
42 push @selected_backup_parts, $1;
46 my ($total_size) = $dbh->selectrow_array( q{
47 SELECT sum(size) FROM backup_parts
48 WHERE id IN ( }.join(',', @selected_backup_parts).q{ )
52 if ($total_size > ($Conf{ArchiveMediaSize})) {
53 $cont .= eval(' ${h2(Error)} ');
55 , "Selected backups size", unit($total_size)
56 , "exceed medium size ", unit($Conf{ArchiveMediaSize})
58 } elsif ($total_size == 0) {
59 $cont .= eval( q{ ${h2(Error)}});
60 $cont .= "No backups selected.";
64 my $sth = $dbh->prepare(q{
73 nextVal('archive_id_seq'),
82 $sth->execute($In{'note'}, $User, $total_size);
84 my $sth = $dbh->prepare(q{
85 INSERT INTO archive_parts (
86 archive_id, backup_part_id
88 (SELECT last_value FROM archive_id_seq), ?
91 $sth->execute($_) foreach @selected_backup_parts;
93 my ($dvd_nr) = $dbh->selectrow_array(qq{
94 select last_value from dvd_nr
97 die "no dvd_nr" unless $dvd_nr;
102 Archived following backups parts:
103 } . join(", ", @selected_backup_parts);
105 my $sth = $dbh->prepare(qq{
109 TIMESTAMP 'epoch' + date * INTERVAL '1 second' as date,
111 from archive_backup_parts
113 order by backup_part_id
115 $sth->execute( $dvd_nr );
116 $cont .= '<table border=1>';
117 while( my $row = $sth->fetchrow_arrayref ) {
118 $cont .= '<tr><td>' . join('</td><td>', @$row) . '</tr><tr>';
123 <br/>with total size of
124 <b>} . unit($total_size)
126 to media <b>} . $dvd_nr . q{</b>
127 with following message:
128 <div style="background-color: #e0e0e0; display: inline; padding: 2px;">
137 $cont .= "ArchiveMediaSize:" . unit($Conf{ArchiveMediaSize});
139 Header($Lang->{Burn_media}, "", 1, "", $cont);