pkg_details.php 12.7 KB
Newer Older
1
<?php
2
3
$atype = account_from_sid($SID);
$uid = uid_from_sid($SID);
4

5
$pkgid = intval($row['ID']);
6
$base_id = intval($row['BaseID']);
7

8
$catarr = pkgbase_categories();
9

10
11
$submitter = username_from_id($row["SubmitterUID"]);
$maintainer = username_from_id($row["MaintainerUID"]);
12

13
$votes = $row['NumVotes'];
14

15
16
17
18
19
# In case of wanting to put a custom message
$msg = __('unknown');
$license = empty($row['License']) ? $msg : $row['License'];

# Print the timestamps for last updates
20
21
22
$updated_time = ($row["ModifiedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["ModifiedTS"]));
$submitted_time = ($row["SubmittedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["SubmittedTS"]));
$out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : gmdate("Y-m-d", intval($row["OutOfDateTS"]));
23

24
$urlpath = URL_DIR . substr($row['BaseName'], 0, 2) . "/" . $row['BaseName'];
Lukas Fleischer's avatar
Lukas Fleischer committed
25

26
$lics = pkg_licenses($row["ID"]);
27
28
$grps = pkg_groups($row["ID"]);

29
30
$deps = pkg_dependencies($row["ID"]);
$requiredby = pkg_required($row["Name"]);
31

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$rels = pkg_relations($row["ID"]);
$rels_c = $rels_p = $rels_r = array();
foreach ($rels as $rel) {
	switch ($rel[1]) {
	case "conflicts":
		$rels_c[] = $rel;
		break;
	case "provides":
		$rels_p[] = $rel;
		break;
	case "replaces":
		$rels_r[] = $rel;
		break;
	}
}

48
# $sources[0] = 'src';
49
$sources = pkg_sources($row["ID"]);
50
51
?>
<div id="pkgdetails" class="box">
Lukas Fleischer's avatar
Lukas Fleischer committed
52
	<h2><?= __('Package Details') . ': ' . htmlspecialchars($row['Name']) . ' ' . htmlspecialchars($row['Version']) ?></h2>
53
54
	<div id="detailslinks" class="listing">
		<div id="actionlist">
55
			<h4><?= __('Package Actions') ?></h4>
56
			<ul class="small">
Lukas Fleischer's avatar
Lukas Fleischer committed
57
				<li><a href="<?= $urlpath ?>/PKGBUILD"><?= __('View PKGBUILD') ?></a></li>
58
				<li><a href="<?= $urlpath . '/' . $row['BaseName'] ?>.tar.gz"><?= __('Download tarball') ?></a></li>
59
				<li><span class="flagged"><?php if ($row["OutOfDateTS"] !== NULL) { echo __('Flagged out-of-date')." (${out_of_date_time})"; } ?></span></li>
60
				<?php if ($USE_VIRTUAL_URLS && $uid): ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
61
				<?php if ($row["OutOfDateTS"] === NULL): ?>
62
				<li>
63
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'flag/'; ?>" method="post">
64
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
65
66
67
						<input type="submit" class="button text-button" name="do_Flag" value="<?= __('Flag package out-of-date') ?>" />
					</form>
				</li>
68
69
				<?php elseif (($row["OutOfDateTS"] !== NULL) &&
				($uid == $row["MaintainerUID"] || $atype == "Trusted User" || $atype == "Developer")): ?>
70
				<li>
71
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unflag/'; ?>" method="post">
72
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
73
74
75
						<input type="submit" class="button text-button" name="do_UnFlag" value="<?= __('Unflag package') ?>" />
					</form>
				</li>
Lukas Fleischer's avatar
Lukas Fleischer committed
76
				<?php endif; ?>
77
				<?php if (pkgbase_user_voted($uid, $base_id)): ?>
78
				<li>
79
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unvote/'; ?>" method="post">
80
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
81
82
83
						<input type="submit" class="button text-button" name="do_UnVote" value="<?= __('Remove vote') ?>" />
					</form>
				</li>
84
				<?php else: ?>
85
				<li>
86
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'vote/'; ?>" method="post">
87
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
88
89
90
						<input type="submit" class="button text-button" name="do_Vote" value="<?= __('Vote for this package') ?>" />
					</form>
				</li>
91
				<?php endif; ?>
92
				<?php if (pkgbase_user_notify($uid, $base_id)): ?>
93
				<li>
94
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unnotify/'; ?>" method="post">
95
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
96
97
98
						<input type="submit" class="button text-button" name="do_UnNotify" value="<?= __('Disable notifications') ?>" />
					</form>
				</li>
99
				<?php else: ?>
100
				<li>
101
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'notify/'; ?>" method="post">
102
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
103
104
105
						<input type="submit" class="button text-button" name="do_Notify" value="<?= __('Notify of new comments') ?>" />
					</form>
				</li>
106
				<?php endif; ?>
107
				<?php if ($atype == "Trusted User" || $atype == "Developer"): ?>
108
109
				<li><a href="<?= get_pkgbase_uri($row['BaseName']) . 'delete/'; ?>"><?= __('Delete Package'); ?></a></li>
				<li><a href="<?= get_pkgbase_uri($row['BaseName']) . 'merge/'; ?>"><?= __('Merge Package'); ?></a></li>
110
				<?php endif; ?>
111
				<?php endif; ?>
112
113
114

				<?php if ($uid && $row["MaintainerUID"] === NULL): ?>
				<li>
115
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'adopt/'; ?>" method="post">
116
117
118
119
120
121
122
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
						<input type="submit" class="button text-button" name="do_Adopt" value="<?= __('Adopt Package') ?>" />
					</form>
				</li>
				<?php elseif ($uid && $uid == $row["MaintainerUID"] ||
					$atype == "Trusted User" || $atype == "Developer"): ?>
				<li>
123
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'disown/'; ?>" method="post">
124
125
126
127
128
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
						<input type="submit" class="button text-button" name="do_Disown" value="<?= __('Disown Package') ?>" />
					</form>
				</li>
				<?php endif; ?>
129
130
131
			</ul>
		</div>
	</div>
132

133
	<table id="pkginfo">
134
135
136
137
		<tr>
			<th><?= __('Package Base') . ': ' ?></th>
			<td class="wrap"><a href="<?= htmlspecialchars(get_pkgbase_uri($row['BaseName']), ENT_QUOTES); ?>"><?= htmlspecialchars($row['BaseName']); ?></a></td>
		</tr>
138
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
139
140
			<th><?= __('Description') . ': ' ?></th>
			<td class="wrap"><?= htmlspecialchars($row['Description']); ?></td>
141
142
		</tr>
		<tr>
143
			<th><?= __('Upstream URL') . ': ' ?></th>
Lukas Fleischer's avatar
Lukas Fleischer committed
144
			<td><a href="<?= htmlspecialchars($row['URL'], ENT_QUOTES) ?>" title="<?= __('Visit the website for') . ' ' . htmlspecialchars( $row['Name'])?>"><?= htmlspecialchars($row['URL'], ENT_QUOTES) ?></a></td>
145
146
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
147
			<th><?= __('Category') . ': ' ?></th>
148
<?php
149
150
if ($SID && ($uid == $row["MaintainerUID"] ||
	($atype == "Developer" || $atype == "Trusted User"))):
151
?>
152
			<td>
153
				<form method="post" action="<?= htmlspecialchars(get_pkgbase_uri($row['BaseName']), ENT_QUOTES); ?>">
154
155
					<div>
						<input type="hidden" name="action" value="do_ChangeCategory" />
Lukas Fleischer's avatar
Lukas Fleischer committed
156
						<?php if ($SID): ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
157
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
Lukas Fleischer's avatar
Lukas Fleischer committed
158
						<?php endif; ?>
159
						<select name="category_id">
160
<?php
161
	foreach ($catarr as $cid => $catname):
162
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
163
							<option value="<?= $cid ?>"<?php if ($cid == $row["CategoryID"]) { ?> selected="selected" <?php } ?>><?= $catname ?></option>
164
165
	<?php endforeach; ?>
						</select>
Lukas Fleischer's avatar
Lukas Fleischer committed
166
						<input type="submit" value="<?= __('Change category') ?>"/>
167
168
169
170
					</div>
				</form>
<?php else: ?>
			<td>
Lukas Fleischer's avatar
Lukas Fleischer committed
171
				<a href="<?= get_uri('/packages/'); ?>?C=<?= $row['CategoryID'] ?>"><?= $row['Category'] ?></a>
172
173
<?php endif; ?>
			</td>
174
		</tr>
175
		<?php if (count($lics) > 0): ?>
176
		<tr>
177
178
179
180
181
182
183
184
185
186
187
188
			<th><?= __('Licenses') . ': ' ?></th>
			<td class="wrap">
				<?php foreach($lics as $lic): ?>
				<span class="related">
					<?php if ($lic !== end($lics)): ?>
					<?= htmlspecialchars($lic) ?>,
					<?php else: ?>
					<?= htmlspecialchars($lic) ?>
					<?php endif; ?>
				</span>
				<?php endforeach; ?>
			</td>
189
		</tr>
190
		<?php endif; ?>
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
		<?php if (count($grps) > 0): ?>
		<tr>
			<th><?= __('Groups') . ': ' ?></th>
			<td class="wrap">
				<?php foreach($grps as $grp): ?>
				<span class="related">
					<?php if ($grp !== end($grps)): ?>
					<?= htmlspecialchars($grp) ?>,
					<?php else: ?>
					<?= htmlspecialchars($grp) ?>
					<?php endif; ?>
				</span>
				<?php endforeach; ?>
			</td>
		</tr>
		<?php endif; ?>
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
		<?php if (count($rels_c) > 0): ?>
		<tr>
			<th><?= __('Conflicts') . ': ' ?></th>
			<td class="wrap relatedto">
				<?php foreach($rels_c as $rarr): ?>
				<span class="related">
					<?php if ($rarr !== end($rels_c)): ?>
					<?= htmlspecialchars($rarr[0]) ?>,
					<?php else: ?>
					<?= htmlspecialchars($rarr[0]) ?>
					<?php endif; ?>
				</span>
				<?php endforeach; ?>
			</td>
		</tr>
		<?php endif; ?>
		<?php if (count($rels_p) > 0): ?>
		<tr>
			<th><?= __('Provides') . ': ' ?></th>
			<td class="wrap relatedto">
				<?php foreach($rels_p as $rarr): ?>
				<span class="related">
					<?php if ($rarr !== end($rels_p)): ?>
					<?= htmlspecialchars($rarr[0]) ?>,
					<?php else: ?>
					<?= htmlspecialchars($rarr[0]) ?>
					<?php endif; ?>
				</span>
				<?php endforeach; ?>
			</td>
		</tr>
		<?php endif; ?>
		<?php if (count($rels_r) > 0): ?>
		<tr>
			<th><?= __('Replaces') . ': ' ?></th>
			<td class="wrap relatedto">
				<?php foreach($rels_r as $rarr): ?>
				<span class="related">
					<?php if ($rarr !== end($rels_r)): ?>
					<?= htmlspecialchars($rarr[0]) ?>,
					<?php else: ?>
					<?= htmlspecialchars($rarr[0]) ?>
					<?php endif; ?>
				</span>
				<?php endforeach; ?>
			</td>
		</tr>
		<?php endif; ?>
255
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
256
			<th><?= __('Submitter') .': ' ?></th>
257
<?php
258
259
if ($row["SubmitterUID"]):
	if ($SID):
260
		if (!$USE_VIRTUAL_URLS):
261
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
262
			<td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&amp;ID=<?= htmlspecialchars($row['SubmitterUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= htmlspecialchars($submitter) ?>"><?= htmlspecialchars($submitter) ?></a></td>
263
264
265
		<?php else: ?>
			<td><a href="<?= get_uri('/account/') . htmlspecialchars($submitter, ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($submitter)) ?>"><?= htmlspecialchars($submitter) ?></a></td>
		<?php endif; ?>
266
<?php else: ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
267
		<td><?= htmlspecialchars($submitter) ?></td>
268
269
	<?php endif; ?>
<?php else: ?>
270
			<td><?= __('None') ?></td>
271
<?php endif; ?>
272
		</tr>
273
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
274
			<th><?= __('Maintainer') .': ' ?></th>
275
<?php
276
277
if ($row["MaintainerUID"]):
	if ($SID):
278
		if (!$USE_VIRTUAL_URLS):
279
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
280
			<td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&amp;ID=<?= htmlspecialchars($row['MaintainerUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= htmlspecialchars($maintainer) ?>"><?= htmlspecialchars($maintainer) ?></a></td>
281
282
283
		<?php else: ?>
			<td><a href="<?= get_uri('/account/') . htmlspecialchars($maintainer, ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($maintainer)) ?>"><?= htmlspecialchars($maintainer) ?></a></td>
		<?php endif; ?>
284
	<?php else: ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
285
		<td><?= htmlspecialchars($maintainer) ?></td>
286
287
	<?php endif; ?>
<?php else: ?>
288
			<td><?= __('None') ?></td>
289
290
291
<?php endif; ?>
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
292
			<th><?= __('Votes') . ': ' ?></th>
293
294
<?php if ($atype == "Developer" || $atype == "Trusted User"): ?>
<?php if ($USE_VIRTUAL_URLS): ?>
295
			<td><a href="<?= get_pkgbase_uri($row['BaseName']); ?>voters/"><?= $votes ?></a></td>
296
<?php else: ?>
297
			<td><a href="<?= get_uri('/voters/'); ?>?N=<?= htmlspecialchars($row['BaseName'], ENT_QUOTES) ?>"><?= $votes ?></a></td>
298
<?php endif; ?>
299
<?php else: ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
300
			<td><?= $votes ?></td>
301
302
303
<?php endif; ?>
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
304
305
			<th><?= __('First Submitted') . ': ' ?></th>
			<td><?= $submitted_time ?></td>
306
307
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
308
309
			<th><?= __('Last Updated') . ': ' ?></th>
			<td><?= $updated_time ?></td>
310
311
312
313
314
		</tr>
	</table>

	<div id="metadata">
		<div id="pkgdeps" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
315
			<h3><?= __('Dependencies') . " (" . count($deps) . ")"?></h3>
316
<?php if (count($deps) > 0): ?>
317
			<ul id="pkgdepslist">
318
319
320
<?php while (list($k, $darr) = each($deps)): ?>
	<li><?= pkg_depend_link($darr[0], $darr[1], $darr[2], $darr[3]); ?></li>
<?php endwhile; ?>
321
322
			</ul>
<?php endif; ?>
323
		</div>
324
		<div id="pkgreqs" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
325
			<h3><?= __('Required by') . " (" . count($requiredby) . ")"?></h3>
326
<?php if (count($requiredby) > 0): ?>
327
			<ul id="pkgreqslist">
328
329
330
<?php
	# darr: (PackageName, PackageID)
	while (list($k, $darr) = each($requiredby)):
331
?>
332
				<li><a href="<?= htmlspecialchars(get_pkg_uri($darr[0]), ENT_QUOTES); ?>" title="<?= __('View packages details for').' ' . htmlspecialchars($darr[0]) ?>"><?= htmlspecialchars($darr[0]) ?></a></li>
333
334
335
336
337
	<?php endwhile; ?>
			</ul>
<?php endif; ?>
		</div>
		<div id="pkgfiles" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
338
			<h3><?= __('Sources') ?></h3>
339
340
		</div>
<?php if (count($sources) > 0): ?>
341
		<div>
342
343
344
345
346
			<ul>
<?php
	while (list($k, $src) = each($sources)):
		$src = explode('::', $src);
		$parsed_url = parse_url($src[0]);
347

348
349
350
		# It is an external source
		if (isset($parsed_url['scheme']) || isset($src[1])):
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
351
				<li><a href="<?= htmlspecialchars((isset($src[1]) ? $src[1] : $src[0]), ENT_QUOTES) ?>"><?= htmlspecialchars($src[0]) ?> </a></li>
352
353
354
355
356
<?php
		else:
			# It is presumably an internal source
			$src = $src[0];
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
357
				<li><?= htmlspecialchars($src) ?></li>
358
359
360
361
362
		<?php endif; ?>
	<?php endwhile; ?>
			</ul>
		</div>
<?php endif; ?>
363
364
	</div>
</div>