195 |
my $q = $param->{'search_filename'}; |
my $q = $param->{'search_filename'}; |
196 |
my $shareid = $param->{'search_share'}; |
my $shareid = $param->{'search_share'}; |
197 |
|
|
198 |
if ($q) { |
if (length($q) > 0) { |
199 |
$q =~ s/(.)/$1 /g; |
# exact match |
200 |
|
$cond->add_attr("filepath ISTRINC $q"); |
201 |
|
|
202 |
|
$q =~ s/(.)/$1 /g; |
203 |
# set the search phrase to the search condition object |
# set the search phrase to the search condition object |
204 |
$cond->set_phrase($q); |
$cond->set_phrase($q); |
205 |
} |
} |
241 |
return ($hits, \@res); |
return ($hits, \@res); |
242 |
} |
} |
243 |
|
|
244 |
|
sub getGzipName($$$) |
245 |
|
{ |
246 |
|
my ($host, $share, $backupnum) = @_; |
247 |
|
my $ret = $Conf{GzipSchema}; |
248 |
|
|
249 |
|
$share =~ s/\//_/g; |
250 |
|
$ret =~ s/\\h/$host/ge; |
251 |
|
$ret =~ s/\\s/$share/ge; |
252 |
|
$ret =~ s/\\n/$backupnum/ge; |
253 |
|
|
254 |
|
return $ret; |
255 |
|
|
256 |
|
} |
257 |
|
|
258 |
sub getBackupsNotBurned() { |
sub getBackupsNotBurned() { |
259 |
|
|
260 |
my $dbh = get_dbh(); |
my $dbh = get_dbh(); |
262 |
SELECT |
SELECT |
263 |
backups.hostID AS hostid, |
backups.hostID AS hostid, |
264 |
min(hosts.name) AS host, |
min(hosts.name) AS host, |
265 |
|
min(shares.name) AS share, |
266 |
backups.num AS backupnum, |
backups.num AS backupnum, |
267 |
min(backups.type) AS type, |
min(backups.type) AS type, |
268 |
min(backups.date) AS date, |
min(backups.date) AS date, |
272 |
INNER JOIN hosts ON hosts.ID = shares.hostID |
INNER JOIN hosts ON hosts.ID = shares.hostID |
273 |
INNER JOIN backups ON backups.num = files.backupnum and backups.hostID = hosts.ID AND backups.shareID = shares.ID |
INNER JOIN backups ON backups.num = files.backupnum and backups.hostID = hosts.ID AND backups.shareID = shares.ID |
274 |
GROUP BY |
GROUP BY |
275 |
backups.hostID, backups.num |
backups.hostID, backups.num, backups.shareid |
276 |
ORDER BY min(backups.date) |
ORDER BY min(backups.date) |
277 |
}; |
}; |
278 |
my $sth = $dbh->prepare( $sql ); |
my $sth = $dbh->prepare( $sql ); |
282 |
while ( my $row = $sth->fetchrow_hashref() ) { |
while ( my $row = $sth->fetchrow_hashref() ) { |
283 |
$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ); |
$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ); |
284 |
$row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024); |
$row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024); |
285 |
|
my (undef,undef,undef,undef,undef,undef,undef,$fs_size,undef,undef,undef,undef,undef) = |
286 |
|
stat( $Conf{InstallDir}.'/'.$Conf{GzipTempDir}.'/'. |
287 |
|
getGzipName($row->{'host'}, $row->{share}, $row->{'backupnum'})); |
288 |
|
$row->{'fs_size'} = $fs_size; |
289 |
push @ret, $row; |
push @ret, $row; |
290 |
} |
} |
291 |
|
|
295 |
sub displayBackupsGrid() |
sub displayBackupsGrid() |
296 |
{ |
{ |
297 |
my $retHTML = ""; |
my $retHTML = ""; |
|
my $addForm = 1; |
|
298 |
|
|
299 |
if ($addForm) { |
$retHTML .= <<EOF3; |
|
|
|
|
$retHTML .= <<EOF3; |
|
300 |
<script language="javascript" type="text/javascript"> |
<script language="javascript" type="text/javascript"> |
301 |
<!-- |
<!-- |
302 |
|
|
317 |
//--> |
//--> |
318 |
</script> |
</script> |
319 |
EOF3 |
EOF3 |
320 |
$retHTML .= q{<form name="forma" method="GET" action="}."$MyURL"."?action=burn\""; |
$retHTML .= q{ |
321 |
$retHTML.= q{<input type="hidden" value="burn" name="action">}; |
<form name="forma" method="GET" action="$MyURL?action=burn"> |
322 |
$retHTML .= q{<input type="hidden" value="results" name="search_results">}; |
<input type="hidden" value="burn" name="action"> |
323 |
} |
<input type="hidden" value="results" name="search_results"> |
324 |
$retHTML .= qq{ |
<table style="fview" border="0" cellspacing="0" cellpadding="2"> |
|
<table style="fview" border="1" cellspacing="0" cellpadding="3"> |
|
325 |
<tr class="tableheader"> |
<tr class="tableheader"> |
326 |
}; |
<td class="tableheader"> |
327 |
|
<input type="checkbox" name="allFiles" onClick="checkAll('allFiles');"> |
328 |
if ($addForm) { |
</td> |
329 |
$retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>"; |
<td align="center">Share</td> |
|
} |
|
|
$retHTML .= qq{ |
|
|
<td align="center">Host</td> |
|
330 |
<td align="center">Backup no</td> |
<td align="center">Backup no</td> |
331 |
<td align="center">Type</td> |
<td align="center">Type</td> |
332 |
<td align="center">date</td> |
<td align="center">date</td> |
333 |
<td align="center">age/days</td> |
<td align="center">age/days</td> |
334 |
<td align="center">size/MB</td> |
<td align="center">size/MB</td> |
335 |
|
<td align="center">gzip size</td> |
336 |
</tr> |
</tr> |
337 |
|
|
338 |
|
<tr><td colspan=7 style="tableheader"> |
339 |
|
<input type="submit" value="Burn selected backups on medium" name="submitBurner"> |
340 |
|
</td></tr> |
341 |
}; |
}; |
342 |
|
|
343 |
my @backups = getBackupsNotBurned(); |
my @color = (' bgcolor="#e0e0e0"', ''); |
|
my $backup; |
|
344 |
|
|
345 |
if ($addForm) { |
my $i = 0; |
346 |
$retHTML .= qq{ |
my $host = ''; |
|
<tr><td colspan=7 style="tableheader"> |
|
|
<input type="submit" value="Burn selected backups on medium" name="submitBurner"> |
|
|
</td></tr> |
|
|
}; |
|
|
} |
|
347 |
|
|
348 |
foreach $backup(@backups) { |
foreach my $backup ( getBackupsNotBurned() ) { |
349 |
|
|
350 |
|
if ($host ne $backup->{'host'}) { |
351 |
|
$i++; |
352 |
|
$host = $backup->{'host'}; |
353 |
|
} |
354 |
my $ftype = ""; |
my $ftype = ""; |
355 |
|
|
356 |
$retHTML .= "<tr>"; |
$retHTML .= "<tr" . $color[$i %2 ] . ">"; |
357 |
if ($addForm) { |
$retHTML .= '<td class="fview"><input type="checkbox" name="fcb' . |
|
$retHTML .= '<td class="fview"><input type="checkbox" name="fcb' . |
|
358 |
$backup->{'hostid'}.'_'.$backup->{'backupnum'} . |
$backup->{'hostid'}.'_'.$backup->{'backupnum'} . |
359 |
'" value="' . $backup->{'hostid'}.'_'.$backup->{'backupnum'} . |
'" value="' . $backup->{'hostid'}.'_'.$backup->{'backupnum'} . |
360 |
'"></td>'; |
'"></td>'; |
|
} |
|
361 |
|
|
362 |
$retHTML .= '<td class="fviewborder">' . $backup->{'host'} . '</td>' . |
$retHTML .= |
363 |
'<td class="fviewborder">' . $backup->{'backupnum'} . '</td>' . |
'<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' . |
364 |
'<td class="fviewborder">' . $backup->{'type'} . '</td>' . |
'<td align="center">' . $backup->{'backupnum'} . '</td>' . |
365 |
'<td class="fviewborder">' . epoch_to_iso( $backup->{'date'} ) . '</td>' . |
'<td align="center">' . $backup->{'type'} . '</td>' . |
366 |
'<td class="fviewborder">' . $backup->{'age'} . '</td>' . |
'<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' . |
367 |
'<td class="fviewborder">' . $backup->{'size'} . '</td>' . |
'<td align="center">' . $backup->{'age'} . '</td>' . |
368 |
'</tr>'; |
'<td align="right">' . $backup->{'size'} . '</td>' . |
369 |
} |
'<td align="right">' . $backup->{'fs_size'} .'</td>' . |
370 |
|
"</tr>\n"; |
371 |
|
|
|
$retHTML .= "</table>"; |
|
372 |
|
|
|
if ($addForm) { |
|
|
$retHTML .= "</form>"; |
|
373 |
} |
} |
374 |
|
|
375 |
|
$retHTML .= "</table>"; |
376 |
|
$retHTML .= "</form>"; |
377 |
|
|
378 |
return $retHTML; |
return $retHTML; |
379 |
} |
} |
389 |
my $start_t = time(); |
my $start_t = time(); |
390 |
|
|
391 |
my ($results, $files); |
my ($results, $files); |
392 |
if ($param->{'use_hest'}) { |
if ($param->{'use_hest'} && length($hilite) > 0) { |
393 |
($results, $files) = getFilesHyperEstraier($param); |
($results, $files) = getFilesHyperEstraier($param); |
394 |
} else { |
} else { |
395 |
($results, $files) = getFiles($param); |
($results, $files) = getFiles($param); |
451 |
my $typeStr = BackupPC::Attrib::fileType2Text(undef, $file->{'type'}); |
my $typeStr = BackupPC::Attrib::fileType2Text(undef, $file->{'type'}); |
452 |
$retHTML .= qq{<tr class="fviewborder">}; |
$retHTML .= qq{<tr class="fviewborder">}; |
453 |
|
|
454 |
$retHTML .= qq{<td>$i</td>}; |
$retHTML .= qq{<td class="fviewborder">$i</td>}; |
455 |
|
|
456 |
$retHTML .= |
$retHTML .= |
457 |
qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} . |
qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} . |