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_ids;
44 foreach my $key(keys(%In)) {
45 if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) {
47 my ($host_id, $backup_num, $backup_id) = ($1,$2,$3);
48 push @selected_backup_ids, $backup_id;
49 my $currSize = BackupPC::Search::getGzipSizeFromBackupID($backup_id);
50 my $sth_size = $dbh->prepare(q{select inc_size from backups where id = ?});
51 $sth_size -> execute( $backup_id );
52 my $db_size = $sth_size->fetchrow_hashref()->{inc_size};
54 if ($db_size != $currSize) {
55 $cont .= "NOT EQUAL!: [fs_size:$currSize, db_size:$db_size, backup_id:$backup_id] <br />";
59 $total_size += $currSize;
63 my ($this_part) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $backup_id);
69 if ($total_size > ($Conf{ArchiveMediaSize} * $parts)) {
70 $cont .= eval(' ${h2(Error)} ');
72 , "Selected backups size", unit($total_size)
73 , "exceed medium size ", unit($Conf{ArchiveMediaSize})
75 } elsif ($total_size == 0) {
76 $cont .= eval( q{ ${h2(Error)}});
77 $cont .= "No backups selected.";
81 my $sth = $dbh->prepare(q{
90 nextVal('archive_id_seq'),
99 $sth->execute($In{'note'}, $User, $total_size);
101 foreach my $backup_id (@selected_backup_ids) {
103 # link backups with archive
104 my $sth = $dbh->prepare(q{
105 INSERT INTO archive_backup (
106 archive_id, backup_id
108 (SELECT last_value FROM archive_id_seq), ?
112 $sth->execute($backup_id);
118 my ($dvd_nr) = $dbh->selectrow_array(qq{
119 select last_value from dvd_nr
127 $sth = $dbh->prepare('SELECT SUM(gzip_size) AS suma FROM backups_on_dvds WHERE dvd_nr=?');
128 $sth->execute($dvd_nr);
129 $db_size = $sth->fetchrow_hashref()->{suma};
133 Archived following backups:
134 } . join(", ", @selected_backup_ids) . q{
135 <br/>with total size of
136 <b>} . unit($total_size)
138 to media <b>} . $dvd_nr . q{</b>
139 with following message:
140 <div style="background-color: #e0e0e0; display: inline; padding: 2px;">
148 , "ArchiveMediaSize:", unit($Conf{ArchiveMediaSize})
149 , "ArchiveChunkSize:", unit($Conf{ArchiveChunkSize})
152 Header($Lang->{Burn_media}, "", 1, "", $cont);