pkg_details.php 13.9 KB
Newer Older
1
<?php
2
$uid = uid_from_sid($SID);
3

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

7
$catarr = pkgbase_categories();
8

9
10
$submitter = username_from_id($row["SubmitterUID"]);
$maintainer = username_from_id($row["MaintainerUID"]);
11
$packager = username_from_id($row["PackagerUID"]);
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><a href="https://wiki.archlinux.org/index.php/Special:Search?search=<?= urlencode($row['Name']) ?>"><?= __('Search wiki') ?></a></li>
60
				<li><span class="flagged"><?php if ($row["OutOfDateTS"] !== NULL) { echo __('Flagged out-of-date')." (${out_of_date_time})"; } ?></span></li>
61
				<?php if ($USE_VIRTUAL_URLS && $uid): ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
62
				<?php if ($row["OutOfDateTS"] === NULL): ?>
63
				<li>
64
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'flag/'; ?>" method="post">
65
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
66
67
68
						<input type="submit" class="button text-button" name="do_Flag" value="<?= __('Flag package out-of-date') ?>" />
					</form>
				</li>
Lukas Fleischer's avatar
Lukas Fleischer committed
69
				<?php elseif (($row["OutOfDateTS"] !== NULL) && has_credential(CRED_PKGBASE_UNFLAG, array($row["MaintainerUID"]))): ?>
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
				<li><span class="flagged"><?php if ($row["RequestCount"] > 0) { echo _n('%d pending request', '%d pending requests', $row["RequestCount"]); } ?></span></li>
108
				<li><a href="<?= get_pkgbase_uri($row['BaseName']) . 'request/'; ?>"><?= __('File Request'); ?></a></li>
Lukas Fleischer's avatar
Lukas Fleischer committed
109
				<?php if (has_credential(CRED_PKGBASE_DELETE)): ?>
110
111
				<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>
112
				<?php endif; ?>
113
				<?php endif; ?>
114
115
116

				<?php if ($uid && $row["MaintainerUID"] === NULL): ?>
				<li>
117
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'adopt/'; ?>" method="post">
118
119
120
121
						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
						<input type="submit" class="button text-button" name="do_Adopt" value="<?= __('Adopt Package') ?>" />
					</form>
				</li>
Lukas Fleischer's avatar
Lukas Fleischer committed
122
				<?php elseif (has_credential(CRED_PKGBASE_DISOWN, array($row["MaintainerUID"]))): ?>
123
				<li>
124
					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'disown/'; ?>" method="post">
125
126
127
128
129
						<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; ?>
130
131
132
			</ul>
		</div>
	</div>
133

134
	<table id="pkginfo">
135
136
137
138
		<tr>
			<th><?= __('Package Base') . ': ' ?></th>
			<td class="wrap"><a href="<?= htmlspecialchars(get_pkgbase_uri($row['BaseName']), ENT_QUOTES); ?>"><?= htmlspecialchars($row['BaseName']); ?></a></td>
		</tr>
139
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
140
141
			<th><?= __('Description') . ': ' ?></th>
			<td class="wrap"><?= htmlspecialchars($row['Description']); ?></td>
142
143
		</tr>
		<tr>
144
			<th><?= __('Upstream URL') . ': ' ?></th>
Lukas Fleischer's avatar
Lukas Fleischer committed
145
			<td><a href="<?= htmlspecialchars($row['URL'], ENT_QUOTES) ?>" title="<?= __('Visit the website for') . ' ' . htmlspecialchars( $row['Name'])?>"><?= htmlspecialchars($row['URL'], ENT_QUOTES) ?></a></td>
146
147
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
148
			<th><?= __('Category') . ': ' ?></th>
149
<?php
Lukas Fleischer's avatar
Lukas Fleischer committed
150
if (has_credential(CRED_PKGBASE_CHANGE_CATEGORY, array($row["MaintainerUID"]))):
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
		<?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)): ?>
214
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>,
215
					<?php else: ?>
216
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>
217
218
219
220
221
222
223
224
225
226
227
228
229
					<?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)): ?>
230
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>,
231
					<?php else: ?>
232
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>
233
234
235
236
237
238
239
240
241
242
243
244
245
					<?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)): ?>
246
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>,
247
					<?php else: ?>
248
					<?= htmlspecialchars($rarr[0] . $rarr[2]) ?>
249
250
251
252
253
254
					<?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
?>
262
			<td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&amp;ID=<?= htmlspecialchars($row['SubmitterUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= html_format_username($submitter) ?>"><?= html_format_username($submitter) ?></a></td>
263
		<?php else: ?>
264
			<td><a href="<?= get_uri('/account/') . html_format_username($submitter) ?>" title="<?= __('View account information for %s', html_format_username($submitter)) ?>"><?= html_format_username($submitter) ?></a></td>
265
		<?php endif; ?>
266
<?php else: ?>
267
		<td><?= html_format_username($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
?>
280
			<td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&amp;ID=<?= htmlspecialchars($row['MaintainerUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= html_format_username($maintainer) ?>"><?= html_format_username($maintainer) ?></a></td>
281
		<?php else: ?>
282
			<td><a href="<?= get_uri('/account/') . html_format_username($maintainer) ?>" title="<?= __('View account information for %s', html_format_username($maintainer)) ?>"><?= html_format_username($maintainer) ?></a></td>
283
		<?php endif; ?>
284
	<?php else: ?>
285
		<td><?= html_format_username($maintainer) ?></td>
286
287
	<?php endif; ?>
<?php else: ?>
288
			<td><?= __('None') ?></td>
289
290
291
292
293
294
295
296
297
<?php endif; ?>
		</tr>
		<tr>
				<th><?= __('Last Packager') .': ' ?></th>
<?php
if ($row["PackagerUID"]):
	if ($SID):
		if (!$USE_VIRTUAL_URLS):
?>
298
			<td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&amp;ID=<?= htmlspecialchars($row['PackagerUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= html_format_username($packager) ?>"><?= html_format_username($packager) ?></a></td>
299
		<?php else: ?>
300
			<td><a href="<?= get_uri('/account/') . html_format_username($packager) ?>" title="<?= __('View account information for %s', html_format_username($packager)) ?>"><?= html_format_username($packager) ?></a></td>
301
302
		<?php endif; ?>
	<?php else: ?>
303
		<td><?= html_format_username($packager) ?></td>
304
305
306
	<?php endif; ?>
<?php else: ?>
			<td><?= __('None') ?></td>
307
308
309
<?php endif; ?>
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
310
			<th><?= __('Votes') . ': ' ?></th>
Lukas Fleischer's avatar
Lukas Fleischer committed
311
<?php if (has_credential(CRED_PKGBASE_LIST_VOTERS)): ?>
312
<?php if ($USE_VIRTUAL_URLS): ?>
313
			<td><a href="<?= get_pkgbase_uri($row['BaseName']); ?>voters/"><?= $votes ?></a></td>
314
<?php else: ?>
315
			<td><a href="<?= get_uri('/voters/'); ?>?N=<?= htmlspecialchars($row['BaseName'], ENT_QUOTES) ?>"><?= $votes ?></a></td>
316
<?php endif; ?>
317
<?php else: ?>
Lukas Fleischer's avatar
Lukas Fleischer committed
318
			<td><?= $votes ?></td>
319
320
321
<?php endif; ?>
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
322
323
			<th><?= __('First Submitted') . ': ' ?></th>
			<td><?= $submitted_time ?></td>
324
325
		</tr>
		<tr>
Lukas Fleischer's avatar
Lukas Fleischer committed
326
327
			<th><?= __('Last Updated') . ': ' ?></th>
			<td><?= $updated_time ?></td>
328
329
330
331
332
		</tr>
	</table>

	<div id="metadata">
		<div id="pkgdeps" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
333
			<h3><?= __('Dependencies') . " (" . count($deps) . ")"?></h3>
334
<?php if (count($deps) > 0): ?>
335
			<ul id="pkgdepslist">
336
337
338
<?php while (list($k, $darr) = each($deps)): ?>
	<li><?= pkg_depend_link($darr[0], $darr[1], $darr[2], $darr[3]); ?></li>
<?php endwhile; ?>
339
340
			</ul>
<?php endif; ?>
341
		</div>
342
		<div id="pkgreqs" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
343
			<h3><?= __('Required by') . " (" . count($requiredby) . ")"?></h3>
344
<?php if (count($requiredby) > 0): ?>
345
			<ul id="pkgreqslist">
346
347
348
<?php
	# darr: (PackageName, PackageID)
	while (list($k, $darr) = each($requiredby)):
349
?>
350
				<li><a href="<?= htmlspecialchars(get_pkg_uri($darr[0]), ENT_QUOTES); ?>" title="<?= __('View packages details for').' ' . htmlspecialchars($darr[0]) ?>"><?= htmlspecialchars($darr[0]) ?></a></li>
351
352
353
354
355
	<?php endwhile; ?>
			</ul>
<?php endif; ?>
		</div>
		<div id="pkgfiles" class="listing">
Lukas Fleischer's avatar
Lukas Fleischer committed
356
			<h3><?= __('Sources') ?></h3>
357
358
		</div>
<?php if (count($sources) > 0): ?>
359
		<div>
Lukas Fleischer's avatar
Lukas Fleischer committed
360
			<ul id="pkgsrcslist">
361
362
363
364
<?php
	while (list($k, $src) = each($sources)):
		$src = explode('::', $src);
		$parsed_url = parse_url($src[0]);
365

366
367
368
		# It is an external source
		if (isset($parsed_url['scheme']) || isset($src[1])):
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
369
				<li><a href="<?= htmlspecialchars((isset($src[1]) ? $src[1] : $src[0]), ENT_QUOTES) ?>"><?= htmlspecialchars($src[0]) ?> </a></li>
370
371
372
373
374
<?php
		else:
			# It is presumably an internal source
			$src = $src[0];
?>
Lukas Fleischer's avatar
Lukas Fleischer committed
375
				<li><?= htmlspecialchars($src) ?></li>
376
377
378
379
380
		<?php endif; ?>
	<?php endwhile; ?>
			</ul>
		</div>
<?php endif; ?>
381
382
	</div>
</div>