/[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 4 by dpavlin, Wed Jun 22 19:22:51 2005 UTC revision 17 by dpavlin, Mon Jul 11 13:22:38 2005 UTC
# Line 10  use DBI; Line 10  use DBI;
10  sub getUnits() {  sub getUnits() {
11      my @ret = ();      my @ret = ();
12      my $tmp;      my $tmp;
13      my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",      my $dbh = DBI->connect( "dbi:SQLite:dbname=${TopDir}/$Conf{SearchDB}",
14          "", "", { RaiseError => 1, AutoCommit => 1 } );          "", "", { RaiseError => 1, AutoCommit => 1 } );
15      my $st =      my $st =
16        $dbh->prepare(        $dbh->prepare(
# Line 117  sub getWhere($) { Line 117  sub getWhere($) {
117      return $retSQL;      return $retSQL;
118  }  }
119    
120  sub getFiles($)  sub getFiles($$)
121    {    {
122        my ($where) = @_;        my ($where, $offset) = @_;
123                
124        my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",        
125          my $dbh = DBI->connect( "dbi:SQLite:dbname=${TopDir}/$Conf{SearchDB}",
126          "", "", { RaiseError => 1, AutoCommit => 1 } );          "", "", { RaiseError => 1, AutoCommit => 1 } );
127        my $sql =                  my $sql =          
128          q{            q{  
129                SELECT files.id                       AS fid,                  SELECT  files.id                        AS fid,
130                       hosts.name                     AS hname,                          hosts.name                      AS hname,
131                       shares.name                    AS sname,                          shares.name                     AS sname,
132                       shares.share                   AS sharename,                          shares.share                    AS sharename,
133                       backups.num                    AS backupNum,                          files.backupNum                 AS backupNum,
134                       files.name                     AS filename,                          files.name                      AS filename,
135                       files.path                     AS filepath,                          files.path                      AS filepath,
136                       shares.share||files.fullpath AS networkPath,                          shares.share||files.fullpath    AS networkPath,
137                       date(files.date, 'unixepoch', 'localtime') AS date,                          date(files.date, 'unixepoch', 'localtime') AS date,
138                       files.type                     AS filetype,                          files.type                      AS filetype,
139                       files.size                     AS size,                          files.size                      AS size,
140                       dvds.name                      AS dvd                          dvds.name                       AS dvd
141                    FROM                  FROM files
142                       files                          INNER JOIN shares       ON files.shareID=shares.ID
143                          INNER JOIN shares  ON files.shareID=shares.ID                          INNER JOIN hosts        ON hosts.ID = shares.hostID
144                          INNER JOIN hosts   ON hosts.ID = shares.hostID                          LEFT  JOIN dvds         ON dvds.ID = files.dvdid
                         INNER JOIN backups ON backups.hostID = hosts.ID  
                         LEFT  JOIN dvds    ON dvds.ID = files.dvdid  
                       
145            };            };
146    
147        if (defined($where) && $where ne "")        if (defined($where) && $where ne "")
# Line 151  sub getFiles($) Line 149  sub getFiles($)
149              $sql .= " WHERE ". $where;                    $sql .= " WHERE ". $where;      
150          }          }
151    
152          $sql .=
153            q{          
154                ORDER BY files.id
155                  LIMIT 100
156                  OFFSET ? * 100 + 1
157            };
158          
159          
160                
161        my $st = $dbh->prepare(        my $st = $dbh->prepare(
162            $sql            $sql
163            );                );    
164          if (!defined($offset) && $offset ne "")
165          {
166            $st->bind_param(1, $offset);
167          }
168          else
169          {
170            $st->bind_param(1,0);
171          }
172        $st->execute;        $st->execute;
173                
174        my @ret = ();        my @ret = ();
# Line 188  sub getFiles($) Line 201  sub getFiles($)
201    
202  sub getBackupsNotBurned()  sub getBackupsNotBurned()
203    {    {
204        my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",        my $dbh = DBI->connect( "dbi:SQLite:dbname=${TopDir}/$Conf{SearchDB}",
205          "", "", { RaiseError => 1, AutoCommit => 1 } );                "", "", { RaiseError => 1, AutoCommit => 1 } );      
206        my $sql = q{        my $sql = q{
207            SELECT            SELECT
# Line 307  EOF3 Line 320  EOF3
320        
321    }          }      
322    
323  sub displayGrid($$)  sub displayGrid($$$$) {
324    {          my ($where, $addForm, $offset, $hilite) = @_;
325        my ($where, $addForm) = @_;          my $retHTML = "";
326        my $retHTML = "";  
327                  if ($addForm) {
328        if ($addForm)                  $retHTML .= qq{<form name="forma" method="POST" action="}.$MyURL.qq{?action=search">};
329          {                  $retHTML.= qq{<input type="hidden" value="search" name="action">};
330        $retHTML .= <<EOF3;                  $retHTML .= qq{<input type="hidden" value="results" name="search_results">};
331  <script language="javascript" type="text/javascript">          }
332  <!--          $retHTML .= qq{
333            <table style="fview" width="100%">
334      function checkAll(location)                  <tr>
335      {                  <td class="tableheader">Host</td>
336        for (var i=0;i<document.forma.elements.length;i++)                  <td class="tableheader">Type</td>
337        {                  <td class="tableheader">Name</td>
338          var e = document.forma.elements[i];                  <td class="tableheader">backup no.</td>
339          if ((e.checked || !e.checked) && e.name != \'all\') {                  <td class="tableheader">size</td>
340              if (eval("document.forma."+location+".checked")) {                  <td class="tableheader">date</td>
341                  e.checked = true;                  <td class="tableheader">Media</td>
342              } else {                  </tr>
343                  e.checked = false;          };
344              }          my @files = getFiles($where, $offset);
345          }          my $file;
346        }  
347      }          sub hilite_html($$) {
348                    my ($html, $search) = @_;
349                    $html =~ s#($search)#<b>$1</b>#gis;
350  //-->                  return $html;
351  </script>                }
352  EOF3  
353                $retHTML .= q{<form name="forma" method="POST" action="}."$MyURL"."?action=burn\"";          foreach $file (@files) {
354                $retHTML.= q{<input type="hidden" value="burn" name="action">};                  my $ftype = "file";
355                $retHTML .= q{<input type="hidden" value="results" name="search_results">};                  $ftype = "dir" if ($file->{'type'} == BPC_FTYPE_DIR);
356    
357                    $retHTML .= "<tr>";
358    
359                    foreach my $v ((
360                            $file->{'hname'},
361                            $ftype,
362                            hilite_html( $file->{'fpath'}, $hilite ),
363                            $file->{'backupno'},
364                            $file->{'size'},
365                            $file->{'date'},
366                            $file->{'dvd'}
367                    )) {
368                            $retHTML .= qq{<td class="fviewborder">$v</td>};
369                    }
370    
371                    $retHTML .= "</tr>";
372            }
373            $retHTML .= "</table>";
374    
375            # skip pager
376            return $retHTML;
377    
378            $retHTML .= "<INPUT TYPE=\"hidden\" VALUE=\"\" NAME=\"offset\">";
379            for (my $ii = 1; $ii <= $#files; $ii++) {
380                    $retHTML .= "<a href = \"#\" onclick=\"document.forma.offset.value=$ii;document.forma.submit();\">$ii</a>";
381                    if ($ii < $#files) {
382                            $retHTML .= " | ";
383                    }
384          }          }
       $retHTML .= "<table style=\"fview\">";  
       $retHTML .= "<tr> ";  
       if ($addForm)  
         {  
             $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";  
         }  
       $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>";  
       my @files = getFiles($where);  
       my $file;  
385    
386        if ($addForm)          $retHTML .= "</form>" if ($addForm);
         {  
             $retHTML .= "<tr>";  
             $retHTML .= "<td colspan=7 style=\"tableheader\">";  
             $retHTML .= "<input type=\"submit\" value=\"Burn selected files on medium\" name=\"submitBurner\">";  
             $retHTML .= "</td>";  
             $retHTML .= "</tr>";  
               
         }  
       foreach $file(@files)  
         {  
             my $ftype = "";  
               
             if ($file->{'type'} == BPC_FTYPE_DIR)  
               {  
                   $ftype = "dir";  
               }  
             else  
               {  
                   $ftype = "file";  
               }  
             $retHTML .= "<tr>";  
             if ($addForm)  
               {  
                   $retHTML .= "<td class=\"fview\"> <input type=\"checkbox\" name=\"fcb"  
                     .$file->{'id'}  
                   ."\" value=\"".$file->{'id'}."\"> </td>";  
               }      
               
             $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>";  
         }  
       $retHTML .= "</table>";  
       if ($addForm)  
        {  
            $retHTML .= "</form>";  
        }  
387                
388        return $retHTML;          return $retHTML;
389    }  }
390    
391  1;  1;

Legend:
Removed from v.4  
changed lines
  Added in v.17

  ViewVC Help
Powered by ViewVC 1.1.26