/[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 144 by iklaric, Fri Oct 7 10:28:55 2005 UTC
# Line 3  package BackupPC::CGI::BurnMedia; Line 3  package BackupPC::CGI::BurnMedia;
3  use strict;  use strict;
4  use BackupPC::CGI::Lib qw(:all);  use BackupPC::CGI::Lib qw(:all);
5  use BackupPC::SearchLib;  use BackupPC::SearchLib;
6    use BackupPC::Workflow::Create;
7  use Data::Dumper;  use Data::Dumper;
8  use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);  use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);
9    
10  sub action()  my $dsn = $Conf{SearchDSN};
11    {  my $db_user = $Conf{SearchUser} || '';
12        my $cont = "";  
13        my $title;  sub action() {
14        my $subtitle;          my $cont = "";
15        my @files;          my $title;
16        my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",          my $subtitle;
17          "", "", { RaiseError => 1, AutoCommit => 1 } );          my @files;
18    
19        BackupPC::CGI::Lib::NewRequest();          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 0 } );
20        $cont = Dumper(%In);  
21        if (!defined($In{submitBurner}))          BackupPC::CGI::Lib::NewRequest();
22          {  #       $cont = Dumper(%In);
23              $title = eval(q{ ${h1($Lang->{Burn_media})}});          if (!defined($In{submitBurner})) {
24              $cont = Dumper(%In);                  $title = eval(q{ ${h1($Lang->{Burn_media})}});
25              $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});                  $cont = Dumper(%In);
26              $cont = <<EOF;                  $subtitle = eval(q{ ${h2($Lang->{Burn_media_select})}});
27                                $cont = <<EOF;
28                
29              $title          $title
30                $subtitle          $subtitle
31                    
32  EOF  EOF
33                                
34              $cont .= "Backups that have files not archived:<br>";                  $cont .= "Backups that have not been archived:<br>";
35              $cont .= BackupPC::SearchLib::displayBackupsGrid();                  $cont .= BackupPC::SearchLib::displayBackupsGrid();
36                            
37          }          } 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  
                 
38    
39  EOF                  my @selectedBackups;
40                                my $total_size = 0;
41              # insert DVD first,                  
42              my $sql = q{ SELECT MAX(num)+1 AS maxNum FROM dvds; };                  foreach my $key(keys(%In))
43              my $st = $dbh -> prepare($sql);                  {
44              $st -> execute();                          if ($key =~ m/fcb([0-9]+)_([0-9]+)/gi)
45              my $tmp = $st -> fetchrow_hashref();                          {
46              $mediumNum = $tmp->{'maxNum'};                                  my $hostID = $1;
47              if ($mediumNum ne "")                                  my $backupnum = $2;
48              {                                  push(@selectedBackups, ($hostID, $backupnum));
49                $mediumNum = $tmp->{'maxNum'};                                              $total_size += getGzipSize($hostID, $backupnum);
50              }                          }
51              else                  }
52              {  
53                $mediumNum = "0";                          if ($total_size > $Conf{MaxArchiveSize})
54              }                  {
55              $mediumName = "DVD".$mediumNum;                          $cont .= eval( q{ ${h2(Error)}});
56              $st = $dbh -> prepare (q{                          $cont .= "Selected backups exceed max archive size.";                  
57                                          INSERT INTO dvds (num, name)                  }
58                                          VALUES                  else
59                                          (?,?)                                                    {
60                                      });                          # kreiraj arhivu
61              $st -> bind_param(1,$mediumNum);                          my $kveri = q{
62              $st -> bind_param(2,$mediumName);                                                  INSERT INTO archive
63              $st -> execute();                                                  (id, dvd_nr, note, username, date)
64              my $dvdid = $dbh->func('last_insert_rowid');                                                              VALUES}
65                                                                .
66              my $updateSQL = q{                                                  "(nextVal('archive_id_seq'), nextVal('dvd_nr'), '".%In->{'note'}."', 'dummy', NOW());";
67                  UPDATE files  
68                  SET dvdid=?  
69                  WHERE files.shareID IN (                          $dbh->do($kveri);                                        
70                      SELECT ID FROM shares WHERE hostID=?                  
71                      ) AND                          for (my $i = 0; $i <= @selectedBackups /2; $i++)
72                      files.backupNum=?                          {
73              };                                  my $host = $selectedBackups[$i*2];
74              my $updateStatement = $dbh -> prepare($updateSQL);                                  my $backup = $selectedBackups[$i*2+1];
75              my $orQuery = "";                                  last if ($host == undef && $backup == undef);
76                        
77              # then, assign dvdid to files                                  # insertaj u archive_backup
78              foreach my $key (keys(%In))                                  
79                {          
80                    if ($key =~ /fcb/)                                  my $kveri = q{
81                      {                                                                                    INSERT INTO archive_backup
82                          my ($hID, $bNo) = split(/_/, $In{$key});                                                                  SELECT
83                                                                            (SELECT last_value FROM archive_id_seq),}.
84                          $updateStatement->bind_param(1, $dvdid);                                                                          $backup.',\'ok\';';
85                          $updateStatement->bind_param(2, $hID);          
86                          $updateStatement->bind_param(3, $bNo);                                  $dbh->do($kveri);
87                          $updateStatement->execute();                          }
88                      }          
89                }                          my $kveri = q{
90              $cont .= "Backups assigned to media ".$mediumName;                                                          INSERT INTO workflow_step(step_id, code, next_step, stop)
91                                                            VALUES
92                                                            (
93                                                                    nextVal('workflow_step_id_seq'),
94                                                                    'start',
95                                                                    NULL,
96                                                                    false
97                                                            );                                              
98                                                     };
99                            $dbh->do($kveri);
100            
101            
102                            # insertaj u workflows
103                            my $kveri = q{
104                                                            INSERT INTO workflows( id, step_id, start, stop, username, archive_id   , running)
105                                                            SELECT
106                                                                    nextVal('workflows_id_seq'),
107                                                                    (SELECT currVal('workflow_step_id_seq')),
108                                                                    NOW(),
109                                                                    NULL,
110                                                                    'dummy',
111                                                                    (SELECT last_value FROM archive_id_seq),
112                                                                    true;
113                                                    };
114                            $dbh->do($kveri);
115                    
116                            $dbh->commit();
117                    }
118          }          }
119                                
120      Header($Lang->{Burn_media}, "", 1, "", $cont);          Header($Lang->{Burn_media}, "", 1, "", $cont);
121      Trailer();          Trailer();
122      $dbh -> disconnect();          $dbh->disconnect();
123    }  }
124    
125  1;  1;

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

  ViewVC Help
Powered by ViewVC 1.1.26