/[BackupPC]/trunk/lib/BackupPC/SearchLib.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/SearchLib.pm

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

revision 146 by iklaric, Fri Oct 7 12:03:05 2005 UTC revision 187 by iklaric, Wed Oct 12 13:14:06 2005 UTC
# Line 8  use DBI; Line 8  use DBI;
8  use DateTime;  use DateTime;
9  use vars qw(%In $MyURL);  use vars qw(%In $MyURL);
10  use Time::HiRes qw/time/;  use Time::HiRes qw/time/;
11    use XML::Writer;
12    use IO::File;
13    
14  my $on_page = 100;  my $on_page = 100;
15  my $pager_pages = 10;  my $pager_pages = 10;
# Line 68  sub dates_from_form($) { Line 70  sub dates_from_form($) {
70                  $mm =~ s/\D//g;                  $mm =~ s/\D//g;
71                  $dd =~ s/\D//g;                  $dd =~ s/\D//g;
72    
73                    my $h = my $m = my $s = 0;
74                    if ($suffix eq 'to') {
75                            $h = 23;
76                            $m = 59;
77                            $s = 59;
78                    }
79    
80                  my $dt = new DateTime(                  my $dt = new DateTime(
81                          year => $yyyy,                          year => $yyyy,
82                          month => $mm,                          month => $mm,
83                          day => $dd                          day => $dd,
84                            hour => $h,
85                            minute => $m,
86                            second => $s,
87                  );                  );
88                  print STDERR "mk_epoch_date($name,$suffix) [$yyyy-$mm-$dd] = " . $dt->ymd . " " . $dt->hms . "\n";                  print STDERR "mk_epoch_date($name,$suffix) [$yyyy-$mm-$dd] = " . $dt->ymd . " " . $dt->hms . "\n";
89                  return $dt->epoch || 'NULL';                  return $dt->epoch || 'NULL';
# Line 100  sub getWhere($) { Line 112  sub getWhere($) {
112          push @conditions, qq{ files.date >= $files_from } if ($files_from);          push @conditions, qq{ files.date >= $files_from } if ($files_from);
113          push @conditions, qq{ files.date <= $files_to } if ($files_to);          push @conditions, qq{ files.date <= $files_to } if ($files_to);
114    
115          print STDERR "backup: $backup_from - $backup_to files: $files_from - $files_to cond:" . join(" | ",@conditions);          print STDERR "backup: $backup_from - $backup_to files: $files_from - $files_to cond:" . join(" and ",@conditions);
116    
117          push( @conditions, ' files.shareid = ' . $param->{'search_share'} ) if ($param->{'search_share'});          push( @conditions, ' files.shareid = ' . $param->{'search_share'} ) if ($param->{'search_share'});
118          push (@conditions, " upper(files.path) LIKE upper('%".$param->{'search_filename'}."%')") if ($param->{'search_filename'});          push (@conditions, " upper(files.path) LIKE upper('%".$param->{'search_filename'}."%')") if ($param->{'search_filename'});
# Line 288  sub getGzipName($$$) Line 300  sub getGzipName($$$)
300          $ret =~ s/\\h/$host/ge;          $ret =~ s/\\h/$host/ge;
301          $ret =~ s/\\s/$share/ge;          $ret =~ s/\\s/$share/ge;
302          $ret =~ s/\\n/$backupnum/ge;          $ret =~ s/\\n/$backupnum/ge;
303            
304            $ret =~ s/__+/_/g;
305    
306          return $ret;          return $ret;
307                    
308  }  }
# Line 296  sub getGzipName($$$) Line 310  sub getGzipName($$$)
310  sub getGzipSize($$)  sub getGzipSize($$)
311  {  {
312          my ($hostID, $backupNum) = @_;          my ($hostID, $backupNum) = @_;
         my $ret;  
313          my $sql;          my $sql;
314          my $dbh = get_dbh();          my $dbh = get_dbh();
315                    
# Line 335  sub getBackupsNotBurned() { Line 348  sub getBackupsNotBurned() {
348                          backups.type AS type,                          backups.type AS type,
349                          backups.date AS date,                          backups.date AS date,
350                          backups.size AS size,                          backups.size AS size,
351                          backups.id AS id                          backups.id AS id,
352                            backups.inc_size AS inc_size
353                  FROM backups                  FROM backups
354                  INNER JOIN shares       ON backups.shareID=shares.ID                  INNER JOIN shares       ON backups.shareID=shares.ID
355                  INNER JOIN hosts        ON backups.hostID = hosts.ID                  INNER JOIN hosts        ON backups.hostID = hosts.ID
356                  LEFT OUTER JOIN archive_backup ON archive_backup.backup_id = backups.id                  LEFT OUTER JOIN archive_backup ON archive_backup.backup_id = backups.id
357                  WHERE backups.size > 0 AND archive_backup.backup_id IS NULL                  WHERE backups.inc_size > 0 AND backups.inc_deleted is false AND archive_backup.backup_id IS NULL
358                  GROUP BY                  GROUP BY
359                          backups.hostID,                          backups.hostID,
360                          hosts.name,                          hosts.name,
# Line 350  sub getBackupsNotBurned() { Line 364  sub getBackupsNotBurned() {
364                          backups.id,                          backups.id,
365                          backups.type,                          backups.type,
366                          backups.date,                          backups.date,
367                          backups.size                          backups.size,
368                            backups.inc_size
369                  ORDER BY backups.date                  ORDER BY backups.date
370          };          };
371          my $sth = $dbh->prepare( $sql );          my $sth = $dbh->prepare( $sql );
# Line 360  sub getBackupsNotBurned() { Line 375  sub getBackupsNotBurned() {
375          while ( my $row = $sth->fetchrow_hashref() ) {          while ( my $row = $sth->fetchrow_hashref() ) {
376                  $row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) );                  $row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) );
377                  $row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024);                  $row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024);
378                  my (undef,undef,undef,undef,undef,undef,undef,$fs_size,undef,undef,undef,undef,undef) =  
379                          stat( $Conf{InstallDir}.'/'.$Conf{GzipTempDir}.'/'.                  # do some cluster calculation (approximate) and convert to kB
380                                  getGzipName($row->{'host'}, $row->{share}, $row->{'backupnum'}));                  $row->{'inc_size'} = int(($row->{'inc_size'} + 1023 ) / ( 2 * 1024 ) * 2);
                 $row->{'fs_size'} = $fs_size;  
381                  push @ret, $row;                  push @ret, $row;
382          }          }
383                
# Line 483  DIV#fixedBox #submitBurner { Line 497  DIV#fixedBox #submitBurner {
497  <!--  <!--
498    
499  var debug_div = null;  var debug_div = null;
500  var media_size = 4400 * 1024;  EOF3
501    
502            # take maximum archive size from configuration
503            $retHTML .= 'var media_size = '. $Conf{MaxArchiveSize} .';';
504    
505            $retHTML .= <<'EOF3';
506    
507  function debug(msg) {  function debug(msg) {
508  //      return; // Disable debugging  //      return; // Disable debugging
# Line 681  EOF3 Line 700  EOF3
700                          <td align="center">date</td>                          <td align="center">date</td>
701                          <td align="center">age/days</td>                          <td align="center">age/days</td>
702                          <td align="center">size/MB</td>                          <td align="center">size/MB</td>
703                          <td align="center">gzip size</td>                          <td align="center">gzip size/kB</td>
704                          </tr>                          </tr>
705    
706          };          };
# Line 705  EOF3 Line 724  EOF3
724                          '<tr' . $color[$i %2 ] . '>                          '<tr' . $color[$i %2 ] . '>
725                          <td class="fview">';                          <td class="fview">';
726    
727                  # FIXME                  if (($backup->{'inc_size'} || 0) > 0) {
                 $backup->{'fs_size'} = int($backup->{'size'} * 1024);  
   
                 if (($backup->{'fs_size'} || 0) > 0) {  
728                          $retHTML .= '                          $retHTML .= '
729                          <input type="checkbox" name="fcb' . $checkbox_key . '" value="' . $checkbox_key . '" onClick="sumiraj(this);">';                          <input type="checkbox" name="fcb' . $checkbox_key . '" value="' . $checkbox_key . '" onClick="sumiraj(this);">';
730                  }                  }
# Line 721  EOF3 Line 737  EOF3
737                          '<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .                          '<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .
738                          '<td align="center">' . $backup->{'age'} . '</td>' .                          '<td align="center">' . $backup->{'age'} . '</td>' .
739                          '<td align="right">' . $backup->{'size'} . '</td>' .                          '<td align="right">' . $backup->{'size'} . '</td>' .
740                          '<td align="right">' . $backup->{'fs_size'} .                          '<td align="right">' . $backup->{'inc_size'} .
741                          '<input type="hidden" iD="fss'.$checkbox_key .'" value="'. $backup->{'fs_size'} .'"></td>' .                          '<input type="hidden" iD="fss'.$checkbox_key .'" value="'. $backup->{'inc_size'} .'"></td>' .
742    
743                          "</tr>\n";                          "</tr>\n";
744          }          }
# Line 881  sub displayGrid($) { Line 897  sub displayGrid($) {
897          return $retHTML;          return $retHTML;
898  }  }
899    
900    sub dumpArchive2XML($$)
901    {
902            my ($arcID, $filename) = @_;
903            my $dbh;
904            my $sth;
905            my $sth_backups;
906            my $sth_files;
907            my $row;
908            my $row_backups;
909            my $row_files;
910            my %archive;    
911            my $output = new IO::File(">$filename");
912            my $writer = new XML::Writer(OUTPUT=>$output, NEWLINES => 1);
913    
914    
915            $dbh = get_dbh();
916    #       my $bpc = BackupPC::Lib->new(undef, undef, 1) || die;
917    #       my %Conf = $bpc->Conf();
918    
919    #       my $dsn = $Conf{SearchDSN} || die "Need SearchDSN in config.pl\n";
920    #       my $user = $Conf{SearchUser} || '';
921    
922            my $files_sql = q{
923                                                            SELECT
924                                                                    files.name AS filename,
925                                                                    files.path AS filepath,
926                                                                    files.date AS filedate,
927                                                                    files.type AS filetype,
928                                                                    files.size AS filesize
929                                                            FROM files, backups, shares
930                                                            WHERE files.backupnum=backups.num AND
931                                                                      files.shareid=shares.id AND
932                                                                      shares.hostid=backups.hostid AND
933                                                                      backups.id=?                                                            
934                                                     };
935    
936            my $backups_sql = q{
937                                                            SELECT backups.id   AS backupid,
938                                                                            hosts.name   AS hostname,
939                                                                   backups.num  AS backupnum,
940                                                                   backups.date AS backupdate,
941                                                                   backups.type AS backuptype,
942                                                                   shares.name  AS sharename,
943                                                                   backups.size AS backupsize,
944                                                                   backups.inc_size AS inc_size,
945                                                                   backups.inc_deleted AS inc_deleted
946                                                            FROM backups, archive_backup, hosts, shares
947                                                            WHERE archive_backup.backup_id = backups.id
948                                                                   AND hosts.id=backups.hostid
949                                                                   AND shares.id=backups.shareid
950                                                                   AND archive_backup.archive_id = ?
951                                                  };
952            
953            $dbh = DBI->connect($dsn, $user, "", { RaiseError => 1, AutoCommit => 1 });
954    
955            $sth = $dbh->prepare("SELECT dvd_nr, total_size, note, username, date FROM archive WHERE ID=?");
956            $sth->execute($arcID);
957            $row = $sth->fetchrow_hashref();
958            $writer->startTag("archive", "dvd_nr"     => $row->{'dvd_nr'},
959                                         "total_size" => $row->{'total_size'},
960                                         "username"   => $row->{'username'},
961                                         "date"       => $row->{'date'}
962                             );
963    
964    
965            $writer->startTag("note");
966            $writer->characters( $row->{'note'});
967            $writer->endTag("note");
968            $sth_backups = $dbh->prepare( $backups_sql );
969            $sth_backups->execute($arcID);
970            while ($row_backups = $sth_backups->fetchrow_hashref())
971            {
972                    $writer->startTag("backup",
973                                            "host" => $row_backups->{'hostname'},
974                                                        "num"  => $row_backups->{'backupnum'},
975                                                        "date" => $row_backups->{'backupdate'},
976                                                        "type" => $row_backups->{'backuptype'},
977                                                        "share"=> $row_backups->{'sharename'},
978                                                        "size" => $row_backups->{'backupsize'},
979                                                        "inc_size" => $row_backups->{'inc_size'},
980                                                        "inc_deleted" => $row_backups->{'inc_deleted'}
981                                     );
982                                    
983                    $sth_files = $dbh->prepare(
984                                                            $files_sql
985                                             );
986                    $sth_files->execute($row_backups->{'backupid'});
987                    while ($row_files = $sth_files->fetchrow_hashref())
988                    {
989                            $writer->startTag("file",
990                                                                     "path" => $row_files->{'filepath'},
991                                                                     "date" => $row_files->{'filedate'},
992                                                                     "type" => $row_files->{'filetype'},
993                                                                     "size" => $row_files->{'filesize'}
994                                                            );
995                            $writer->characters( $row_files->{'filename'});
996                            $writer->endTag("file");
997                    }
998                    $writer->endTag("backup");
999            }      
1000                            
1001            $writer->endTag("archive");
1002            $writer->end();
1003            
1004    }
1005    
1006  1;  1;

Legend:
Removed from v.146  
changed lines
  Added in v.187

  ViewVC Help
Powered by ViewVC 1.1.26