pkgs.inc 9.74 KB
Newer Older
eric's avatar
eric committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?
include_once("pkgs_po.inc");

# grab the current list of PackageCategories
#
function pkgCategories() {
	$cats = array();
	$dbh = db_connect();
	$q = "SELECT * FROM PackageCategories ";
	$q.= "ORDER BY Category ASC";
	$result = db_query($q, $dbh);
	if ($result) {
		while ($row = mysql_fetch_row($result)) {
			$cats[$row[0]] = $row[1];
		}
	}
	return $cats;
}

# grab the current list of PackageLocations
#
function pkgLocations() {
	$locs = array();
	$dbh = db_connect();
	$q = "SELECT * FROM PackageLocations ";
	$q.= "ORDER BY Location ASC";
	$result = db_query($q, $dbh);
	if ($result) {
		while ($row = mysql_fetch_row($result)) {
			$locs[$row[0]] = $row[1];
		}
	}
	return $locs;
}

# display the search form in a boxSoft style
#
38
function pkg_search_page($L="",$C="",$K="",$SB="",$O=0,$PP=25) {
eric's avatar
eric committed
39
40
41
42
	# L: PackageLocations.ID
	# C: PackageCategories.ID
	# K: Keywords
	# SB: Sort by
43
	# O: Row offset
eric's avatar
eric committed
44
45
46
	# PP: Per page
	$locs = pkgLocations();
	$cats = pkgCategories();
47
48
49
	$devs = getDevelopers();
	$tus = getTrustedUsers();
	$dbh = db_connect();
eric's avatar
eric committed
50

eric's avatar
eric committed
51
52
53
54
55
56
57
58
59
	if ($O) {
		$OFFSET = intval($O);
	} else {
		$OFFSET = 0;
	}
	if ($OFFSET < 0) {
		$OFFSET = 0;
	}

eric's avatar
eric committed
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
	print "<center>\n";
	print "<table cellspacing='3' class='boxSoft'>\n";
	print "<tr>\n";
	print "  <td class='boxSoftTitle' align='right'>\n";
	print "    <span class='boxSoftTitle'>".__("Search Criteria")."</span>\n";
	print "  </td>\n";
	print "</tr>\n";
	print "<tr>\n";
	print "  <td class='boxSoft'>\n";
	print "<form action='/pkgsearch.php' method='post'>\n";
	print "<input type='hidden' name='Action' value='SearchPkgs'>\n";
	print "<table style='width: 100%' align='center'>\n";

	print "<tr>\n";
	print "<td align='right'>\n";
	print "  <span class='f5'><span class='blue'>".__("Location");
76
	print "</span></span><br />\n";
eric's avatar
eric committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
	print "  <select name='L'>\n";
	print "  <option value=0> ".__("Any")."\n";
	while (list($id, $loc) = each($locs)) {
		if ($L == $id) {
			print "  <option value=".$id." selected> ".$loc."\n";
		} else {
			print "  <option value=".$id."> ".$loc."\n";
		}
	}
	print "  </select>\n";
	print "</td>\n";

	print "<td align='right'>\n";
	print "  <span class='f5'><span class='blue'>".__("Category");
91
	print "</span></span><br />\n";
eric's avatar
eric committed
92
93
94
95
96
97
98
99
100
101
102
103
104
105
	print "  <select name='C'>\n";
	print "  <option value=0> ".__("Any")."\n";
	while (list($id, $cat) = each($cats)) {
		if ($C == $id) {
			print "  <option value=".$id." selected> ".$cat."\n";
		} else {
			print "  <option value=".$id."> ".$cat."\n";
		}
	}
	print "  </select>\n";
	print "</td>\n";

	print "<td align='right'>\n";
	print "  <span class='f5'><span class='blue'>".__("Keywords");
106
	print "</span></span><br />\n";
eric's avatar
eric committed
107
108
109
110
111
112
	print "  <input type='text' name='K' size='35'";
	print " value='".$K."' maxlength='35'>\n";
	print "</td>\n";

	print "<td align='right'>\n";
	print "  <span class='f5'><span class='blue'>".__("Sort by");
113
	print "</span></span><br />\n";
eric's avatar
eric committed
114
	print "  <select name='SB'>\n";
115
	print "  <option value=n";
116
	$SB == "n" ? print " selected> " : print "> ";
117
	print __("Name")."\n";
eric's avatar
eric committed
118
	print "  <option value=c";
119
	$SB == "c" ? print " selected> " : print "> ";
eric's avatar
eric committed
120
121
	print __("Category")."\n";
	print "  <option value=l";
122
	$SB == "l" ? print " selected> " : print "> ";
eric's avatar
eric committed
123
	print __("Location")."\n";
124
125
	print "  <option value=v";
	$SB == "v" ? print " selected> " : print "> ";
126
	print __("Votes")."\n";
eric's avatar
eric committed
127
128
129
130
131
	print "  </select>\n";
	print "</td>\n";

	print "<td align='right'>\n";
	print "  <span class='f5'><span class='blue'>".__("Per page");
132
	print "</span></span><br />\n";
eric's avatar
eric committed
133
134
	print "  <select name='PP'>\n";
	print "  <option value=25";
135
	$PP == 25 ? print " selected> 25\n" : print "> 25\n";
eric's avatar
eric committed
136
	print "  <option value=50";
137
	$PP == 50 ? print " selected> 50\n" : print "> 50\n";
eric's avatar
eric committed
138
	print "  <option value=75";
139
	$PP == 75 ? print " selected> 75\n" : print "> 75\n";
eric's avatar
eric committed
140
	print "  <option value=100";
141
	$PP == 100 ? print " selected> 100\n" : print "> 100\n";
eric's avatar
eric committed
142
143
144
145
146
147
148
149
150
	print "  </select>\n";
	print "</td>\n";

	print "<td align='right' valign='bottom'>&nbsp;\n";
	print "  <input type='submit' class='button' value='Go'>\n";
	print "</td>\n";

	print "</tr>\n";
	print "</table>\n";
151

eric's avatar
eric committed
152
	print "</form>\n";
153
154
155
156
157
158
159
160
	print "  </td>\n";
	print "</tr>\n";
	print "</table>\n";
	print "</center>\n";
	print "<br />\n";

	# query to pull out package info
	#
161
	$q = "SELECT Packages.*, IF(ISNULL(PackageID), 0, COUNT(*)) AS Votes ";
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
	$q.= "FROM Packages LEFT JOIN PackageVotes ";
	$q.= "ON Packages.ID = PackageVotes.PackageID ";
	$has_where = 0;
	if ($L) {
		$q.= "WHERE LocationID = ".intval($L)." ";
		$has_where = 1;
	}
	if ($C) {
		if (!$has_where) {
			$q.= "WHERE CategoryID = ".intval($C)." ";
			$has_where = 1;
		} else {
			$q.= "AND CategoryID = ".intval($C)." ";
		}
	}
	if ($K) {
		if (!$has_where) {
			$q.= "WHERE (Name LIKE '".mysql_escape_string($K)."%' OR ";
			$q.= "Description LIKE '%".mysql_escape_string($K)."%') ";
			$has_where = 1;
		} else {
			$q.= "AND (Name LIKE '".mysql_escape_string($K)."%' OR ";
			$q.= "Description LIKE '%".mysql_escape_string($K)."%') ";
		}
	}

	$q.= "GROUP BY PackageID ";
	switch ($SB) {
		case 'c':
			$q.= "ORDER BY CategoryID ASC, Name ASC, LocationID ASC ";
			break;
		case 'l':
			$q.= "ORDER BY LocationID ASC, Name ASC, CategoryID ASC ";
			break;
196
197
198
		case 'v':
			$q.= "ORDER BY Votes DESC, Name ASC, CategoryID ASC ";
			break;
199
200
201
202
		default:
			$q.= "ORDER BY Name ASC, LocationID ASC, CategoryID ASC ";
			break;
	}
eric's avatar
eric committed
203
	$q.= "LIMIT ".$OFFSET.", ".intval($PP);
204
205
206
207
	$result = db_query($q, $dbh);
	if (!$result) {
		print __("No packages matched your search criteria.");

eric's avatar
eric committed
208
209
210
211
	} elseif (!mysql_num_rows($result)) {
		print __("No packages matched your search criteria.");

	} else {
212
213
214
215
216
217
		# print out package search results
		#
		print "<center>\n";
		print "<table cellspacing='3' class='boxSoft'>\n";
		print "<tr>\n";
		print "  <td class='boxSoftTitle' align='right'>\n";
218
		print "    <span class='f3'>Package Listing</span>\n";
219
		print "  </td>\n";
220
221
		print "</tr>\n";
		print "<tr>\n";
222
		print "  <td class='boxSoft'>\n";
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
		print "<table width='100%' cellspacing='0' cellpadding='2'>\n";
		print "<tr>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Location")."</span></th>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Category")."</span></th>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Name")."</span></th>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Votes")."</span></th>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Description")."</span></th>\n";
		print "  <th style='border-bottom: #666 1px solid; vertical-align:";
		print " bottom'><span class='f2'>".__("Maintainer")."</span></th>\n";
		print "</tr>\n";
238

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
		for ($i=0; $row = mysql_fetch_assoc($result); $i++) {
			(($i % 2) == 0) ? $c = "data1" : $c = "data2";
			print "<tr>\n";
			print "  <td class='".$c."'><span class='f5'><span class='blue'>";
			print $locs[$row["LocationID"]]."</span></span></td>\n";
			print "  <td class='".$c."'><span class='f5'><span class='blue'>";
			print $cats[$row["CategoryID"]]."</span></span></td>\n";
			print "  <td class='".$c."'><span class='f4'><span class='blue'>";
			print $row["Name"]."-".$row["Version"]."</span></span></td>\n";
			print "  <td class='".$c."'><span class='f5'><span class='blue'>";
			print "&nbsp;&nbsp;&nbsp;".$row["Votes"]."</span></span></td>\n";
			print "  <td class='".$c."'><span class='f4'><span class='blue'>";
			print $row["Description"]."</span></span></td>\n";
			print "  <td class='".$c."'><span class='f5'><span class='blue'>";
			if (isset($devs[$row["MaintainerUID"]])) {
				print $devs[$row["MaintainerUID"]]["Username"];
			} elseif (isset($tus[$row["MaintainerUID"]])) {
				print $tus[$row["MaintainerUID"]]["Username"];
			} else {
				print "None";
			}
			print "</span></span></td>\n";

			print "</tr>\n";

		}
		print "</table>\n";
eric's avatar
eric committed
266
267
268
		print "  </td>\n";
		print "</tr>\n";
		print "</table>\n";
269

eric's avatar
eric committed
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
		print "<br />\n";
		print "<table width='90%' cellspacing='0' cellpadding='2'>\n";
		print "<tr>\n";
		print "  <td>\n";
		print "  <table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
		print "  <tr>\n";
		print "    <td align='left'>";
		print "    <form action='/pkgsearch.php' method='post'>\n";
		print "    <input type='hidden' name='Action' value='SearchPkgs'>\n";
		print "    <input type='hidden' name='O' value='".($OFFSET-intval($PP))."'>\n";
		print "    <input type='hidden' name='L' value='".$L."'>\n";
		print "    <input type='hidden' name='C' value='".$C."'>\n";
		print "    <input type='hidden' name='K' value='".$K."'>\n";
		print "    <input type='hidden' name='SB' value='".$SB."'>\n";
		print "    <input type='hidden' name='PP' value='".$PP."'>\n";
		print "    <input type='submit' class='button'";
		print " value='&lt;-- ".__("Less")."'>\n";
		print "    </form>\n";
		print "    </td>\n";
		print "    <td align='right'>";
		print "    <form action='/pkgsearch.php' method='post'>\n";
		print "    <input type='hidden' name='Action' value='SearchPkgs'>\n";
		print "    <input type='hidden' name='O' value='".($OFFSET+intval($PP))."'>\n";
		print "    <input type='hidden' name='L' value='".$L."'>\n";
		print "    <input type='hidden' name='C' value='".$C."'>\n";
		print "    <input type='hidden' name='K' value='".$K."'>\n";
		print "    <input type='hidden' name='SB' value='".$SB."'>\n";
		print "    <input type='hidden' name='PP' value='".$PP."'>\n";
		print "    <input type='submit' class='button'";
		print " value='".__("More")." --&gt;'>\n";
		print "    </form>\n";
		print "    </td>\n";
		print "  </tr>\n";
		print "  </table>\n";
304
305
306
307
308
309
		print "  </td>\n";
		print "</tr>\n";
		print "</table>\n";
		print "</center>\n";
	}

eric's avatar
eric committed
310
311
312
313
314
	return;
}

# vim: ts=2 sw=2 noet ft=php
?>