summaryrefslogtreecommitdiff
path: root/web/html/packages.php
blob: d9c3a860d2a7c8dda9f484c5218d04c7d979c419 (plain)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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
<?php

set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');

include_once("aur.inc.php");      # access AUR common functions
set_lang();                       # this sets up the visitor's language
include_once('pkgfuncs.inc.php'); # package specific functions
check_sid();                      # see if they're still logged in

# Retrieve package ID and name, unless initialized by the routing framework
if (!isset($pkgid) || !isset($pkgname)) {
	if (isset($_GET['ID'])) {
		$pkgid = intval($_GET['ID']);
		$pkgname = pkgname_from_id($_GET['ID']);
	} else if (isset($_GET['N'])) {
		$pkgid = pkgid_from_name($_GET['N']);
		$pkgname = $_GET['N'];
	} else {
		unset($pkgid, $pkgname);
	}

	if (isset($pkgid) && ($pkgid == 0 || $pkgid == NULL || $pkgname == NULL)) {
		header("HTTP/1.0 404 Not Found");
		include "./404.php";
		return;
	}
}

# Set the title to the current query or package name
if (isset($pkgname)) {
	$title = $pkgname;
} else if (!empty($_GET['K'])) {
	$title = __("Search Criteria") . ": " . $_GET['K'];
} else {
	$title = __("Packages");
}

# Retrieve account type
if (isset($_COOKIE["AURSID"])) {
	$atype = account_from_sid($_COOKIE["AURSID"]);
} else {
	$atype = "";
}

# Grab the list of Package IDs to be operated on
$ids = array();
if (isset($_POST['IDs'])) {
	foreach ($_POST['IDs'] as $id => $i) {
		$id = intval($id);
		if ($id > 0) {
			$ids[] = $id;
		}
	}
}

# Determine what action to do
$ret = false;
$output = "";
if (check_token()) {
	if (current_action("do_Flag")) {
		list($ret, $output) = pkg_flag($atype, $ids);
	} elseif (current_action("do_UnFlag")) {
		list($ret, $output) = pkg_unflag($atype, $ids);
	} elseif (current_action("do_Adopt")) {
		list($ret, $output) = pkg_adopt($atype, $ids, true);
	} elseif (current_action("do_Disown")) {
		list($ret, $output) = pkg_adopt($atype, $ids, false);
	} elseif (current_action("do_Vote")) {
		list($ret, $output) = pkg_vote($atype, $ids, true);
	} elseif (current_action("do_UnVote")) {
		list($ret, $output) = pkg_vote($atype, $ids, false);
	} elseif (current_action("do_Delete")) {
		if (isset($_POST['confirm_Delete'])) {
			if (!isset($_POST['merge_Into']) || empty($_POST['merge_Into'])) {
				list($ret, $output) = pkg_delete($atype, pkgbase_from_pkgid($ids), NULL);
				unset($_GET['ID']);
			}
			else {
				$merge_base_id = pkgbase_from_name($_POST['merge_Into']);
				if ($merge_base_id) {
					list($ret, $output) = pkg_delete($atype, pkgbase_from_pkgid($ids), $merge_base_id);
					unset($_GET['ID']);
				}
				else {
					$output = __("Cannot find package to merge votes and comments into.");
				}
			}
		}
		else {
			$output = __("The selected packages have not been deleted, check the confirmation checkbox.");
		}
	} elseif (current_action("do_Notify")) {
		list($ret, $output) = pkg_notify($atype, $ids);
	} elseif (current_action("do_UnNotify")) {
		list($ret, $output) = pkg_notify($atype, $ids, false);
	} elseif (current_action("do_DeleteComment")) {
		list($ret, $output) = pkg_delete_comment($atype);
	} elseif (current_action("do_ChangeCategory")) {
		list($ret, $output) = pkg_change_category($pkgid, $atype);
	}

	if (isset($_REQUEST['comment'])) {
		$uid = uid_from_sid($_COOKIE["AURSID"]);
		add_package_comment($pkgid, $uid, $_REQUEST['comment']);
		$ret = true;
	}

	if ($ret) {
		/* Redirect back to package page on success. */
		header('Location: ' . get_pkg_uri($pkgname));
		exit();
	}
}

# Get package details after package actions have been attempted, FS#34508
$details = array();
if (isset($pkgname)) {
	$details = get_package_details($pkgid);
}

html_header($title, $details);
?>

<?php if ($output): ?>
	<p class="pkgoutput"><?= $output ?></p>
<?php endif; ?>

<?php
if (isset($pkgid)) {
	include('pkg_search_form.php');
	if ($pkgid) {
		if (isset($_COOKIE["AURSID"])) {
			display_package_details($pkgid, $details, $_COOKIE["AURSID"]);
		}
		else {
			display_package_details($pkgid, $details, null);
		}
	} else {
		print __("Error trying to retrieve package details.")."<br />\n";
	}
} else {
	if (!isset($_GET['K']) && !isset($_GET['SB'])) {
		$_GET['SB'] = 'v';
		$_GET['SO'] = 'd';
	}
	if (isset($_COOKIE["AURSID"])) {
		pkg_search_page($_COOKIE["AURSID"]);
	} else {
		pkg_search_page();
	}
}

html_footer(AUR_VERSION);