X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FBackupPC%2FSearch.pm;h=c72c54b14cbb79bb5355765827161e3c60df0d64;hb=8e42686e585ba0d7fa38cd2e19944f178d9ff9de;hp=888a8530cdf24ba1ab6e693ff45adb2346c6429b;hpb=d1bfa4d92bec24954f2e7877f6531644bb84e8f3;p=BackupPC.git diff --git a/lib/BackupPC/Search.pm b/lib/BackupPC/Search.pm index 888a853..c72c54b 100644 --- a/lib/BackupPC/Search.pm +++ b/lib/BackupPC/Search.pm @@ -374,35 +374,6 @@ sub getGzipSize($$) ); } -sub getVolumes($) { - my $id = shift; - - my $max_archive_size = $Conf{ArchiveMediaSize} || die "no ArchiveMediaSize"; - - my $sth = $dbh->prepare(qq{ - select - size - from backup_parts - where backup_id = ? - order by part_nr asc - }); - - $sth->execute($id); - - my $cumulative_size = 0; - my $volumes = 1; - - while(my ($size) = $sth->fetchrow_array) { - if ($cumulative_size + $size > $max_archive_size) { - $volumes++; - $cumulative_size = $size; - } else { - $cumulative_size += $size; - } - } - - return ($volumes,$cumulative_size); -} sub getBackupsNotBurned($) { @@ -414,36 +385,27 @@ sub getBackupsNotBurned($) { print STDERR "## sort=". ($param->{'sort'} || 'no sort param') . " burn sql order: $order\n"; my $sql = qq{ - SELECT - backups.hostID AS hostID, - hosts.name AS host, - shares.name AS share, - backups.num AS backupnum, - backups.type AS type, - backups.date AS date, - date_part('epoch',now()) - backups.date as age, - backups.size AS size, - backups.id AS id, - backups.inc_size AS inc_size, - backups.parts AS parts - FROM backups - INNER JOIN shares ON backups.shareID=shares.ID - INNER JOIN hosts ON backups.hostID = hosts.ID - LEFT OUTER JOIN archive_backup ON archive_backup.backup_id = backups.id - WHERE backups.inc_size > 0 AND backups.size > 0 AND backups.inc_deleted is false AND archive_backup.backup_id IS NULL AND backups.parts > 0 - GROUP BY - backups.hostID, - hosts.name, - shares.name, - backups.num, - backups.shareid, - backups.id, - backups.type, - backups.date, - backups.size, - backups.inc_size, - backups.parts - ORDER BY $order + SELECT + p.id, + p.filename, + b.date, + date_part('epoch',now()) - b.date as age, + p.size, + count(ap.*) as scheduled, + count(ab.*) as burned + FROM backup_parts p + JOIN backups b ON b.id = p.backup_id + LEFT OUTER JOIN archive_parts ap ON ap.backup_part_id = p.id + LEFT OUTER JOIN archive_burned ab ON ab.archive_id = ap.archive_id + GROUP BY p.id,filename,b.date,age,p.size,p.part_nr + }; + + $sql .= qq{ + HAVING count(ap.*) = 0 + } unless $param->{scheduled}; + + $sql .= qq{ + ORDER BY b.date,p.part_nr }; my $sth = $dbh->prepare( $sql ); my @ret; @@ -452,17 +414,6 @@ print STDERR "## sort=". ($param->{'sort'} || 'no sort param') . " burn sql orde while ( my $row = $sth->fetchrow_hashref() ) { $row->{'age'} = sprintf("%0.1f", ( $row->{'age'} / 86400 ) ); #$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ); - - my $max_archive_size = $Conf{ArchiveMediaSize} || die "no ArchiveMediaSize"; - if ($row->{size} > $max_archive_size) { - ($row->{volumes}, $row->{inc_size_calc}) = getVolumes($row->{id}); - } - - $row->{size} = sprintf("%0.2f", $row->{size} / 1024 / 1024); - - # do some cluster calculation (approximate) - $row->{inc_size} = int(( ($row->{inc_size} + 1023 ) / 2 ) * 2); - $row->{inc_size_calc} ||= $row->{inc_size}; push @ret, $row; } @@ -476,670 +427,654 @@ sub displayBackupsGrid($) { my $max_archive_size = $Conf{ArchiveMediaSize} || die "no ArchiveMediaSize"; my $max_archive_file_size = $Conf{ArchiveChunkSize} || die "no MaxFileInSize"; - my $retHTML .= q{ -
"; - - return $retHTML; -} + $retHTML .= ""; -sub displayGrid($) { - my ($param) = @_; + return $retHTML; +} - my $offset = $param->{'offset'}; - my $hilite = $param->{'search_filename'}; +my @units = qw/b k M G/; +sub unit { + my $v = shift; - my $retHTML = ""; - - my $start_t = time(); + my $o = 0; - my ($results, $files); - if ($param->{'use_hest'} && length($hilite) > 0) { - ($results, $files) = getFilesHyperEstraier($param); - } else { - ($results, $files) = getFiles($param); + while ( ( $v / 10000 ) >= 1 ) { + $o++; + $v /= 1024; } - my $dur_t = time() - $start_t; - my $dur = sprintf("%0.4fs", $dur_t); - - my ($from, $to) = (($offset * $on_page) + 1, ($offset * $on_page) + $on_page); - - if ($results <= 0) { - $retHTML .= qq{ -No results found...
- }; - return $retHTML; + if ( $v >= 1 ) { + return sprintf("%d%s", $v, $units[$o]); + } elsif ( $v == 0 ) { + return 0; } else { - # DEBUG - #use Data::Dumper; - #$retHTML .= '' . Dumper($files) . ''; + return sprintf("%.1f%s", $v, $units[$o]); } +} +1; - $retHTML .= qq{ -
- }; - - sub sort_header($$$$) { - my ($param, $display, $name, $align) = @_; - - my ($sort_what, $sort_direction) = split(/_/,$param->{'sort'},2); - - my $old_sort = $param->{'sort'}; - - my $html = qq{ | {'sort'} = $name . '_' . $direction;
- $html .= ' style="border: 1px solid #808080;"';
-
- # add unicode arrow for direction
- $arrow .= ' ';
- $arrow .= $direction eq 'a' ? '▲'
- : $direction eq 'd' ? '▼'
- : ''
- ;
+
+
+
+
+
+Size: kB
+
+
+
+
+
+0%
++ + |