[aur-dev] [PATCH] web/html/pkgsubmit.php: Deal with unset category ID

Lukas Fleischer archlinux at cryptocrack.de
Fri Sep 2 11:23:18 EDT 2011


Do not move the package to the incoming package directory and fail to
create proper database entries if some AUR upload helper doesn't provide
a category. We got several failing constraints here, such as:

  Cannot add or update a child row: a foreign key constraint fails
  (`AUR`.`Packages`, CONSTRAINT `Packages_ibfk_1` FOREIGN KEY
  (`CategoryID`) REFERENCES `PackageCategories` (`ID`) ON DELETE NO
  ACTION)

Instead, default to "1" (which is "none", or "keep category" for
existing packages) if no category is supplied.

Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
 web/html/pkgsubmit.php |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php
index 54c4b3e..f715e15 100644
--- a/web/html/pkgsubmit.php
+++ b/web/html/pkgsubmit.php
@@ -311,6 +311,18 @@ if ($uid):
 				$pkg_version = sprintf('%s-%s', $new_pkgbuild['pkgver'], $new_pkgbuild['pkgrel']);
 			}
 
+			# Check the category to use, "1" meaning "none" (or "keep category" for
+			# existing packages).
+			if (isset($_POST['category'])) {
+				$category_id = intval($_POST['category']);
+				if ($category_id <= 0) {
+					$category_id = 1;
+				}
+			}
+			else {
+				$category_id = 1;
+			}
+
 			if ($pdata) {
 				# This is an overwrite of an existing package, the database ID
 				# needs to be preserved so that any votes are retained. However,
@@ -324,9 +336,9 @@ if ($uid):
 				db_query($q, $dbh);
 
 				# If a new category was chosen, change it to that
-				if ($_POST['category'] > 1) {
+				if ($category_id > 1) {
 					$q = sprintf( "UPDATE Packages SET CategoryID = %d WHERE ID = %d",
-						mysql_real_escape_string($_REQUEST['category']),
+						$category_id,
 						$packageID);
 
 					db_query($q, $dbh);
@@ -350,7 +362,7 @@ if ($uid):
 					mysql_real_escape_string($new_pkgbuild['pkgname']),
 					mysql_real_escape_string($new_pkgbuild['license']),
 					mysql_real_escape_string($pkg_version),
-					mysql_real_escape_string($_REQUEST['category']),
+					$category_id,
 					mysql_real_escape_string($new_pkgbuild['pkgdesc']),
 					mysql_real_escape_string($new_pkgbuild['url']),
 					$uid,
-- 
1.7.6.1



More information about the aur-dev mailing list