/[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 51 by dpavlin, Sat Aug 20 16:40:11 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    use DateTime;
9    use vars qw(%In $MyURL);
10    
11    my $on_page = 100;
12    my $pager_pages = 10;
13    
14    my $dsn = $Conf{SearchDSN};
15    my $db_user = $Conf{SearchUser} || '';
16    
17  sub getUnits() {  sub getUnits() {
18      my @ret = ();      my @ret = ();
19      my $tmp;      my $tmp;
20      my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",      my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1 } );
         "", "", { RaiseError => 1, AutoCommit => 1 } );  
21      my $st =      my $st =
22        $dbh->prepare(        $dbh->prepare(
23          " SELECT shares.ID AS ID, shares.share AS name FROM shares;");          " SELECT shares.ID AS ID, shares.share AS name FROM shares;");
# Line 24  sub getUnits() { Line 30  sub getUnits() {
30      return @ret;      return @ret;
31  }  }
32    
33  sub getWhere($) {  sub epoch_to_iso {
34      my ($param)    = @_;          my $t = shift || return;
35      my $retSQL     = "";          my $dt = DateTime->from_epoch( epoch => $t ) || return;
36      my @conditions = ();  print STDERR "$t == ",$dt->epoch,"\n";
37      my $cond;          return $dt->ymd . ' ' . $dt->hms;
38    }
39    
40        sub getWhere($) {
41              my ($param)    = @_;
42                my @conditions;
     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'}  ."\"");  
     }  
43    
44      if ( defined( $param->{'search_day_from'} )   && $param->{'search_day_from'} ne "" ) {          sub mk_epoch_date($$) {
45          push( @conditions,                  my ($name,$suffix) = @_;
             ' strftime("%d", datetime(files.date, "unixepoch","localtime")) >= "'  
               . $param->{'search_day_from'}  ."\"");  
     }  
     if ( defined( $param->{'search_month_from'} ) && $param->{'search_month_from'} ne "") {  
         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'} ."\"");  
     }  
46    
47      if ( defined( $param->{'search_host'} ) && $param->{'search_host'} ne "") {                  my $yyyy = $param->{ $name . '_year_' . $suffix} || return;
48        push( @conditions, ' backups.hostID = ' . $param->{'search_host'} );                  my $mm .= $param->{ $name . '_month_' . $suffix} ||
49      }                          ( $suffix eq 'from' ? 1 : 12);
50                    my $dd .= $param->{ $name . '_day_' . $suffix} ||
51                            ( $suffix eq 'from' ? 1 : 31);
52                    my $dt = new DateTime(
53                            year => $yyyy,
54                            month => $mm,
55                            day => $dd
56                    );
57                    return $dt->epoch || 'NULL';
58            }
59    
60            my $backup_from = mk_epoch_date('search_backup', 'from');
61            push @conditions, qq{ backups.date >= $backup_from } if ($backup_from);
62            my $backup_to = mk_epoch_date('search_backup', 'to');
63            push @conditions, qq{ backups.date <= $backup_to } if ($backup_to);
64    
65            my $files_from = mk_epoch_date('search', 'from');
66            push @conditions, qq{ files.date >= $files_from } if ($files_from);
67            my $files_to = mk_epoch_date('search', 'to');
68            push @conditions, qq{ files.date <= $files_to } if ($files_to);
69    
70      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'}."%'");  
         }  
71            
72      $retSQL = "";          push( @conditions, ' backups.hostID = ' . $param->{'search_host'} ) if ($param->{'search_host'});
     foreach $cond(@conditions)  
       {  
           if ($retSQL ne "")  
             {  
                 $retSQL .= " AND ";  
             }  
           $retSQL .= $cond;  
       }        
73    
74                push (@conditions, " upper(files.name) LIKE upper('%".$param->{'search_filename'}."%')") if ($param->{'search_filename'});
75      return $retSQL;  
76            return (
77                    join(" and ", @conditions),
78                    $files_from, $files_to,
79                    $backup_from, $backup_to
80            );
81  }  }
82    
 sub getFiles($)  
   {  
       my ($where) = @_;  
         
       my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",  
         "", "", { RaiseError => 1, AutoCommit => 1 } );  
       my $sql =            
         q{    
               SELECT files.id                       AS fid,  
                      hosts.name                     AS hname,  
                      shares.name                    AS sname,  
                      shares.share                   AS sharename,  
                      backups.num                    AS backupNum,  
                      files.name                     AS filename,  
                      files.path                     AS filepath,  
                      shares.share||files.fullpath AS networkPath,  
                      date(files.date, 'unixepoch', 'localtime') AS date,  
                      files.type                     AS filetype,  
                      files.size                     AS size,  
                      dvds.name                      AS dvd  
                   FROM  
                      files  
                         INNER JOIN shares  ON files.shareID=shares.ID  
                         INNER JOIN hosts   ON hosts.ID = shares.hostID  
                         INNER JOIN backups ON backups.hostID = hosts.ID  
                         LEFT  JOIN dvds    ON dvds.ID = files.dvdid  
                       
           };  
   
       if (defined($where) && $where ne "")  
         {  
             $sql .= " WHERE ". $where;        
         }  
83    
84          sub getFiles($$) {
85        my $st = $dbh->prepare(          my ($where, $offset) = @_;
           $sql  
           );      
86    
87        $st->execute;          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1 } );
88          
89        my @ret = ();          my $sql_cols = qq{
90        my $tmp;                  files.id                        AS fid,
91                    hosts.name                      AS hname,
92                    shares.name                     AS sname,
93                    shares.share                    AS sharename,
94                    files.backupNum                 AS backupNum,
95                    files.name                      AS filename,
96                    files.path                      AS filepath,
97                    shares.share||files.fullpath    AS networkPath,
98                    files.date                      AS date,
99                    files.type                      AS filetype,
100                    files.size                      AS size,
101                    dvds.name                       AS dvd
102            };
103    
104            my $sql_from = qq{
105                    FROM files
106                            INNER JOIN shares       ON files.shareID=shares.ID
107                            INNER JOIN hosts        ON hosts.ID = shares.hostID
108                            INNER JOIN backups      ON backups.num = files.backupNum and backups.hostID = hosts.ID
109                            LEFT  JOIN dvds         ON dvds.ID = files.dvdid
110            };
111    
112            my $sql_where;
113            $sql_where = " WHERE ". $where if ($where);
114    
115            my $sql_order = qq{
116                    ORDER BY files.id
117                            LIMIT $on_page
118                            OFFSET ?
119            };
120    
121            $offset ||= 0;
122            $offset = ($offset * $on_page) + 1;
123    
124            my $sth = $dbh->prepare(qq{ select count(files.id) $sql_from $sql_where });
125            $sth->execute();
126    
127            my ($results) = $sth->fetchrow_array();
128    
129            $sth = $dbh->prepare(qq{ select $sql_cols $sql_from $sql_where $sql_order });
130            $sth->execute( $offset );
131    
132            my @ret;
133                
134        while ($tmp = $st->fetchrow_hashref())          while (my $row = $sth->fetchrow_hashref()) {
135          {                  push(@ret, {
136              push(@ret, {                          'hname'         => $row->{'hname'},
137                             'hname'       => $tmp->{'hname'},                          'sname'         => $row->{'sname'},
138                             'sname'       => $tmp->{'sname'},                          'sharename'     => $row->{'sharename'},
139                             'sharename'   => $tmp->{'sharename'},                          'backupno'      => $row->{'backupnum'},
140                             'backupno'    => $tmp->{'backupNum'},                          'fname'         => $row->{'filename'},
141                             'fname'       => $tmp->{'filename'},                          'fpath'         => $row->{'filepath'},
142                             'fpath'       => $tmp->{'filepath'},                          'networkpath'   => $row->{'networkpath'},
143                             'networkpath' => $tmp->{'networkPath'},                          'date'          => $row->{'date'},
144                             'date'        => $tmp->{'date'},                          'type'          => $row->{'filetype'},
145                             'type'        => $tmp->{'filetype'},                          'size'          => $row->{'size'},
146                             'size'        => $tmp->{'size'},                          'id'            => $row->{'fid'},
147                             'id'          => $tmp->{'fid'},                          'dvd'           => $row->{'dvd'}
148                             'dvd'         => $tmp->{'dvd'}                  });
                        }  
             );  
                                   
149          }          }
150                
151        $st->finish();          $sth->finish();
152        $dbh->disconnect();          $dbh->disconnect();
153        return @ret;          return ($results, \@ret);
154    }  }
155    
156  sub getBackupsNotBurned()  sub getBackupsNotBurned() {
157    {  
158        my $dbh = DBI->connect( "dbi:SQLite:dbname=$Conf{SearchDB}",          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1 } );
         "", "", { RaiseError => 1, AutoCommit => 1 } );        
159        my $sql = q{        my $sql = q{
160            SELECT            SELECT
161              hosts.ID         AS hostID,              hosts.ID         AS hostID,
# Line 211  sub getBackupsNotBurned() Line 177  sub getBackupsNotBurned()
177        my @ret = ();        my @ret = ();
178        $st -> execute();        $st -> execute();
179    
180        while ( my $tmp = $st -> fetchrow_hashref() )        while ( my $row = $st -> fetchrow_hashref() )
181          {                    {          
182              push(@ret, {              push(@ret, {
183                           'host'     => $tmp->{'host'},                           'host'     => $row->{'host'},
184                           'hostid'   => $tmp->{'hostID'},                           'hostid'   => $row->{'hostID'},
185                           'backupno' => $tmp->{'backupno'},                           'backupno' => $row->{'backupno'},
186                           'type'     => $tmp->{'type'},                           'type'     => $row->{'type'},
187                           'date'     => $tmp->{'date'}                           'date'     => $row->{'date'}
188                         }                         }
189              );              );
190          }          }
# Line 231  sub displayBackupsGrid() Line 197  sub displayBackupsGrid()
197        my $retHTML = "";        my $retHTML = "";
198        my $addForm = 1;        my $addForm = 1;
199                
200        if ($addForm)        if ($addForm) {
         {  
201    
202              $retHTML .= <<EOF3;              $retHTML .= <<EOF3;
203  <script language="javascript" type="text/javascript">  <script language="javascript" type="text/javascript">
# Line 255  sub displayBackupsGrid() Line 220  sub displayBackupsGrid()
220  //-->  //-->
221  </script>        </script>      
222  EOF3  EOF3
223                $retHTML .= q{<form name="forma" method="POST" action="}."$MyURL"."?action=burn\"";                $retHTML .= q{<form name="forma" method="GET" action="}."$MyURL"."?action=burn\"";
224                $retHTML.= q{<input type="hidden" value="burn" name="action">};                $retHTML.= q{<input type="hidden" value="burn" name="action">};
225                $retHTML .= q{<input type="hidden" value="results" name="search_results">};                $retHTML .= q{<input type="hidden" value="results" name="search_results">};
226          }          }
227        $retHTML .= "<table style=\"fview\">";          $retHTML .= qq{<table style="fview"><tr>};
228        $retHTML .= "<tr> ";  
229        if ($addForm)          if ($addForm) {
         {  
230              $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";              $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";
231          }          }
232        $retHTML .=  "<td class=\"tableheader\">Host</td> <td class=\"tableheader\">Backup no</td> <td class=\"tableheader\">Type</td> <td class=\"tableheader\">date</td></tr>";          $retHTML .=  qq{<td class="tableheader">Host</td><td class="tableheader">Backup no</td><td class="tableheader">Type</td><td class="tableheader">date</td></tr>};
233        my @backups = getBackupsNotBurned();  
234        my $backup;          my @backups = getBackupsNotBurned();
235            my $backup;
236        if ($addForm)  
237          {          if ($addForm) {
238              $retHTML .= "<tr>";                  $retHTML .= qq{<tr><td colspan=7 style="tableheader">
239              $retHTML .= "<td colspan=7 style=\"tableheader\">";                          <input type="submit" value="Burn selected backups on medium" name="submitBurner">
240              $retHTML .= "<input type=\"submit\" value=\"Burn selected backups on medium\" name=\"submitBurner\">";                          </td></tr>};
             $retHTML .= "</td>";  
             $retHTML .= "</tr>";  
               
241          }          }
242        foreach $backup(@backups)  
243          {          foreach $backup(@backups) {
244              my $ftype = "";  
245                    my $ftype = "";
246                            
247              $retHTML .= "<tr>";                  $retHTML .= "<tr>";
248              if ($addForm)                  if ($addForm) {
249                {                          $retHTML .= qq{<td class="fview"><input type="checkbox" name="fcb} .
250                    $retHTML .= "<td class=\"fview\"> <input type=\"checkbox\" name=\"fcb"                                  $backup->{'hostid'}."_".$backup->{'backupno'} .
251                      .$backup->{'hostid'}."_".$backup->{'backupno'}                                  qq{" value="} . $backup->{'hostid'}."_".$backup->{'backupno'} .
252                    ."\" value=\"".$backup->{'hostid'}."_".$backup->{'backupno'}."\"> </td>";                                  qq{"></td>};
253                }                      }          
254                            
255              $retHTML .= "<td class=\"fviewborder\">" . $backup->{'host'} . "</td>";                  $retHTML .= '<td class="fviewborder">' . $backup->{'host'} . '</td>' .
256              $retHTML .= "<td class=\"fviewborder\">" . $backup->{'backupno'} . "</td>";                          '<td class="fviewborder">' . $backup->{'backupno'} . '</td>' .
257              $retHTML .= "<td class=\"fviewborder\">" . $backup->{'type'} . "</td>";                          '<td class="fviewborder">' . $backup->{'type'} . '</td>' .
258              $retHTML .= "<td class=\"fviewborder\">" . $backup->{'date'} . "<td>";                          '<td class="fviewborder">' . epoch_to_iso( $backup->{'date'} ) . '<td>' .
259              $retHTML .= "</tr>";                          '</tr>';
260          }          }
       $retHTML .= "</table>";  
       if ($addForm)  
        {  
            $retHTML .= "</form>";  
        }  
         
       return $retHTML;  
     
     
   }        
261    
262  sub displayGrid($$)          $retHTML .= "</table>";
263    {  
264        my ($where, $addForm) = @_;          if ($addForm) {
265        my $retHTML = "";                  $retHTML .= "</form>";
266            }
267                
268        if ($addForm)          return $retHTML;
269          {  }      
       $retHTML .= <<EOF3;  
 <script language="javascript" type="text/javascript">  
 <!--  
270    
271      function checkAll(location)  sub displayGrid($$$$) {
272      {          my ($where, $addForm, $offset, $hilite) = @_;
273        for (var i=0;i<document.forma.elements.length;i++)          my $retHTML = "";
274        {  
275          var e = document.forma.elements[i];          if ($addForm) {
276          if ((e.checked || !e.checked) && e.name != \'all\') {                  $retHTML .= qq{<form name="forma" method="GET" action="$MyURL">};
277              if (eval("document.forma."+location+".checked")) {                  $retHTML.= qq{<input type="hidden" value="search" name="action">};
278                  e.checked = true;                  $retHTML .= qq{<input type="hidden" value="results" name="search_results">};
279              } else {          }
                 e.checked = false;  
             }  
         }  
       }  
     }  
280    
281            my ($results, $files) = getFiles($where, $offset);
282    
283  //-->          my ($from, $to) = (($offset * $on_page) + 1, ($offset * $on_page) + $on_page);
284  </script>        
285  EOF3          $retHTML .= qq{
286                $retHTML .= q{<form name="forma" method="POST" action="}."$MyURL"."?action=burn\"";          <br/>Found $results files, showing $from - $to
287                $retHTML.= q{<input type="hidden" value="burn" name="action">};          <table style="fview" width="100%">
288                $retHTML .= q{<input type="hidden" value="results" name="search_results">};                  <tr>
289                    <td class="tableheader">Share</td>
290                    <td class="tableheader">Name</td>
291                    <td class="tableheader">Type</td>
292                    <td class="tableheader">#</td>
293                    <td class="tableheader">Size</td>
294                    <td class="tableheader">Date</td>
295                    <td class="tableheader">Media</td>
296                    </tr>
297            };
298    
299            my $file;
300    
301            sub hilite_html($$) {
302                    my ($html, $search) = @_;
303                    $html =~ s#($search)#<b>$1</b>#gis;
304                    return $html;
305          }          }
306        $retHTML .= "<table style=\"fview\">";  
307        $retHTML .= "<tr> ";          sub restore_link($$$$$$) {
308        if ($addForm)                  my $type = shift;
309          {                  my $action = 'RestoreFile';
310              $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";                  $action = 'browse' if (lc($type) eq 'dir');
311                    return sprintf(qq{<a href="?action=%s&host=%s&num=%d&share=%s&dir=%s">%s</a>}, $action, @_);
312          }          }
313        $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>";  
314        my @files = getFiles($where);          foreach $file (@{ $files }) {
315        my $file;                  my $typeStr  = BackupPC::Attrib::fileType2Text(undef, $file->{'type'});
316                    $retHTML .= "<tr>";
317        if ($addForm)  
318          {                  foreach my $v ((
319              $retHTML .= "<tr>";                          $file->{'sharename'},
320              $retHTML .= "<td colspan=7 style=\"tableheader\">";                          qq{<img src="$Conf{CgiImageDirURL}/icon-$typeStr.gif" align="center">&nbsp;} . hilite_html( $file->{'fpath'}, $hilite ),
321              $retHTML .= "<input type=\"submit\" value=\"Burn selected files on medium\" name=\"submitBurner\">";                          $typeStr,
322              $retHTML .= "</td>";                          restore_link( $typeStr, $file->{'hname'}, $file->{'backupno'}, $file->{'sname'}, $file->{'fpath'}, $file->{'backupno'} ),
323              $retHTML .= "</tr>";                          $file->{'size'},
324                                        epoch_to_iso( $file->{'date'} ),
325                            $file->{'dvd'}
326                    )) {
327                            $retHTML .= qq{<td class="fviewborder">$v</td>};
328                    }
329    
330                    $retHTML .= "</tr>";
331          }          }
332        foreach $file(@files)          $retHTML .= "</table>";
333          {  
334              my $ftype = "";          # all variables which has to be transfered
335                        foreach my $n (qw/search_day_from search_month_from search_year_from search_day_to search_month_to search_year_to search_backup_day_from search_backup_month_from search_backup_year_from search_backup_day_to search_backup_month_to search_backup_year_to search_filename offset/) {
336              if ($file->{'type'} == BPC_FTYPE_DIR)                  $retHTML .= qq{<INPUT TYPE="hidden" NAME="$n" VALUE="$In{$n}">\n};
337                {          }
338                    $ftype = "dir";  
339                }          my $del = '';
340              else          my $max_page = int( $results / $on_page );
341                {          my $page = 0;
342                    $ftype = "file";  
343                }          my $link_fmt = '<a href = "#" onclick="document.forma.offset.value=%d;document.forma.submit();">%s</a>';
344              $retHTML .= "<tr>";  
345              if ($addForm)          $retHTML .= '<div style="text-align: center;">';
346                {  
347                    $retHTML .= "<td class=\"fview\"> <input type=\"checkbox\" name=\"fcb"          if ($offset > 0) {
348                      .$file->{'id'}                  $retHTML .= sprintf($link_fmt, $offset - 1, '&lt;&lt;') . ' ';
349                    ."\" value=\"".$file->{'id'}."\"> </td>";          }
350                }      
351                        while ($page <= $max_page) {
352              $retHTML .= "<td class=\"fviewborder\">" . $file->{'hname'} ."</td>";                  if ($page == $offset) {
353              $retHTML .= "<td class=\"fviewborder\">" . $file->{'fname'} . "</td>";                          $retHTML .= $del . '<b>' . ($page + 1) . '</b>';
354              $retHTML .= "<td class=\"fviewborder\">" . $ftype . "</td>";                  } else {
355              $retHTML .= "<td class=\"fviewborder\">" . $file->{'backupno'} . "</td>";                          $retHTML .= $del . sprintf($link_fmt, $page, $page + 1);
356              $retHTML .= "<td class=\"fviewborder\">" . $file->{'size'} . "</td>";                  }
357              $retHTML .= "<td class=\"fviewborder\">" . $file->{'date'} . "</td>";  
358              $retHTML .= "<td class=\"fviewborder\">" . $file->{'dvd'} . "</td>";                  if ($page < $offset - $pager_pages && $page != 0) {
359              $retHTML .= "</tr>";                          $retHTML .= " ... ";
360          }                          $page = $offset - $pager_pages;
361        $retHTML .= "</table>";                          $del = '';
362        if ($addForm)                  } elsif ($page > $offset + $pager_pages && $page != $max_page) {
363         {                          $retHTML .= " ... ";
364             $retHTML .= "</form>";                          $page = $max_page;
365         }                          $del = '';
366                          } else {
367        return $retHTML;                          $del = ' | ';
368    }                          $page++;
369                    }
370            }
371    
372            if ($offset < $max_page) {
373                    $retHTML .= ' ' . sprintf($link_fmt, $offset + 1, '&gt;&gt;');
374            }
375    
376            $retHTML .= "</div>";
377    
378            $retHTML .= "</form>" if ($addForm);
379    
380            return $retHTML;
381    }
382    
383  1;  1;

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

  ViewVC Help
Powered by ViewVC 1.1.26