/[BackupPC]/trunk/lib/BackupPC/SearchLib.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/BackupPC/SearchLib.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16 by dpavlin, Mon Jul 11 11:51:09 2005 UTC revision 26 by dpavlin, Fri Jul 29 17:30:25 2005 UTC
# Line 4  package BackupPC::SearchLib; Line 4  package BackupPC::SearchLib;
4  use strict;  use strict;
5  use BackupPC::CGI::Lib qw(:all);  use BackupPC::CGI::Lib qw(:all);
6  use BackupPC::Attrib qw(:all);  use BackupPC::Attrib qw(:all);
 use Data::Dumper;  
7  use DBI;  use DBI;
8    
9  sub getUnits() {  sub getUnits() {
# Line 25  sub getUnits() { Line 24  sub getUnits() {
24  }  }
25    
26  sub getWhere($) {  sub getWhere($) {
27      my ($param)    = @_;          my ($param)    = @_;
28      my $retSQL     = "";          my @conditions;
     my @conditions = ();  
     my $cond;  
29    
30                sub mk_iso_date($$) {
31                      my ($name,$suffix) = @_;
       
     if ( defined( $param->{'search_backup_day_from'} ) && $param->{'search_backup_day_from'} ne "") {  
         push( @conditions,  
             ' strftime("%d", datetime(backups.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_backup_day_from'} ."\"");  
     }  
     if ( defined( $param->{'search_backup_day_to'} ) && $param->{'search_backup_day_to'} ne "") {  
         push( @conditions,  
             ' strftime("%d", datetime(backups.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_backup_day_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_backup_month_from'} ) && $param->{'search_backup_month_from'} ne "") {  
         push( @conditions,  
             ' strftime("%m", datetime(backups.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_backup_month_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_backup_month_to'} ) && $param->{'search_backup_month_to'} ne "") {  
         push( @conditions,  
             ' strftime("%m", datetime(backups.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_backup_month_to'}  ."\"");  
     }  
     if ( defined( $param->{'search_backup_year_from'} ) && $param->{'search_backup_year_from'} ne "") {  
         push( @conditions,  
             ' strftime("%Y", datetime(backups.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_backup_year_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_backup_year_to'} ) && $param->{'search_backup_year_to'} ne "") {  
         push( @conditions,  
             ' strftime("%Y", datetime(backups.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_backup_year_to'}  ."\"");  
     }  
32    
33      if ( defined( $param->{'search_day_from'} )   && $param->{'search_day_from'} ne "" ) {                  my $yyyy = $param->{ $name . '_year_' . $suffix} || return;
34          push( @conditions,                  my $mm .= $param->{ $name . '_month_' . $suffix} ||
35              ' strftime("%d", datetime(files.date, "unixepoch","localtime")) >= "'                          ( $suffix eq 'from' ? 1 : 12);
36                . $param->{'search_day_from'}  ."\"");                  my $dd .= $param->{ $name . '_day_' . $suffix} ||
37      }                          ( $suffix eq 'from' ? 1 : 31);
38      if ( defined( $param->{'search_month_from'} ) && $param->{'search_month_from'} ne "") {                  return sprintf("%04d-%02d-%02d", $yyyy, $mm, $dd);
39          push( @conditions,          }
             ' strftime("%m", datetime(files.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_month_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_year_from'} ) && $param->{'search_year_from'} ne "") {  
         push( @conditions,  
             ' strftime("%Y", datetime(files.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_year_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_day_to'} )   && $param->{'search_day_to'} ne "" ) {  
         push( @conditions,  
             ' strftime("%d", datetime(files.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_day_to'}  ."\"");  
     }  
     if ( defined( $param->{'search_month_to'} ) && $param->{'search_month_to'} ne "" ) {  
         push( @conditions,  
             ' strftime("%m", datetime(files.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_month_to'} ."\"" );  
     }  
     if ( defined( $param->{'search_year_to'} )&& $param->{'search_year_to'} ne "" )  {  
         push( @conditions,  
             ' strftime("%Y", datetime(files.date, "unixepoch","localtime")) <= "'  
               . $param->{'search_year_to'} ."\"");  
     }  
40    
41      if ( defined( $param->{'search_host'} ) && $param->{'search_host'} ne "") {          my $backup_from = mk_iso_date('search_backup', 'from');
42        push( @conditions, ' backups.hostID = ' . $param->{'search_host'} );          push @conditions, qq{ date(backups.date, 'unixepoch','localtime') >= '$backup_from' } if ($backup_from);
43      }          my $backup_to = mk_iso_date('search_backup', 'to');
44            push @conditions, qq{ date(backups.date, 'unixepoch','localtime') <= '$backup_to' } if ($backup_to);
45    
46            my $files_from = mk_iso_date('search', 'from');
47            push @conditions, qq{ date(files.date, 'unixepoch','localtime') >= '$files_from' } if ($files_from);
48            my $files_to = mk_iso_date('search', 'to');
49            push @conditions, qq{ date(files.date, 'unixepoch','localtime') <= '$files_to' } if ($files_to);
50    
51      if ( defined ($param->{'search_filename'}) && $param->{'search_filename'} ne "") {          print STDERR "backup: $backup_from - $backup_to files: $files_from - $files_to cond:",join(" | ",@conditions);
         push (@conditions, " files.name LIKE '".$param->{'search_filename'}."%'");  
         }  
52            
53      $retSQL = "";          push( @conditions, ' backups.hostID = ' . $param->{'search_host'} ) if ($param->{'search_host'});
     foreach $cond(@conditions)  
       {  
           if ($retSQL ne "")  
             {  
                 $retSQL .= " AND ";  
             }  
           $retSQL .= $cond;  
       }        
54    
55                push (@conditions, " upper(files.name) LIKE upper('%".$param->{'search_filename'}."%')") if ($param->{'search_filename'});
56      return $retSQL;  
57            return (
58                    join(" and ", @conditions),
59                    $files_from, $files_to,
60                    $backup_from, $backup_to
61            );
62  }  }
63    
64    
65  sub getFiles($$)  sub getFiles($$)
66    {    {
67        my ($where, $offset) = @_;        my ($where, $offset) = @_;
# Line 141  sub getFiles($$) Line 86  sub getFiles($$)
86                  FROM files                  FROM files
87                          INNER JOIN shares       ON files.shareID=shares.ID                          INNER JOIN shares       ON files.shareID=shares.ID
88                          INNER JOIN hosts        ON hosts.ID = shares.hostID                          INNER JOIN hosts        ON hosts.ID = shares.hostID
89                            INNER JOIN backups      ON backups.num = files.backupNum and backups.hostID = hosts.ID
90                          LEFT  JOIN dvds         ON dvds.ID = files.dvdid                          LEFT  JOIN dvds         ON dvds.ID = files.dvdid
91            };            };
92    
# Line 320  EOF3 Line 266  EOF3
266        
267    }          }      
268    
269  sub displayGrid($$$)  sub displayGrid($$$$) {
270    {          my ($where, $addForm, $offset, $hilite) = @_;
271        my ($where, $addForm, $offset) = @_;          my $retHTML = "";
272        my $retHTML = "";  
273                  if ($addForm) {
274        if ($addForm)                  $retHTML .= qq{<form name="forma" method="POST" action="}.$MyURL.qq{?action=search">};
275          {                  $retHTML.= qq{<input type="hidden" value="search" name="action">};
276                $retHTML .= q{<form name="forma" method="POST" action="}."$MyURL"."?action=search\"";                  $retHTML .= qq{<input type="hidden" value="results" name="search_results">};
               $retHTML.= q{<input type="hidden" value="search" name="action">};  
               $retHTML .= q{<input type="hidden" value="results" name="search_results">};  
277          }          }
278        $retHTML .= "<table style=\"fview\">";          $retHTML .= qq{
279        $retHTML .= "<tr> ";          <table style="fview" width="100%">
280        $retHTML .=  "<td class=\"tableheader\">Host</td> <td class=\"tableheader\">Name</td> <td class=\"tableheader\">Type</td> <td class=\"tableheader\">backup no.</td> <td class=\"tableheader\">size</td> <td class=\"tableheader\">date</td>  <td class=\"tableheader\">Media</td></tr>";                  <tr>
281        my @files = getFiles($where, $offset);                  <td class="tableheader">Share</td>
282        my $file;                  <td class="tableheader">Name</td>
283                    <td class="tableheader">Type</td>
284                    <td class="tableheader">#</td>
285                    <td class="tableheader">Size</td>
286                    <td class="tableheader">Date</td>
287                    <td class="tableheader">Media</td>
288                    </tr>
289            };
290            my @files = getFiles($where, $offset);
291            my $file;
292    
293        foreach $file(@files)          sub hilite_html($$) {
294          {                  my ($html, $search) = @_;
295              my $ftype = "";                  $html =~ s#($search)#<b>$1</b>#gis;
296                                return $html;
             if ($file->{'type'} == BPC_FTYPE_DIR)  
               {  
                   $ftype = "dir";  
               }  
             else  
               {  
                   $ftype = "file";  
               }  
             $retHTML .= "<tr>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'hname'} ."</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'fname'} . "</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $ftype . "</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'backupno'} . "</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'size'} . "</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'date'} . "</td>";  
             $retHTML .= "<td class=\"fviewborder\">" . $file->{'dvd'} . "</td>";  
             $retHTML .= "</tr>";  
297          }          }
       $retHTML .= "</table>";  
298    
299                  sub restore_link($$$$$$) {
300                    my $type = shift;
301                    my $action = 'RestoreFile';
302                    $action = 'browse' if (lc($type) eq 'dir');
303                    return sprintf(qq{<a href="?action=%s&host=%s&num=%d&share=%s&dir=%s">%s</a>}, $action, @_);
304            }
305    
306        $retHTML .= "<INPUT TYPE=\"hidden\" VALUE=\"\" NAME=\"offset\">";          foreach $file (@files) {
307        for (my $ii = 1; $ii <= $#files; $ii++)                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});
308        {                  $retHTML .= "<tr>";
309            $retHTML .= "<a href = \"#\" onclick=\"document.forma.offset.value=$ii;document.forma.submit();\">$ii</a>";  
310            if ($ii < $#files)                  foreach my $v ((
311              {                          $file->{'sharename'},
312                  $retHTML .= " | ";                          qq{<img src="$Conf{CgiImageDirURL}/icon-$typeStr.gif" align="center">&nbsp;} . hilite_html( $file->{'fpath'}, $hilite ),
313              }                          $typeStr,
314        }                          restore_link( $typeStr, $file->{'hname'}, $file->{'backupno'}, $file->{'sname'}, $file->{'fpath'}, $file->{'backupno'} ),
315                            $file->{'size'},
316                            $file->{'date'},
317                            $file->{'dvd'}
318                    )) {
319                            $retHTML .= qq{<td class="fviewborder">$v</td>};
320                    }
321    
322                    $retHTML .= "</tr>";
323            }
324            $retHTML .= "</table>";
325    
326         if ($addForm)          # skip pager
327         {          return $retHTML;
328             $retHTML .= "</form>";  
329         }          $retHTML .= "<INPUT TYPE=\"hidden\" VALUE=\"\" NAME=\"offset\">";
330            for (my $ii = 1; $ii <= $#files; $ii++) {
331                    $retHTML .= "<a href = \"#\" onclick=\"document.forma.offset.value=$ii;document.forma.submit();\">$ii</a>";
332                    if ($ii < $#files) {
333                            $retHTML .= " | ";
334                    }
335            }
336    
337            $retHTML .= "</form>" if ($addForm);
338                
339        return $retHTML;          return $retHTML;
340    }  }
341    
342  1;  1;

Legend:
Removed from v.16  
changed lines
  Added in v.26

  ViewVC Help
Powered by ViewVC 1.1.26