/[BackupPC]/trunk/lib/BackupPC/CGI/BurnMedia.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/BackupPC/CGI/BurnMedia.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 197 - (hide annotations)
Thu Oct 13 18:33:00 2005 UTC (18 years, 7 months ago) by dpavlin
File size: 3038 byte(s)
 r8507@llin:  dpavlin | 2005-10-13 20:32:53 +0200
 added support for multiple parts to user interface

1 dpavlin 4 package BackupPC::CGI::BurnMedia;
2    
3     use strict;
4     use BackupPC::CGI::Lib qw(:all);
5     use BackupPC::SearchLib;
6     use Data::Dumper;
7     use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);
8    
9 dpavlin 53 my $dsn = $Conf{SearchDSN};
10     my $db_user = $Conf{SearchUser} || '';
11 dpavlin 4
12 dpavlin 53 sub action() {
13     my $cont = "";
14     my $title;
15     my $subtitle;
16     my @files;
17    
18 iklaric 137 my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 0 } );
19 dpavlin 53
20     BackupPC::CGI::Lib::NewRequest();
21 iklaric 121 # $cont = Dumper(%In);
22 dpavlin 53 if (!defined($In{submitBurner})) {
23     $title = eval(q{ ${h1($Lang->{Burn_media})}});
24     $cont = Dumper(%In);
25     $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});
26     $cont = <<EOF;
27    
28     $title
29     $subtitle
30 dpavlin 4
31     EOF
32    
33 iklaric 121 $cont .= "Backups that have not been archived:<br>";
34 dpavlin 53 $cont .= BackupPC::SearchLib::displayBackupsGrid();
35 dpavlin 4
36 dpavlin 53 } else {
37 dpavlin 4
38 dpavlin 145 my @selected_backup_ids;
39    
40 iklaric 144 my $total_size = 0;
41 dpavlin 197 my $selected = 0;
42    
43 iklaric 147 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);
48 dpavlin 197 $selected++;
49 iklaric 121 }
50     }
51 dpavlin 53
52 dpavlin 197 my $total_kb = int($total_size / 1024);
53    
54     # and now a little magic to check multi-volume increments
55     my $parts = 1;
56     if ($#selected_backup_ids == 0) {
57     ($parts) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $selected_backup_ids[0]);
58     }
59    
60     if ($total_kb > ($Conf{MaxArchiveSize} * $parts)) {
61 iklaric 144 $cont .= eval( q{ ${h2(Error)}});
62 dpavlin 197 $cont .= "Selected backups size $total_kb Kb exceed max archive size $Conf{MaxArchiveSize} Kb.";
63     } elsif ($total_size == 0) {
64     $cont .= eval( q{ ${h2(Error)}});
65     $cont .= "No backups selected.";
66 dpavlin 145 } else {
67 dpavlin 53
68 iklaric 148 # create new archive
69     my $sth = $dbh->prepare(q{
70     INSERT INTO archive (
71     id,
72     dvd_nr,
73     note,
74     username,
75 dpavlin 164 date,
76     total_size
77 iklaric 148 ) VALUES (
78     nextVal('archive_id_seq'),
79     nextVal('dvd_nr'),
80     ?,
81     ?,
82 dpavlin 164 NOW(),
83     ?
84 iklaric 148 )
85     });
86 iklaric 146
87 dpavlin 165 $sth->execute($In{'note'}, $User, $total_size);
88 iklaric 148
89 dpavlin 145 foreach my $backup_id (@selected_backup_ids) {
90 dpavlin 53
91 dpavlin 145 # link backups with archive
92     my $sth = $dbh->prepare(q{
93     INSERT INTO archive_backup (
94 dpavlin 154 archive_id, backup_id
95 dpavlin 145 ) VALUES (
96 dpavlin 154 (SELECT last_value FROM archive_id_seq), ?
97 dpavlin 145 )
98     });
99    
100 dpavlin 154 $sth->execute($backup_id);
101 dpavlin 145
102     $dbh->commit();
103    
104 iklaric 144 }
105 dpavlin 150
106     my ($dvd_nr) = $dbh->selectrow_array(qq{
107     select last_value from dvd_nr
108     });
109    
110     $dvd_nr ||= 'error';
111    
112 iklaric 146 $dbh->commit();
113 dpavlin 150
114     $cont .= q{
115     Archived following backups:
116     } . join(", ", @selected_backup_ids) . q{
117     <br/>with total size of
118 dpavlin 164 <b>} . sprintf("%1.2f Mb", $total_size / 1024 / 1024) . q{</b>
119 dpavlin 150 to media <b>} . $dvd_nr . q{</b>
120     with following message:
121     <div style="background-color: #e0e0e0; display: inline; padding: 2px;">
122     } . $In{'note'} . q{
123     </div>
124     };
125 iklaric 121 }
126 dpavlin 4 }
127 dpavlin 145
128 dpavlin 53 Header($Lang->{Burn_media}, "", 1, "", $cont);
129 dpavlin 145
130 dpavlin 53 Trailer();
131     $dbh->disconnect();
132     }
133 dpavlin 4
134     1;

  ViewVC Help
Powered by ViewVC 1.1.26