/[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 91 by dpavlin, Sun Aug 28 17:53:46 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 191  sub getFilesHyperEstraier($$) { Line 195  sub getFilesHyperEstraier($$) {
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            }
206    
207                  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);  
208    
209                  $cond->add_attr("date NUMGE $files_from") if ($files_from);          $cond->add_attr("backup_date NUMGE $backup_from") if ($backup_from);
210                  $cond->add_attr("date NUMLE $files_to") if ($files_to);          $cond->add_attr("backup_date NUMLE $backup_to") if ($backup_to);
211    
212                  $cond->add_attr("shareid NUMEQ $shareid") if ($shareid);          $cond->add_attr("date NUMGE $files_from") if ($files_from);
213          }          $cond->add_attr("date NUMLE $files_to") if ($files_to);
214    
215          $offset ||= 0;          $cond->add_attr("shareid NUMEQ $shareid") if ($shareid);
         $offset = ($offset * $on_page);  
216    
217  #       $cond->set_max( $offset + $on_page );  #       $cond->set_max( $offset + $on_page );
218          $cond->set_options( $HyperEstraier::Condition::SURE );          $cond->set_options( $HyperEstraier::Condition::SURE );
# Line 217  sub getFilesHyperEstraier($$) { Line 220  sub getFilesHyperEstraier($$) {
220    
221          # get the result of search          # get the result of search
222          my $result = $db->search($cond, 0);          my $result = $db->search($cond, 0);
         $result->get(0);  
223    
224          my @res;          my @res;
225          my $hits = $result->size;          my $hits = $result->size;
226    
227          # for each document in result          # for each document in result
228          for my $i ($offset .. $result->size-1) {          for my $i ($offset .. ($offset + $on_page - 1)) {
229                    last if ($i >= $hits);
230    
231                  my $id = $result->get($i);                  my $id = $result->get($i);
232                  my $doc = $db->get_doc($id, 0);                  my $doc = $db->get_doc($id, 0);
233    
# Line 252  sub getBackupsNotBurned() { Line 256  sub getBackupsNotBurned() {
256                  INNER JOIN shares       ON files.shareID=shares.ID                  INNER JOIN shares       ON files.shareID=shares.ID
257                  INNER JOIN hosts        ON hosts.ID = shares.hostID                  INNER JOIN hosts        ON hosts.ID = shares.hostID
258                  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  
259          GROUP BY          GROUP BY
260                  backups.hostID, backups.num                  backups.hostID, backups.num
261          ORDER BY min(backups.date)          ORDER BY min(backups.date)
# Line 373  sub displayGrid($) { Line 375  sub displayGrid($) {
375          my $start_t = time();          my $start_t = time();
376    
377          my ($results, $files);          my ($results, $files);
378          if ($param->{'use_hest'}) {          if ($param->{'use_hest'} && length($hilite) > 0) {
379                  ($results, $files) = getFilesHyperEstraier($param, $offset);                  ($results, $files) = getFilesHyperEstraier($param);
380          } else {          } else {
381                  ($results, $files) = getFiles($param, $offset);                  ($results, $files) = getFiles($param);
382          }          }
383    
384          my $dur_t = time() - $start_t;          my $dur_t = time() - $start_t;
# Line 402  sub displayGrid($) { Line 404  sub displayGrid($) {
404          </div>          </div>
405          <table style="fview" width="100%" border="0" cellpadding="2" cellspacing="0">          <table style="fview" width="100%" border="0" cellpadding="2" cellspacing="0">
406                  <tr class="fviewheader">                  <tr class="fviewheader">
407                    <td></td>
408                  <td align="center">Share</td>                  <td align="center">Share</td>
409                  <td align="center">Type and Name</td>                  <td align="center">Type and Name</td>
410                  <td align="center">#</td>                  <td align="center">#</td>
# Line 426  sub displayGrid($) { Line 429  sub displayGrid($) {
429                  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, @_);
430          }          }
431    
432            my $i = $offset * $on_page;
433    
434          foreach $file (@{ $files }) {          foreach $file (@{ $files }) {
435                    $i++;
436    
437                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});
438                  $retHTML .= qq{<tr class="fviewborder">};                  $retHTML .= qq{<tr class="fviewborder">};
439    
440                    $retHTML .= qq{<td class="fviewborder">$i</td>};
441    
442                  $retHTML .=                  $retHTML .=
443                          qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} .                          qq{<td class="fviewborder" align="right">} . $file->{'hname'} . ':' . $file->{'sname'} . qq{</td>} .
444                          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>} .
445                          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>} .
446                          qq{<td class="fviewborder" align="right">} . $file->{'size'} . qq{</td>} .                          qq{<td class="fviewborder" align="right">} . $file->{'size'} . qq{</td>} .
447                          qq{<td class="fviewborder">} . epoch_to_iso( $file->{'date'} ) . qq{</td>} .                          qq{<td class="fviewborder">} . epoch_to_iso( $file->{'date'} ) . qq{</td>} .
448                          qq{<td class="fviewborder">} . $file->{'dvd'} . qq{</td>};                          qq{<td class="fviewborder">} . '?' . qq{</td>};
449    
450                  $retHTML .= "</tr>";                  $retHTML .= "</tr>";
451          }          }

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

  ViewVC Help
Powered by ViewVC 1.1.26