1 package BackupPC::CGI::BurnMedia;
4 use BackupPC::CGI::Lib qw(:all);
5 use BackupPC::SearchLib;
7 use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);
9 my $dsn = $Conf{SearchDSN};
10 my $db_user = $Conf{SearchUser} || '';
18 my $dbh = DBI->connect($dsn, $db_user, "", { 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::SearchLib::displayBackupsGrid( \%In );
38 my @selected_backup_ids;
43 foreach my $key(keys(%In)) {
44 if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) {
45 my ($host_id, $backup_num, $backup_id) = ($1,$2,$3);
46 push @selected_backup_ids, $backup_id;
47 $total_size += BackupPC::SearchLib::getGzipSize($host_id, $backup_num);
52 # and now a little magic to check multi-volume increments
54 if ($#selected_backup_ids == 0) {
55 ($parts) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $selected_backup_ids[0]);
58 if ($total_size > ($Conf{MaxArchiveSize} * $parts)) {
59 $cont .= eval( q{ ${h2(Error)}});
60 $cont .= "Selected backups size $total_size Kb exceed max archive size $Conf{MaxArchiveSize} Kb.";
61 } elsif ($total_size == 0) {
62 $cont .= eval( q{ ${h2(Error)}});
63 $cont .= "No backups selected.";
67 my $sth = $dbh->prepare(q{
76 nextVal('archive_id_seq'),
85 $sth->execute($In{'note'}, $User, $total_size);
87 foreach my $backup_id (@selected_backup_ids) {
89 # link backups with archive
90 my $sth = $dbh->prepare(q{
91 INSERT INTO archive_backup (
94 (SELECT last_value FROM archive_id_seq), ?
98 $sth->execute($backup_id);
104 my ($dvd_nr) = $dbh->selectrow_array(qq{
105 select last_value from dvd_nr
113 Archived following backups:
114 } . join(", ", @selected_backup_ids) . q{
115 <br/>with total size of
116 <b>} . sprintf("%1.2f Mb", $total_size / 1024 / 1024) . q{</b>
117 to media <b>} . $dvd_nr . q{</b>
118 with following message:
119 <div style="background-color: #e0e0e0; display: inline; padding: 2px;">
126 Header($Lang->{Burn_media}, "", 1, "", $cont);