r8601@llin: dpavlin | 2005-10-15 21:00:32 +0200
authordpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Sun, 16 Oct 2005 10:57:51 +0000 (10:57 +0000)
committerdpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Sun, 16 Oct 2005 10:57:51 +0000 (10:57 +0000)
 added check_archived to lookup (and cache) media on which is file

git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@209 8392b6e1-25fa-0310-8288-cc32f8e212ea

lib/BackupPC/SearchLib.pm

index 6719ab9..217be98 100644 (file)
@@ -862,6 +862,46 @@ sub displayGrid($) {
                return sprintf(qq{<a href="?action=%s&host=%s&num=%d&share=%s&dir=%s">%s</a>}, $action, @_);
        }
 
+       my $sth_archived;
+       my %archived_cache;
+
+       sub check_archived($$$) {
+               my ($host, $share, $num) = @_;
+
+               if (my $html = $archived_cache{"$host $share $num"}) {
+                       return $html;
+               }
+
+               $sth_archived ||= $dbh->prepare(qq{
+                       select
+                               dvd_nr, note,
+                               count(archive_burned.copy) as copies
+                       from archive
+                       inner join archive_burned on archive_burned.archive_id = archive.id
+                       inner join archive_backup on archive.id = archive_backup.archive_id
+                       inner join backups on backups.id = archive_backup.backup_id
+                       inner join hosts on hosts.id = backups.hostid
+                       inner join shares on shares.id = backups.shareid
+                       where hosts.name = ? and shares.name = ? and backups.num = ?
+                       group by dvd_nr, note
+               });
+
+               my @mediums;
+
+               $sth_archived->execute($host, $share, $num);
+               while (my $row = $sth_archived->fetchrow_hashref()) {
+                       push @mediums, '<abbr title="' .
+                               $row->{'note'} .
+                               ' [' . $row->{'copies'} . ']' .
+                               '">' .$row->{'dvd_nr'} .
+                               '</abbr>';
+               }
+
+               my $html = join(", ",@mediums);
+               $archived_cache{"$host $share $num"} = $html;
+               return $html;
+       }
+
        my $i = $offset * $on_page;
 
        foreach $file (@{ $files }) {
@@ -878,7 +918,7 @@ sub displayGrid($) {
                        qq{<td class="fviewborder" align="center">} . restore_link( $typeStr, ${EscURI( $file->{'hname'} )}, $file->{'backupnum'}, ${EscURI( $file->{'sname'})}, ${EscURI( $file->{'filepath'} )}, $file->{'backupnum'} ) . qq{</td>} .
                        qq{<td class="fviewborder" align="right">} . $file->{'size'} . qq{</td>} .
                        qq{<td class="fviewborder">} . epoch_to_iso( $file->{'date'} ) . qq{</td>} .
-                       qq{<td class="fviewborder">} . '?' . qq{</td>};
+                       qq{<td class="fviewborder">} . check_archived( $file->{'hname'}, $file->{'sname'}, $file->{'backupnum'} ) . qq{</td>};
 
                $retHTML .= "</tr>";
        }