public
Description: Git mirror of the MacPorts svn repo
Homepage: http://www.macports.org
Clone URL: git://github.com/kballard/macports.git
Search Repo:
Auto-page any output of ports.php that exceeds the pagesize


git-svn-id: http://svn.macports.org/repository/macports/trunk@35225 
d073be05-634f-4543-b044-5fe20cf6d1d6
kballard (author)
Thu Mar 20 23:31:53 -0700 2008
commit  63fb50f0c3fe5ae79fad47732075937bac8e66a1
tree    0f95c0cf2ea349d59f39d3ba7acc13f5539f6408
parent  3c4489ca1ed06f1657ecb182aaad82d8cfa48e0a
...
112
113
114
115
116
117
118
119
120
121
122
123
124
...
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
151
152
153
154
 
155
156
 
157
158
 
159
160
161
162
 
 
 
163
164
165
...
112
113
114
 
115
116
117
118
119
120
121
122
123
...
119
120
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
 
152
153
 
154
155
 
156
157
 
158
159
160
161
 
162
163
164
165
166
167
0
@@ -112,7 +112,6 @@
0
             break;
0
         case 'all':
0
             $criteria = '';
0
- $paging = true;
0
             break;
0
         default:
0
             $criteria = '0';
0
0
0
0
0
0
0
@@ -120,46 +119,49 @@
0
         }
0
         $where = ($criteria == '' ? '' : "WHERE $criteria");
0
         $query = "SELECT DISTINCT $fields FROM $tables $where ORDER BY name";
0
- if ($paging) {
0
- $offset = $pagesize * ($page-1);
0
- $query .= " LIMIT $pagesize OFFSET $offset";
0
- # get the total count
0
- $countquery = "SELECT COUNT(*) FROM $tables $where ORDER By name";
0
- $result = mysql_query($countquery);
0
- $row = mysql_fetch_array($result); # only 1 row
0
- $totalcount = $row[0];
0
- $pagecount = ceil($totalcount / $pagesize);
0
- # generate a paging control and cache it so we can show it twice
0
- $pagecontrol = "<p>Page ";
0
- for ($i = 1; $i <= $pagecount; $i++) {
0
- if ($i != 1) {
0
- $pagecontrol .= " | ";
0
- }
0
- if ($i == $page) {
0
- $pagecontrol .= "<b>$i</b>";
0
- } else {
0
- $pagecontrol .= "<a href=\"$_SERVER[PHP_SELF]?by=$by&amp;substr=$substr&amp;page=$i&amp;pagesize=$pagesize\">$i</a>";
0
- }
0
- }
0
- $pagecontrol .= "</p>";
0
- }
0
         $result = mysql_query($query);
0
         
0
         /* Main query sent to the DB */
0
         if ($result) {
0
+ $numrows = mysql_num_rows($result);
0
+ if ($numrows > $pagesize) {
0
+ $paging = true;
0
+ $pagecount = ceil($numrows / $pagesize);
0
+ $page = min($page, $pagecount);
0
+ $offset = $pagesize * ($page-1);
0
+ $curpagesize = min($pagesize, $numrows - $offset);
0
+ # generate a paging control and cache it so we can show it twice
0
+ $pagecontrol = "<p>Page ";
0
+ for ($i = 1; $i <= $pagecount; $i++) {
0
+ if ($i != 1) {
0
+ $pagecontrol .= " | ";
0
+ }
0
+ if ($i == $page) {
0
+ $pagecontrol .= "<b>$i</b>";
0
+ } else {
0
+ $pagecontrol .= "<a href=\"$_SERVER[PHP_SELF]?by=$by&amp;substr=$substr&amp;page=$i&amp;pagesize=$pagesize\">$i</a>";
0
+ }
0
+ }
0
+ $pagecontrol .= "</p>";
0
+
0
+ # seek the data pointer
0
+ mysql_data_seek($result, $offset);
0
+ }
0
+
0
             print '<h3>Query Results</h3>';
0
- $resultrows = mysql_num_rows($result);
0
             if ($paging) {
0
                 print $pagecontrol;
0
- $numrows = ($offset+1) . "-" . ($offset + $resultrows) . " of $totalcount Portfile" . ($totalcount == 1 ? '' : 's');
0
+ $numrowtext = ($offset+1) . "-" . ($offset + $curpagesize) . " of $numrows Portfile" . ($curpagesize == 1 ? '' : 's');
0
             } else {
0
- $numrows = "$resultrows Portfile" . ($resultrows == 1 ? '' : 's');
0
+ $numrowtext = "$numrows Portfile" . ($numrows == 1 ? '' : 's');
0
             }
0
- print "<p><i>$numrows Selected</i></p>";
0
+ print "<p><i>$numrowtext Selected</i></p>";
0
 
0
             print '<dl>';
0
             /* Iterate over the entire set of returned ports */
0
- while ($row = mysql_fetch_assoc($result)) {
0
+ for ($row = mysql_fetch_assoc($result), $i = 0;
0
+ $row && (!$paging || $i < $curpagesize);
0
+ $row = mysql_fetch_assoc($result), $i++) {
0
 
0
                 /* Port name and Portfile URL */
0
                 print "<dt><b><a href=\"${trac_url}browser/trunk/dports/$row[path]/Portfile\">" . htmlspecialchars($row['name'])

Comments

    No one has commented yet.