display limits in search, easier to understand filter generator (and correct
[BackupPC.git] / lib / BackupPC / CGI / SearchArchives.pm
1 ####################################################################
2 #  SearchArchives.pm - module for searching through archived files #
3 #                      via a sqlite database                       #
4 ####################################################################
5 package BackupPC::CGI::SearchArchives;
6
7
8 use strict;
9 use BackupPC::CGI::Lib qw(:all);
10 use BackupPC::SearchLib;
11 use Data::Dumper;
12 use vars qw($Cgi %In $MyURL $User %Conf $TopDir $BinDir $bpc);
13
14 sub action() {
15     my $cont = "";
16     my $host;
17     my @hosts;
18     my $hosts_html = "";
19
20     
21     BackupPC::CGI::Lib::NewRequest();
22
23     @hosts = BackupPC::SearchLib::getUnits();
24     if ( !defined($In{search_results}) ) {
25         foreach $host (@hosts) {
26             $hosts_html .=
27                 "<option value="
28               . $host->{'ID'} . "> "
29               . $host->{'name'}
30               . " </option>\n";
31         }
32         my $title = eval(q{ ${h1("Search")}});
33         my $subtitle = eval(q{ ${h2("Search criteria")}});
34
35         sub date_from_to_html {
36                 my $name = shift || return;
37                 return qq{
38 <table>
39 <tr>
40         <td colspan="3" align="center">from</a>
41         <td>&nbsp;</td>
42         <td colspan="3" align="center">to</a>
43 </tr>
44 <tr>
45         <td align="center">dd</td>
46         <td align="center">mm</td>
47         <td align="center">yyyy</td>
48         <td align="center">&nbsp;</td>
49         <td align="center">dd</td>
50         <td align="center">mm</td>
51         <td align="center">yyyy</td>
52 </tr>
53 <tr>
54         <td><input type="text" name="${name}_day_from" size="2"></td>
55         <td><input type="text" name="${name}_month_from" size="2"></td>
56         <td><input type="text" name="${name}_year_from" size="4"></td>
57         <td>&nbsp;-&nbsp;</td>
58         <td><input type="text" name="${name}_day_to" size="2"></td>
59         <td><input type="text" name="${name}_month_to" size="2"></td>
60         <td><input type="text" name="${name}_year_to" size="4"></td>
61 </tr>   
62 </table>
63                 };
64         }
65
66         $cont .= qq{
67 <form name="searchForm" method="GET" action="$MyURL">
68 $title
69 $subtitle
70 <table border="0" width="100%">
71 <tr>
72         <td>Share:</td>
73         <td><select name="search_host">$hosts_html</select></td>
74 </tr>
75 <tr class="fviewborder">
76         <td>All file(s) between:</td>
77         <td>} . date_from_to_html('search') . qq{</td>
78 </tr>
79 <tr>
80         <td>All backups between:</td>
81         <td>} . date_from_to_html('search_backup') . qq{</td>
82 </tr>
83 <tr class="fviewborder">
84         <td>Filename:</td>
85         <td><input type="text" name="search_filename" size="25"></td>
86 </tr>
87 </table>
88
89 <input type="submit" value="Search">
90 <input type="hidden" value="search" name="action">
91 <input type="hidden" value="results" name="search_results">
92 </form>
93         };
94     }
95     else {
96         $cont = eval(q{ ${h1("Search")}});
97         $cont .= eval(q{ ${h2("Search results")}});
98         my $result;
99         my $rows = "";
100
101         my ($where, $from_f, $to_f, $from_b, $to_b) = BackupPC::SearchLib::getWhere(\%In);
102
103         my $q = $In{'search_filename'};
104
105         $cont .= "<small>";
106         $cont .= "Filename filter: $q</br>" if ($q);
107         $cont .= "Files date limit: $from_f - $to_f</br>" if ($from_f && $to_f);
108         $cont .= "Backup date limit: $from_b - $to_b</br>" if ($from_b && $to_b);
109         $cont .= "</small>";
110
111         my $grid = BackupPC::SearchLib::displayGrid( $where, 1, $In{'offset'}, $q);
112         $cont .= $grid;
113     }
114     Header( eval("qq{$Lang->{Search_archive}}"), "", 1, "", $cont );
115     Trailer();
116 }
117
118 1;