/[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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by dpavlin, Thu Jun 23 09:47:59 2005 UTC revision 165 by dpavlin, Mon Oct 10 13:57:29 2005 UTC
# Line 6  use BackupPC::SearchLib; Line 6  use BackupPC::SearchLib;
6  use Data::Dumper;  use Data::Dumper;
7  use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);  use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);
8    
9  sub action()  my $dsn = $Conf{SearchDSN};
10    {  my $db_user = $Conf{SearchUser} || '';
11        my $cont = "";  
12        my $title;  sub action() {
13        my $subtitle;          my $cont = "";
14        my @files;          my $title;
15        my $dbh = DBI->connect( "dbi:SQLite:dbname=$TopDir/$Conf{SearchDB}",          my $subtitle;
16          "", "", { RaiseError => 1, AutoCommit => 1 } );          my @files;
17    
18        BackupPC::CGI::Lib::NewRequest();          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 0 } );
19        $cont = Dumper(%In);  
20        if (!defined($In{submitBurner}))          BackupPC::CGI::Lib::NewRequest();
21          {  #       $cont = Dumper(%In);
22              $title = eval(q{ ${h1($Lang->{Burn_media})}});          if (!defined($In{submitBurner})) {
23              $cont = Dumper(%In);                  $title = eval(q{ ${h1($Lang->{Burn_media})}});
24              $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});                  $cont = Dumper(%In);
25              $cont = <<EOF;                  $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});
26                                $cont = <<EOF;
27                
28              $title          $title
29                $subtitle          $subtitle
30                    
31  EOF  EOF
32                                
33              $cont .= "Backups that have files not archived:<br>";                  $cont .= "Backups that have not been archived:<br>";
34              $cont .= BackupPC::SearchLib::displayBackupsGrid();                  $cont .= BackupPC::SearchLib::displayBackupsGrid();
35                            
36          }          } else {
       else  
         {  
             my $mediumName = "DVD";  
             my $mediumNum;  
   
             $title = eval(q{ ${h1($Lang->{Burn_media})}});  
             $subtitle = eval(q{ ${h2($Lang->{Burn_media_assign})}});  
             $cont = <<EOF;  
               
             $title  
             $subtitle  
                 
37    
38  EOF                  my @selected_backup_ids;
39                
40              # insert DVD first,                  my $total_size = 0;
41              my $sql = q{ SELECT MAX(num)+1 AS maxNum FROM dvds; };                  
42              my $st = $dbh -> prepare($sql);                  foreach my $key(keys(%In)) {
43              $st -> execute();                          if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) {
44              my $tmp = $st -> fetchrow_hashref();                                  my ($host_id, $backup_num, $backup_id) = ($1,$2,$3);
45              $mediumNum = $tmp->{'maxNum'};                                  push @selected_backup_ids, $backup_id;
46              if ($mediumNum ne "")                                  $total_size += BackupPC::SearchLib::getGzipSize($host_id, $backup_num);
47              {                          }
48                $mediumNum = $tmp->{'maxNum'};                              }
49              }  
50              else                  if (($total_size / 1024) > $Conf{MaxArchiveSize}) {
51              {                          $cont .= eval( q{ ${h2(Error)}});
52                $mediumNum = "0";                                  $cont .= "Selected backups size $total_size exceed max archive size $Conf{MaxArchiveSize}.";
53              }                  } else {
54              $mediumName = "DVD".$mediumNum;  
55              $st = $dbh -> prepare (q{                          # create new archive
56                                          INSERT INTO dvds (num, name)                          my $sth = $dbh->prepare(q{
57                                          VALUES                                                          INSERT INTO archive (
58                                          (?,?)                                                                                                    id,
59                                      });                                                                  dvd_nr,
60              $st -> bind_param(1,$mediumNum);                                                                  note,
61              $st -> bind_param(2,$mediumName);                                                                  username,
62              $st -> execute();                                                                  date,
63              my $dvdid = $dbh->func('last_insert_rowid');                                                                              total_size
64                                                                        ) VALUES (
65              my $updateSQL = q{                                                                  nextVal('archive_id_seq'),
66                  UPDATE files                                                                  nextVal('dvd_nr'),
67                  SET dvdid=?                                                                  ?,
68                  WHERE files.shareID IN (                                                                  ?,
69                      SELECT ID FROM shares WHERE hostID=?                                                                  NOW(),
70                      ) AND                                                                  ?
71                      files.backupNum=?                                                          )
72              };                                                  });
73              my $updateStatement = $dbh -> prepare($updateSQL);  
74              my $orQuery = "";                          $sth->execute($In{'note'}, $User, $total_size);
75                
76              # then, assign dvdid to files                          foreach my $backup_id (@selected_backup_ids) {
77              foreach my $key (keys(%In))  
78                {                                  # link backups with archive
79                    if ($key =~ /fcb/)                                  my $sth = $dbh->prepare(q{
80                      {                                                            INSERT INTO archive_backup (
81                          my ($hID, $bNo) = split(/_/, $In{$key});                                                  archive_id, backup_id
82                                            ) VALUES (
83                          $updateStatement->bind_param(1, $dvdid);                                                  (SELECT last_value FROM archive_id_seq), ?
84                          $updateStatement->bind_param(2, $hID);                                          )
85                          $updateStatement->bind_param(3, $bNo);                                  });
86                          $updateStatement->execute();  
87                      }                                  $sth->execute($backup_id);
88                }  
89              $cont .= "Backups assigned to media ".$mediumName;                                  $dbh->commit();
90    
91                            }
92    
93                            my ($dvd_nr) = $dbh->selectrow_array(qq{
94                                    select last_value from dvd_nr
95                            });
96    
97                            $dvd_nr ||= 'error';
98    
99                            $dbh->commit();
100    
101                            $cont .= q{
102                                    Archived following backups:
103                            } . join(", ", @selected_backup_ids) . q{
104                                    <br/>with total size of
105                            <b>} . sprintf("%1.2f Mb", $total_size / 1024 / 1024) . q{</b>
106                                    to media <b>} . $dvd_nr . q{</b>
107                                    with following message:
108                                    <div style="background-color: #e0e0e0; display: inline; padding: 2px;">
109                            } . $In{'note'} . q{
110                                    </div>
111                            };
112                    }
113          }          }
114          
115      Header($Lang->{Burn_media}, "", 1, "", $cont);          Header($Lang->{Burn_media}, "", 1, "", $cont);
116      Trailer();  
117      $dbh -> disconnect();          Trailer();
118    }          $dbh->disconnect();
119    }
120    
121  1;  1;

Legend:
Removed from v.6  
changed lines
  Added in v.165

  ViewVC Help
Powered by ViewVC 1.1.26