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 }) {
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>";
}