/[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 4 by dpavlin, Wed Jun 22 19:22:51 2005 UTC revision 148 by iklaric, Fri Oct 7 12:06:35 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=$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  
51              {                  if ($total_size > $Conf{MaxArchiveSize}) {
52                $mediumNum = "0";                                  $cont .= eval( q{ ${h2(Error)}});
53              }                          $cont .= "Selected backups exceed max archive size.";
54              $mediumName = "DVD".$mediumNum;                  } else {
55              $st = $dbh -> prepare (q{  
56                                          INSERT INTO dvds (num, name)                          # create new archive
57                                          VALUES                          my $sth = $dbh->prepare(q{
58                                          (?,?)                                                                                            INSERT INTO archive (
59                                      });                                                                  id,
60              $st -> bind_param(1,$mediumNum);                                                                  dvd_nr,
61              $st -> bind_param(2,$mediumName);                                                                  note,
62              $st -> execute();                                                                  username,
63              my $dvdid = $dbh->func('last_insert_rowid');                                                                              date
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);                          # FIXME insert user here
74              my $orQuery = "";                          $sth->execute($In{'note'}, 'dummy_user');
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, status
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, 'ok');
88                }  
89              $cont .= "Backups assigned to media ".$mediumName;                                  $dbh->commit();
90    
91                                    $cont .= qq{
92                                            Archived following backups:
93                                    } . join(",", @selected_backup_ids) . qq{
94                                            <br/>with following message:
95                                            <div style="border: 1px solid #e0e0e0">
96                                    } . $In{'note'} . qq{
97                                            </div>
98                                    };
99                            }
100                            $dbh->commit();
101                    }
102          }          }
103          
104      Header($Lang->{Burn_media}, "", 1, "", $cont);          Header($Lang->{Burn_media}, "", 1, "", $cont);
105      Trailer();  
106      $dbh -> disconnect();          Trailer();
107    }          $dbh->disconnect();
108    }
109    
110  1;  1;

Legend:
Removed from v.4  
changed lines
  Added in v.148

  ViewVC Help
Powered by ViewVC 1.1.26