[aur-dev] [PATCH 13/13] Move package actions to package bases

Lukas Fleischer archlinux at cryptocrack.de
Sat Apr 5 07:59:53 EDT 2014


Package actions now operate on package bases instead of packages. Move
all actions to the correct locations.

This also fixes some issues with comment notifications.

Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
 web/html/index.php                  | 34 +++++++--------
 web/html/packages.php               | 75 ---------------------------------
 web/html/pkgbase.php                | 82 ++++++++++++++++++++++++++++++++++++-
 web/html/pkgdel.php                 | 10 ++---
 web/html/pkgmerge.php               | 10 ++---
 web/lib/pkgfuncs.inc.php            | 64 ++++++++++++++---------------
 web/template/pkg_comment_form.php   |  4 +-
 web/template/pkg_comments.php       |  7 ++--
 web/template/pkg_details.php        | 30 +++++++-------
 web/template/pkg_search_results.php |  4 +-
 web/template/pkgbase_details.php    | 26 ++++++------
 11 files changed, 175 insertions(+), 171 deletions(-)

diff --git a/web/html/index.php b/web/html/index.php
index e79955e..fe74857 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -20,6 +20,22 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) {
 			include "./404.php";
 			return;
 		}
+	}
+
+	include get_route('/' . $tokens[1]);
+} elseif (!empty($tokens[1]) && '/' . $tokens[1] == get_pkgbase_route()) {
+	if (!empty($tokens[2])) {
+		/* TODO: Create a proper data structure to pass variables from
+		 * the routing framework to the individual pages instead of
+		 * initializing arbitrary variables here. */
+		$pkgbase_name = $tokens[2];
+		$base_id = pkgbase_from_name($pkgbase_name);
+
+		if (!$base_id) {
+			header("HTTP/1.0 404 Not Found");
+			include "./404.php";
+			return;
+		}
 
 		if (!empty($tokens[3])) {
 			/* TODO: Remove support for legacy URIs and move these
@@ -65,23 +81,7 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) {
 				return;
 			}
 
-			$_POST['IDs'] = array(pkgid_from_name($tokens[2]) => '1');
-		}
-	}
-
-	include get_route('/' . $tokens[1]);
-} elseif (!empty($tokens[1]) && '/' . $tokens[1] == get_pkgbase_route()) {
-	if (!empty($tokens[2])) {
-		/* TODO: Create a proper data structure to pass variables from
-		 * the routing framework to the individual pages instead of
-		 * initializing arbitrary variables here. */
-		$pkgbase_name = $tokens[2];
-		$base_id = pkgbase_from_name($pkgbase_name);
-
-		if (!$base_id) {
-			header("HTTP/1.0 404 Not Found");
-			include "./404.php";
-			return;
+			$_POST['IDs'] = array(pkgbase_from_name($tokens[2]) => '1');
 		}
 	}
 
diff --git a/web/html/packages.php b/web/html/packages.php
index d9c3a86..876e2c0 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -42,77 +42,6 @@ if (isset($_COOKIE["AURSID"])) {
 	$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);
@@ -121,10 +50,6 @@ if (isset($pkgname)) {
 html_header($title, $details);
 ?>
 
-<?php if ($output): ?>
-	<p class="pkgoutput"><?= $output ?></p>
-<?php endif; ?>
-
 <?php
 if (isset($pkgid)) {
 	include('pkg_search_form.php');
diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php
index e0c9af6..42705ed 100644
--- a/web/html/pkgbase.php
+++ b/web/html/pkgbase.php
@@ -22,7 +22,7 @@ if (!isset($base_id) || !isset($pkgbase_name)) {
 		unset($base_id, $pkgbase_name);
 	}
 
-	if ($base_id == 0 || $base_id == NULL || $pkgbase_name == NULL) {
+	if (isset($base_id) && ($base_id == 0 || $base_id == NULL || $pkgbase_name == NULL)) {
 		header("HTTP/1.0 404 Not Found");
 		include "./404.php";
 		return;
@@ -39,10 +39,90 @@ if (isset($_COOKIE["AURSID"])) {
 	$atype = "";
 }
 
+/* Grab the list of package base 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;
+		}
+	}
+}
+
+/* Perform package base actions. */
+$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, $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, $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($base_id, $atype);
+	}
+
+	if (isset($_REQUEST['comment'])) {
+		$uid = uid_from_sid($_COOKIE["AURSID"]);
+		add_package_comment($base_id, $uid, $_REQUEST['comment']);
+		$ret = true;
+	}
+
+	if ($ret) {
+		if (isset($base_id)) {
+			/* Redirect back to package base page on success. */
+			header('Location: ' . get_pkgbase_uri($pkgbase_name));
+			exit();
+		} else {
+			/* Redirect back to package search page. */
+			header('Location: ' . get_pkg_route());
+			exit();
+		}
+	}
+}
+
 $details = get_pkgbase_details($base_id);
 html_header($title, $details);
 ?>
 
+<?php if ($output): ?>
+<p class="pkgoutput"><?= $output ?></p>
+<?php endif; ?>
+
 <?php
 include('pkg_search_form.php');
 if (isset($_COOKIE["AURSID"])) {
diff --git a/web/html/pkgdel.php b/web/html/pkgdel.php
index 7f244eb..d1026ce 100644
--- a/web/html/pkgdel.php
+++ b/web/html/pkgdel.php
@@ -18,17 +18,17 @@ if (isset($_COOKIE["AURSID"])) {
 
 if ($atype == "Trusted User" || $atype == "Developer"): ?>
 <div class="box">
-	<h2><?= __('Delete Package: %s', htmlspecialchars($pkgname)) ?></h2>
+	<h2><?= __('Delete Package: %s', htmlspecialchars($pkgbase_name)) ?></h2>
 	<p>
 		<?= __('Use this form to delete the package (%s%s%s) from the AUR. ',
-			'<strong>', htmlspecialchars($pkgname), '</strong>'); ?>
+			'<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?>
 		<?= __('Deletion of a package is permanent. '); ?>
 		<?= __('Select the checkbox to confirm action.') ?>
 	</p>
-	<form action="<?= get_uri('/packages/'); ?>" method="post">
+	<form action="<?= get_uri('/pkgbase/'); ?>" method="post">
 		<fieldset>
-			<input type="hidden" name="IDs[<?= $pkgid ?>]" value="1" />
-			<input type="hidden" name="ID" value="<?= $pkgid ?>" />
+			<input type="hidden" name="IDs[<?= $base_id ?>]" value="1" />
+			<input type="hidden" name="ID" value="<?= $base_id ?>" />
 			<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 			<p><input type="checkbox" name="confirm_Delete" value="1" />
 			<?= __("Confirm package deletion") ?></p>
diff --git a/web/html/pkgmerge.php b/web/html/pkgmerge.php
index 834d0c9..9ffd5e7 100644
--- a/web/html/pkgmerge.php
+++ b/web/html/pkgmerge.php
@@ -18,18 +18,18 @@ if (isset($_COOKIE["AURSID"])) {
 
 if ($atype == "Trusted User" || $atype == "Developer"): ?>
 <div class="box">
-	<h2><?= __('Merge Package: %s', htmlspecialchars($pkgname)) ?></h2>
+	<h2><?= __('Merge Package: %s', htmlspecialchars($pkgbase_name)) ?></h2>
 	<p>
 		<?= __('Use this form to merge the package (%s%s%s) into another package. ',
-			'<strong>', htmlspecialchars($pkgname), '</strong>'); ?>
+			'<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?>
 		<?= __('Once the package has been merged it cannot be reversed. '); ?>
 		<?= __('Enter the package name you wish to merge the package into. '); ?>
 		<?= __('Select the checkbox to confirm action.') ?>
 	</p>
-	<form action="<?= get_uri('/packages/'); ?>" method="post">
+	<form action="<?= get_uri('/pkgbase/'); ?>" method="post">
 		<fieldset>
-			<input type="hidden" name="IDs[<?= $pkgid ?>]" value="1" />
-			<input type="hidden" name="ID" value="<?= $pkgid ?>" />
+			<input type="hidden" name="IDs[<?= $base_id ?>]" value="1" />
+			<input type="hidden" name="ID" value="<?= $base_id ?>" />
 			<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 			<p><label for="merge_Into" ><?= __("Merge into:") ?></label>
 			<input type="text" id="merge_Into" name="merge_Into" /></p>
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index a63ee6f..4e37d2f 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -500,6 +500,9 @@ function display_package_details($id=0, $row, $SID="") {
 		print "<p>" . $row['error'] . "</p>\n";
 	}
 	else {
+		$base_id = pkgbase_from_pkgid($id);
+		$pkgbase_name = pkgbase_name_from_id($base_id);
+
 		include('pkg_details.php');
 
 		if ($SID) {
@@ -507,7 +510,6 @@ function display_package_details($id=0, $row, $SID="") {
 			include('pkg_comment_form.php');
 		}
 
-		$base_id = pkgbase_from_pkgid($id);
 		$comments = package_comments($base_id);
 		if (!empty($comments)) {
 			include('pkg_comments.php');
@@ -536,6 +538,8 @@ function display_pkgbase_details($base_id, $row, $SID="") {
 		print "<p>" . $row['error'] . "</p>\n";
 	}
 	else {
+		$pkgbase_name = pkgbase_name_from_id($base_id);
+
 		include('pkgbase_details.php');
 
 		if ($SID) {
@@ -641,7 +645,8 @@ function pkg_search_page($SID="") {
 	$q_select .= "Users.Username AS Maintainer,
 	PackageCategories.Category,
 	Packages.Name, Packages.Version, Packages.Description,
-	PackageBases.NumVotes, Packages.ID, PackageBases.OutOfDateTS ";
+	PackageBases.NumVotes, Packages.ID, Packages.PackageBaseID,
+	PackageBases.OutOfDateTS ";
 
 	$q_from = "FROM Packages
 	LEFT JOIN PackageBases ON (PackageBases.ID = Packages.PackageBaseID)
@@ -941,20 +946,19 @@ function pkgbase_maintainer_uid($base_id) {
  *
  * @global string $AUR_LOCATION The AUR's URL used for notification e-mails
  * @param string $atype Account type, output of account_from_sid
- * @param array $ids Array of package IDs to flag/unflag
+ * @param array $base_ids Array of package base IDs to flag/unflag
  *
  * @return array Tuple of success/failure indicator and error message
  */
-function pkg_flag($atype, $ids) {
+function pkg_flag($atype, $base_ids) {
 	global $AUR_LOCATION;
 
 	if (!$atype) {
 		return array(false, __("You must be logged in before you can flag packages."));
 	}
 
-	$ids = sanitize_ids($ids);
-	$base_ids = pkgbase_from_pkgid($ids);
-	if (empty($ids)) {
+	$base_ids = pkgbase_from_pkgid($base_ids);
+	if (empty($base_ids)) {
 		return array(false, __("You did not select any packages to flag."));
 	}
 
@@ -972,10 +976,10 @@ function pkg_flag($atype, $ids) {
 		$f_name = username_from_sid($_COOKIE['AURSID']);
 		$f_email = email_from_sid($_COOKIE['AURSID']);
 		$f_uid = uid_from_sid($_COOKIE['AURSID']);
-		$q = "SELECT Packages.Name, Users.Email, Packages.ID ";
-		$q.= "FROM Packages, Users ";
-		$q.= "WHERE Packages.ID IN (" . implode(",", $ids) .") ";
-		$q.= "AND Users.ID = Packages.MaintainerUID ";
+		$q = "SELECT PackageBases.Name, Users.Email ";
+		$q.= "FROM PackageBases, Users ";
+		$q.= "WHERE PackageBases.ID IN (" . implode(",", $base_ids) .") ";
+		$q.= "AND Users.ID = PackageBases.MaintainerUID ";
 		$q.= "AND Users.ID != " . $f_uid;
 		$result = $dbh->query($q);
 		if ($result) {
@@ -1000,18 +1004,17 @@ function pkg_flag($atype, $ids) {
  * Unflag package(s) as out-of-date
  *
  * @param string $atype Account type, output of account_from_sid
- * @param array $ids Array of package IDs to flag/unflag
+ * @param array $base_ids Array of package base IDs to flag/unflag
  *
  * @return array Tuple of success/failure indicator and error message
  */
-function pkg_unflag($atype, $ids) {
+function pkg_unflag($atype, $base_ids) {
 	if (!$atype) {
 		return array(false, __("You must be logged in before you can unflag packages."));
 	}
 
-	$ids = sanitize_ids($ids);
-	$base_ids = pkgbase_from_pkgid($ids);
-	if (empty($ids)) {
+	$base_ids = pkgbase_from_pkgid($base_ids);
+	if (empty($base_ids)) {
 		return array(false, __("You did not select any packages to unflag."));
 	}
 
@@ -1144,12 +1147,12 @@ function pkg_delete ($atype, $base_ids, $merge_base_id) {
  * Adopt or disown packages
  *
  * @param string $atype Account type, output of account_from_sid
- * @param array $ids Array of package IDs to adopt/disown
+ * @param array $base_ids Array of package base IDs to adopt/disown
  * @param bool $action Adopts if true, disowns if false. Adopts by default
  *
  * @return array Tuple of success/failure indicator and error message
  */
-function pkg_adopt ($atype, $ids, $action=true) {
+function pkg_adopt ($atype, $base_ids, $action=true) {
 	if (!$atype) {
 		if ($action) {
 			return array(false, __("You must be logged in before you can adopt packages."));
@@ -1158,9 +1161,8 @@ function pkg_adopt ($atype, $ids, $action=true) {
 		}
 	}
 
-	$pkg_ids = sanitize_ids($ids);
-	$ids = pkgbase_from_pkgid($pkg_ids);
-	if (empty($ids)) {
+	$base_ids = sanitize_ids($base_ids);
+	if (empty($base_ids)) {
 		if ($action) {
 			return array(false, __("You did not select any packages to adopt."));
 		} else {
@@ -1180,7 +1182,7 @@ function pkg_adopt ($atype, $ids, $action=true) {
 	}
 
 	$q.= "SET $field = $user ";
-	$q.= "WHERE ID IN (" . implode(",", $ids) . ") ";
+	$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
 
 	if ($action && $atype == "User") {
 		/* Regular users may only adopt orphan packages. */
@@ -1203,12 +1205,12 @@ function pkg_adopt ($atype, $ids, $action=true) {
  * Vote and un-vote for packages
  *
  * @param string $atype Account type, output of account_from_sid
- * @param array $ids Array of package IDs to vote/un-vote
+ * @param array $base_ids Array of package base IDs to vote/un-vote
  * @param bool $action Votes if true, un-votes if false. Votes by default
  *
  * @return array Tuple of success/failure indicator and error message
  */
-function pkg_vote ($atype, $ids, $action=true) {
+function pkg_vote ($atype, $base_ids, $action=true) {
 	if (!$atype) {
 		if ($action) {
 			return array(false, __("You must be logged in before you can vote for packages."));
@@ -1217,9 +1219,8 @@ function pkg_vote ($atype, $ids, $action=true) {
 		}
 	}
 
-	$ids = sanitize_ids($ids);
-	$base_ids = pkgbase_from_pkgid($ids);
-	if (empty($ids)) {
+	$base_ids = sanitize_ids($base_ids);
+	if (empty($base_ids)) {
 		if ($action) {
 			return array(false, __("You did not select any packages to vote for."));
 		} else {
@@ -1360,18 +1361,17 @@ function user_notify($uid, $base_id) {
  * Toggle notification of packages
  *
  * @param string $atype Account type, output of account_from_sid
- * @param array $ids Array of package IDs to toggle, formatted as $package_id
+ * @param array $base_ids Array of package base IDs to toggle
  *
  * @return array Tuple of success/failure indicator and error message
  */
-function pkg_notify ($atype, $ids, $action=true) {
+function pkg_notify ($atype, $base_ids, $action=true) {
 	if (!$atype) {
 		return;
 	}
 
-	$ids = sanitize_ids($ids);
-	$base_ids = pkgbase_from_pkgid($ids);
-	if (empty($ids)) {
+	$base_ids = sanitize_ids($base_ids);
+	if (empty($base_ids)) {
 		return array(false, __("Couldn't add to notification list."));
 	}
 
diff --git a/web/template/pkg_comment_form.php b/web/template/pkg_comment_form.php
index 8e74fe6..8a74dc1 100644
--- a/web/template/pkg_comment_form.php
+++ b/web/template/pkg_comment_form.php
@@ -1,6 +1,6 @@
 <div id="generic-form" class="box">
 	<h2><?= __("Add Comment"); ?></h2>
-	<form action="<?= get_pkg_uri($row['Name']) ?>" method="post">
+	<form action="<?= get_pkgbase_uri($pkgbase_name) ?>" method="post">
 		<fieldset>
 <?php
 if (isset($_REQUEST['comment']) && check_token()) {
@@ -8,7 +8,7 @@ if (isset($_REQUEST['comment']) && check_token()) {
 }
 ?>
 			<div>
-				<input type="hidden" name="ID" value="<?= intval($row['ID']) ?>" />
+				<input type="hidden" name="ID" value="<?= intval($base_id) ?>" />
 				<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 			</div>
 			<p>
diff --git a/web/template/pkg_comments.php b/web/template/pkg_comments.php
index 820ba6e..1f47bb3 100644
--- a/web/template/pkg_comments.php
+++ b/web/template/pkg_comments.php
@@ -2,11 +2,10 @@
 $uid = uid_from_sid($SID);
 $base_id = pkgbase_from_pkgid($row['ID']);
 $count = package_comments_count($base_id);
-$pkgname = $row['Name'];
 ?>
 <div id="news">
 	<h3>
-		<a href="<?= htmlentities(get_pkg_uri($pkgname), ENT_QUOTES) . '?' . mkurl('comments=all') ?>" title="<?= __('View all %s comments' , $count) ?>"><?= __('Latest Comments') ?></a>
+		<a href="<?= htmlentities(get_pkgbase_uri($pkgbase_name), ENT_QUOTES) . '?' . mkurl('comments=all') ?>" title="<?= __('View all %s comments' , $count) ?>"><?= __('Latest Comments') ?></a>
 		<span class="arrow"></span>
 	</h3>
 
@@ -16,7 +15,7 @@ $pkgname = $row['Name'];
 		endif; ?>
 		<h4>
 			<?php if (canDeleteCommentArray($row, $atype, $uid)): ?>
-				<form method="post" action="<?= htmlspecialchars(get_pkg_uri($pkgname), ENT_QUOTES); ?>">
+				<form method="post" action="<?= htmlspecialchars(get_pkgbase_uri($pkgbase_name), ENT_QUOTES); ?>">
 					<fieldset style="display:inline;">
 						<input type="hidden" name="action" value="do_DeleteComment" />
 						<input type="hidden" name="comment_id" value="<?= $row['ID'] ?>" />
@@ -49,7 +48,7 @@ $pkgname = $row['Name'];
 <?php if ($count > 10 && !isset($_GET['comments'])): ?>
 <div id="news">
 	<h3>
-		<a href="<?= htmlentities(get_pkg_uri($pkgname), ENT_QUOTES) . '?' . mkurl('comments=all') ?>" title="<?= __('View all %s comments', $count) ?>"><?= __('All comments', $count) ?></a>
+		<a href="<?= htmlentities(get_pkgbase_uri($pkgbase_name), ENT_QUOTES) . '?' . mkurl('comments=all') ?>" title="<?= __('View all %s comments', $count) ?>"><?= __('All comments', $count) ?></a>
 	</h3>
 </div>
 <?php endif; ?>
diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php
index d4e4e4e..5268d3b 100644
--- a/web/template/pkg_details.php
+++ b/web/template/pkg_details.php
@@ -20,7 +20,7 @@ $updated_time = ($row["ModifiedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($r
 $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"]));
 
-$urlpath = URL_DIR . substr($row['Name'], 0, 2) . "/" . $row['Name'];
+$urlpath = URL_DIR . substr($row['BaseName'], 0, 2) . "/" . $row['BaseName'];
 
 $deps = package_dependencies($row["ID"]);
 $requiredby = package_required($row["Name"]);
@@ -35,12 +35,12 @@ $sources = package_sources($row["ID"]);
 			<h4><?= __('Package Actions') ?></h4>
 			<ul class="small">
 				<li><a href="<?= $urlpath ?>/PKGBUILD"><?= __('View PKGBUILD') ?></a></li>
-				<li><a href="<?= $urlpath . '/' . $row['Name'] ?>.tar.gz"><?= __('Download tarball') ?></a></li>
+				<li><a href="<?= $urlpath . '/' . $row['BaseName'] ?>.tar.gz"><?= __('Download tarball') ?></a></li>
 				<li><span class="flagged"><?php if ($row["OutOfDateTS"] !== NULL) { echo __('Flagged out-of-date')." (${out_of_date_time})"; } ?></span></li>
 				<?php if ($USE_VIRTUAL_URLS && $uid): ?>
 				<?php if ($row["OutOfDateTS"] === NULL): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'flag/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'flag/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Flag" value="<?= __('Flag package out-of-date') ?>" />
 					</form>
@@ -48,7 +48,7 @@ $sources = package_sources($row["ID"]);
 				<?php elseif (($row["OutOfDateTS"] !== NULL) &&
 				($uid == $row["MaintainerUID"] || $atype == "Trusted User" || $atype == "Developer")): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'unflag/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unflag/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnFlag" value="<?= __('Unflag package') ?>" />
 					</form>
@@ -56,14 +56,14 @@ $sources = package_sources($row["ID"]);
 				<?php endif; ?>
 				<?php if (user_voted($uid, $row['ID'])): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'unvote/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unvote/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnVote" value="<?= __('Remove vote') ?>" />
 					</form>
 				</li>
 				<?php else: ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'vote/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'vote/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Vote" value="<?= __('Vote for this package') ?>" />
 					</form>
@@ -71,28 +71,28 @@ $sources = package_sources($row["ID"]);
 				<?php endif; ?>
 				<?php if (user_notify($uid, $row['ID'])): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'unnotify/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'unnotify/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnNotify" value="<?= __('Disable notifications') ?>" />
 					</form>
 				</li>
 				<?php else: ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'notify/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'notify/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Notify" value="<?= __('Notify of new comments') ?>" />
 					</form>
 				</li>
 				<?php endif; ?>
 				<?php if ($atype == "Trusted User" || $atype == "Developer"): ?>
-				<li><a href="<?= get_pkg_uri($row['Name']) . 'delete/'; ?>"><?= __('Delete Package'); ?></a></li>
-				<li><a href="<?= get_pkg_uri($row['Name']) . 'merge/'; ?>"><?= __('Merge Package'); ?></a></li>
+				<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>
 				<?php endif; ?>
 				<?php endif; ?>
 
 				<?php if ($uid && $row["MaintainerUID"] === NULL): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'adopt/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'adopt/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Adopt" value="<?= __('Adopt Package') ?>" />
 					</form>
@@ -100,7 +100,7 @@ $sources = package_sources($row["ID"]);
 				<?php elseif ($uid && $uid == $row["MaintainerUID"] ||
 					$atype == "Trusted User" || $atype == "Developer"): ?>
 				<li>
-					<form action="<?= get_pkg_uri($row['Name']) . 'disown/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['BaseName']) . 'disown/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Disown" value="<?= __('Disown Package') ?>" />
 					</form>
@@ -130,7 +130,7 @@ if ($SID && ($uid == $row["MaintainerUID"] ||
 	($atype == "Developer" || $atype == "Trusted User"))):
 ?>
 			<td>
-				<form method="post" action="<?= htmlspecialchars(get_pkg_uri($row['Name']), ENT_QUOTES); ?>">
+				<form method="post" action="<?= htmlspecialchars(get_pkgbase_uri($row['BaseName']), ENT_QUOTES); ?>">
 					<div>
 						<input type="hidden" name="action" value="do_ChangeCategory" />
 						<?php if ($SID): ?>
@@ -196,9 +196,9 @@ if ($row["MaintainerUID"]):
 			<th><?= __('Votes') . ': ' ?></th>
 <?php if ($atype == "Developer" || $atype == "Trusted User"): ?>
 <?php if ($USE_VIRTUAL_URLS): ?>
-			<td><a href="<?= get_pkg_uri($row['Name']); ?>voters/"><?= $votes ?></a></td>
+			<td><a href="<?= get_pkgbase_uri($row['BaseName']); ?>voters/"><?= $votes ?></a></td>
 <?php else: ?>
-			<td><a href="<?= get_uri('/voters/'); ?>?N=<?= htmlspecialchars($row['Name'], ENT_QUOTES) ?>"><?= $votes ?></a></td>
+			<td><a href="<?= get_uri('/voters/'); ?>?N=<?= htmlspecialchars($row['BaseName'], ENT_QUOTES) ?>"><?= $votes ?></a></td>
 <?php endif; ?>
 <?php else: ?>
 			<td><?= $votes ?></td>
diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php
index 16f574a..c9da5f9 100644
--- a/web/template/pkg_search_results.php
+++ b/web/template/pkg_search_results.php
@@ -28,7 +28,7 @@ if (!$result): ?>
 			<?php endif; ?>
 		</div>
 
-		<form id="pkglist-results-form" method="post" action="<?= get_uri('/packages/'); ?>?<?= htmlentities($_SERVER['QUERY_STRING']) ?>">
+		<form id="pkglist-results-form" method="post" action="<?= get_uri('/pkgbase/'); ?>?<?= htmlentities($_SERVER['QUERY_STRING']) ?>">
 			<table class="results">
 			<thead>
 				<tr>
@@ -52,7 +52,7 @@ if (!$result): ?>
 	<?php while (list($indx, $row) = each($searchresults)): ?>
 		<tr class="<?= ($indx % 2 == 0) ? 'odd' : 'even' ?>">
 		<?php if ($SID): ?>
-		<td><input type="checkbox" name="IDs[<?= $row["ID"] ?>]" value="1" /></td>
+		<td><input type="checkbox" name="IDs[<?= $row["PackageBaseID"] ?>]" value="1" /></td>
 		<?php endif; ?>
 		<td><?= htmlspecialchars($row["Category"]) ?></td>
 		<td><a href="<?= htmlspecialchars(get_pkg_uri($row["Name"]), ENT_QUOTES); ?>"><?= htmlspecialchars($row["Name"]) ?></a></td>
diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php
index a77ecd3..8da23c4 100644
--- a/web/template/pkgbase_details.php
+++ b/web/template/pkgbase_details.php
@@ -30,12 +30,12 @@ $pkgs = pkgbase_get_pkgnames($base_id);
 			<h4><?= __('Package Actions') ?></h4>
 			<ul class="small">
 				<li><a href="<?= $urlpath ?>/PKGBUILD"><?= __('View PKGBUILD') ?></a></li>
-				<li><a href="<?= $urlpath . '/' . $pkgs[0] ?>.tar.gz"><?= __('Download tarball') ?></a></li>
+				<li><a href="<?= $urlpath . '/' . $row['Name'] ?>.tar.gz"><?= __('Download tarball') ?></a></li>
 				<li><span class="flagged"><?php if ($row["OutOfDateTS"] !== NULL) { echo __('Flagged out-of-date')." (${out_of_date_time})"; } ?></span></li>
 				<?php if ($USE_VIRTUAL_URLS && $uid): ?>
 				<?php if ($row["OutOfDateTS"] === NULL): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'flag/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'flag/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Flag" value="<?= __('Flag package out-of-date') ?>" />
 					</form>
@@ -43,7 +43,7 @@ $pkgs = pkgbase_get_pkgnames($base_id);
 				<?php elseif (($row["OutOfDateTS"] !== NULL) &&
 				($uid == $row["MaintainerUID"] || $atype == "Trusted User" || $atype == "Developer")): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'unflag/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'unflag/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnFlag" value="<?= __('Unflag package') ?>" />
 					</form>
@@ -51,14 +51,14 @@ $pkgs = pkgbase_get_pkgnames($base_id);
 				<?php endif; ?>
 				<?php if (user_voted($uid, $row['ID'])): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'unvote/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'unvote/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnVote" value="<?= __('Remove vote') ?>" />
 					</form>
 				</li>
 				<?php else: ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'vote/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'vote/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Vote" value="<?= __('Vote for this package') ?>" />
 					</form>
@@ -66,28 +66,28 @@ $pkgs = pkgbase_get_pkgnames($base_id);
 				<?php endif; ?>
 				<?php if (user_notify($uid, $row['ID'])): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'unnotify/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'unnotify/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_UnNotify" value="<?= __('Disable notifications') ?>" />
 					</form>
 				</li>
 				<?php else: ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'notify/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'notify/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Notify" value="<?= __('Notify of new comments') ?>" />
 					</form>
 				</li>
 				<?php endif; ?>
 				<?php if ($atype == "Trusted User" || $atype == "Developer"): ?>
-				<li><a href="<?= get_pkg_uri($pkgs[0]) . 'delete/'; ?>"><?= __('Delete Package'); ?></a></li>
-				<li><a href="<?= get_pkg_uri($pkgs[0]) . 'merge/'; ?>"><?= __('Merge Package'); ?></a></li>
+				<li><a href="<?= get_pkgbase_uri($row['Name']) . 'delete/'; ?>"><?= __('Delete Package'); ?></a></li>
+				<li><a href="<?= get_pkgbase_uri($row['Name']) . 'merge/'; ?>"><?= __('Merge Package'); ?></a></li>
 				<?php endif; ?>
 				<?php endif; ?>
 
 				<?php if ($uid && $row["MaintainerUID"] === NULL): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'adopt/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'adopt/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Adopt" value="<?= __('Adopt Package') ?>" />
 					</form>
@@ -95,7 +95,7 @@ $pkgs = pkgbase_get_pkgnames($base_id);
 				<?php elseif ($uid && $uid == $row["MaintainerUID"] ||
 					$atype == "Trusted User" || $atype == "Developer"): ?>
 				<li>
-					<form action="<?= get_pkg_uri($pkgs[0]) . 'disown/'; ?>" method="post">
+					<form action="<?= get_pkgbase_uri($row['Name']) . 'disown/'; ?>" method="post">
 						<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
 						<input type="submit" class="button text-button" name="do_Disown" value="<?= __('Disown Package') ?>" />
 					</form>
@@ -113,7 +113,7 @@ if ($SID && ($uid == $row["MaintainerUID"] ||
 	($atype == "Developer" || $atype == "Trusted User"))):
 ?>
 			<td>
-				<form method="post" action="<?= htmlspecialchars(get_pkg_uri($row['Name']), ENT_QUOTES); ?>">
+				<form method="post" action="<?= htmlspecialchars(get_pkgbase_uri($row['Name']), ENT_QUOTES); ?>">
 					<div>
 						<input type="hidden" name="action" value="do_ChangeCategory" />
 						<?php if ($SID): ?>
@@ -175,7 +175,7 @@ if ($row["MaintainerUID"]):
 			<th><?= __('Votes') . ': ' ?></th>
 <?php if ($atype == "Developer" || $atype == "Trusted User"): ?>
 <?php if ($USE_VIRTUAL_URLS): ?>
-			<td><a href="<?= get_pkg_uri($row['Name']); ?>voters/"><?= $votes ?></a></td>
+			<td><a href="<?= get_pkgbase_uri($row['Name']); ?>voters/"><?= $votes ?></a></td>
 <?php else: ?>
 			<td><a href="<?= get_uri('/voters/'); ?>?N=<?= htmlspecialchars($row['Name'], ENT_QUOTES) ?>"><?= $votes ?></a></td>
 <?php endif; ?>
-- 
1.9.1



More information about the aur-dev mailing list