/[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 86 by dpavlin, Sun Aug 28 12:35:59 2005 UTC revision 87 by dpavlin, Sun Aug 28 14:05:08 2005 UTC
# Line 62  sub dates_from_form($) { Line 62  sub dates_from_form($) {
62          sub mk_epoch_date($$) {          sub mk_epoch_date($$) {
63                  my ($name,$suffix) = @_;                  my ($name,$suffix) = @_;
64    
65                  my $yyyy = $param->{ $name . '_year_' . $suffix} || return;                  my $yyyy = $param->{ $name . '_year_' . $suffix} || return undef;
66                  my $mm .= $param->{ $name . '_month_' . $suffix} ||                  my $mm .= $param->{ $name . '_month_' . $suffix} ||
67                          ( $suffix eq 'from' ? 1 : 12);                          ( $suffix eq 'from' ? 1 : 12);
68                  my $dd .= $param->{ $name . '_day_' . $suffix} ||                  my $dd .= $param->{ $name . '_day_' . $suffix} ||
69                          ( $suffix eq 'from' ? 1 : 31);                          ( $suffix eq 'from' ? 1 : 31);
70    
71                    $yyyy =~ s/\D//g;
72                    $mm =~ s/\D//g;
73                    $dd =~ s/\D//g;
74    
75                  my $dt = new DateTime(                  my $dt = new DateTime(
76                          year => $yyyy,                          year => $yyyy,
77                          month => $mm,                          month => $mm,
78                          day => $dd                          day => $dd
79                  );                  );
80                    print STDERR "mk_epoch_date($name,$suffix) [$yyyy-$mm-$dd] = " . $dt->ymd . " " . $dt->hms . "\n";
81                  return $dt->epoch || 'NULL';                  return $dt->epoch || 'NULL';
82          }          }
83    
84          return (          my @ret = (
85                  mk_epoch_date('search_backup', 'from'),                  mk_epoch_date('search_backup', 'from'),
86                  mk_epoch_date('search_backup', 'to'),                  mk_epoch_date('search_backup', 'to'),
87                  mk_epoch_date('search', 'from'),                  mk_epoch_date('search', 'from'),
88                  mk_epoch_date('search', 'to'),                  mk_epoch_date('search', 'to'),
89          );          );
90    
91            return @ret;
92    
93  }  }
94    
95    
# Line 104  sub getWhere($) { Line 113  sub getWhere($) {
113  }  }
114    
115    
116  sub getFiles($$) {  sub getFiles($) {
117          my ($param, $offset) = @_;          my ($param) = @_;
118    
119            my $offset = $param->{'offset'} || 0;
120            $offset *= $on_page;
121    
122          my $dbh = get_dbh();          my $dbh = get_dbh();
123    
# Line 113  sub getFiles($$) { Line 125  sub getFiles($$) {
125                  files.id                        AS fid,                  files.id                        AS fid,
126                  hosts.name                      AS hname,                  hosts.name                      AS hname,
127                  shares.name                     AS sname,                  shares.name                     AS sname,
                 -- shares.share                 AS sharename,  
128                  files.backupnum                 AS backupnum,                  files.backupnum                 AS backupnum,
                 -- files.name                   AS filename,  
129                  files.path                      AS filepath,                  files.path                      AS filepath,
130                  files.date                      AS date,                  files.date                      AS date,
131                  files.type                      AS type,                  files.type                      AS type,
132                  files.size                      AS size,                  files.size                      AS size
                 -- dvds.name                    AS dvd  
                 null                            AS dvd  
133          };          };
134    
135          my $sql_from = qq{          my $sql_from = qq{
136                  FROM files                  FROM files
137                          INNER JOIN shares       ON files.shareID=shares.ID                          INNER JOIN shares       ON files.shareID=shares.ID
138                          INNER JOIN hosts        ON hosts.ID = shares.hostID                          INNER JOIN hosts        ON hosts.ID = shares.hostID
139                          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 = files.shareID
         };  
   
         my $sql_dvd_from = qq{  
                         -- LEFT  JOIN dvds              ON dvds.ID = files.dvdid  
140          };          };
141    
142          my $sql_where;          my $sql_where;
# Line 146  sub getFiles($$) { Line 150  sub getFiles($$) {
150          };          };
151    
152          my $sql_count = qq{ select count(files.id) $sql_from $sql_where };          my $sql_count = qq{ select count(files.id) $sql_from $sql_where };
153          my $sql_results = qq{ select $sql_cols $sql_from $sql_dvd_from $sql_where $sql_order };          my $sql_results = qq{ select $sql_cols $sql_from $sql_where $sql_order };
   
         $offset ||= 0;  
         $offset = ($offset * $on_page);  
154    
155          my $sth = $dbh->prepare($sql_count);          my $sth = $dbh->prepare($sql_count);
156          $sth->execute();          $sth->execute();
# Line 174  sub getFiles($$) { Line 175  sub getFiles($$) {
175          return ($results, \@ret);          return ($results, \@ret);
176  }  }
177    
178  sub getFilesHyperEstraier($$) {  sub getFilesHyperEstraier($) {
179          my ($param, $offset) = @_;          my ($param) = @_;
180    
181            my $offset = $param->{'offset'} || 0;
182            $offset *= $on_page;
183    
184          die "no index_path?" unless ($index_path);          die "no index_path?" unless ($index_path);
185    
# Line 196  sub getFilesHyperEstraier($$) { Line 200  sub getFilesHyperEstraier($$) {
200    
201                  # set the search phrase to the search condition object                  # set the search phrase to the search condition object
202                  $cond->set_phrase($q);                  $cond->set_phrase($q);
203            }
204    
205                  my ($backup_from, $backup_to, $files_from, $files_to) = dates_from_form($param);          my ($backup_from, $backup_to, $files_from, $files_to) = dates_from_form($param);
   
                 $cond->add_attr("backup_date NUMGE $backup_from") if ($backup_from);  
                 $cond->add_attr("backup_date NUMLE $backup_to") if ($backup_to);  
206    
207                  $cond->add_attr("date NUMGE $files_from") if ($files_from);          $cond->add_attr("backup_date NUMGE $backup_from") if ($backup_from);
208                  $cond->add_attr("date NUMLE $files_to") if ($files_to);          $cond->add_attr("backup_date NUMLE $backup_to") if ($backup_to);
209    
210                  $cond->add_attr("shareid NUMEQ $shareid") if ($shareid);          $cond->add_attr("date NUMGE $files_from") if ($files_from);
211          }          $cond->add_attr("date NUMLE $files_to") if ($files_to);
212    
213          $offset ||= 0;          $cond->add_attr("shareid NUMEQ $shareid") if ($shareid);
         $offset = ($offset * $on_page);  
214    
215  #       $cond->set_max( $offset + $on_page );  #       $cond->set_max( $offset + $on_page );
216          $cond->set_options( $HyperEstraier::Condition::SURE );          $cond->set_options( $HyperEstraier::Condition::SURE );
# Line 217  sub getFilesHyperEstraier($$) { Line 218  sub getFilesHyperEstraier($$) {
218    
219          # get the result of search          # get the result of search
220          my $result = $db->search($cond, 0);          my $result = $db->search($cond, 0);
         $result->get(0);  
221    
222          my @res;          my @res;
223          my $hits = $result->size;          my $hits = $result->size;
224    
225          # for each document in result          # for each document in result
226          for my $i ($offset .. $result->size-1) {          for my $i ($offset .. ($offset + $on_page - 1)) {
227                    last if ($i >= $hits);
228    
229                  my $id = $result->get($i);                  my $id = $result->get($i);
230                  my $doc = $db->get_doc($id, 0);                  my $doc = $db->get_doc($id, 0);
231    
# Line 252  sub getBackupsNotBurned() { Line 254  sub getBackupsNotBurned() {
254                  INNER JOIN shares       ON files.shareID=shares.ID                  INNER JOIN shares       ON files.shareID=shares.ID
255                  INNER JOIN hosts        ON hosts.ID = shares.hostID                  INNER JOIN hosts        ON hosts.ID = shares.hostID
256                  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
         WHERE  
                 files.dvdid     IS NULL  
257          GROUP BY          GROUP BY
258                  backups.hostID, backups.num                  backups.hostID, backups.num
259          ORDER BY min(backups.date)          ORDER BY min(backups.date)
# Line 374  sub displayGrid($) { Line 374  sub displayGrid($) {
374    
375          my ($results, $files);          my ($results, $files);
376          if ($param->{'use_hest'}) {          if ($param->{'use_hest'}) {
377                  ($results, $files) = getFilesHyperEstraier($param, $offset);                  ($results, $files) = getFilesHyperEstraier($param);
378          } else {          } else {
379                  ($results, $files) = getFiles($param, $offset);                  ($results, $files) = getFiles($param);
380          }          }
381    
382          my $dur_t = time() - $start_t;          my $dur_t = time() - $start_t;
# Line 402  sub displayGrid($) { Line 402  sub displayGrid($) {
402          </div>          </div>
403          <table style="fview" width="100%" border="0" cellpadding="2" cellspacing="0">          <table style="fview" width="100%" border="0" cellpadding="2" cellspacing="0">
404                  <tr class="fviewheader">                  <tr class="fviewheader">
405                    <td></td>
406                  <td align="center">Share</td>                  <td align="center">Share</td>
407                  <td align="center">Type and Name</td>                  <td align="center">Type and Name</td>
408                  <td align="center">#</td>                  <td align="center">#</td>
# Line 426  sub displayGrid($) { Line 427  sub displayGrid($) {
427                  return sprintf(qq{<a href="?action=%s&host=%s&num=%d&share=%s&dir=%s">%s</a>}, $action, @_);                  return sprintf(qq{<a href="?action=%s&host=%s&num=%d&share=%s&dir=%s">%s</a>}, $action, @_);
428          }          }
429    
430            my $i = $offset * $on_page;
431    
432          foreach $file (@{ $files }) {          foreach $file (@{ $files }) {
433                    $i++;
434    
435                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});
436                  $retHTML .= qq{<tr class="fviewborder">};                  $retHTML .= qq{<tr class="fviewborder">};
437    
438                    $retHTML .= qq{<td>$i</td>};
439    
440                  $retHTML .=                  $retHTML .=
441                          qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} .                          qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} .
442                          qq{<td class="fviewborder"><img src="$Conf{CgiImageDirURL}/icon-$typeStr.gif" alt="$typeStr" align="middle">&nbsp;} . hilite_html( $file->{'filepath'}, $hilite ) . qq{</td>} .                          qq{<td class="fviewborder"><img src="$Conf{CgiImageDirURL}/icon-$typeStr.gif" alt="$typeStr" align="middle">&nbsp;} . hilite_html( $file->{'filepath'}, $hilite ) . qq{</td>} .
443                          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="center">} . restore_link( $typeStr, ${EscURI( $file->{'hname'} )}, $file->{'backupnum'}, ${EscURI( $file->{'sname'})}, ${EscURI( $file->{'filepath'} )}, $file->{'backupnum'} ) . qq{</td>} .
444                          qq{<td class="fviewborder" align="right">} . $file->{'size'} . qq{</td>} .                          qq{<td class="fviewborder" align="right">} . $file->{'size'} . qq{</td>} .
445                          qq{<td class="fviewborder">} . epoch_to_iso( $file->{'date'} ) . qq{</td>} .                          qq{<td class="fviewborder">} . epoch_to_iso( $file->{'date'} ) . qq{</td>} .
446                          qq{<td class="fviewborder">} . $file->{'dvd'} . qq{</td>};                          qq{<td class="fviewborder">} . '?' . qq{</td>};
447    
448                  $retHTML .= "</tr>";                  $retHTML .= "</tr>";
449          }          }

Legend:
Removed from v.86  
changed lines
  Added in v.87

  ViewVC Help
Powered by ViewVC 1.1.26