diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-09-02 17:17:01 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-09-05 16:47:59 +0200 |
commit | 1b63994b8d1ccd4d8cb4b065fde8c8b798d7781d (patch) | |
tree | 30a0e38e7736da43efd3897b85d76de7f1723271 | |
parent | a00e5b040a42349e40a6d22cf822042ccf651be4 (diff) |
web/html/pkgsubmit.php: Deal with unset category ID
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@cryptocrack.de>
-rw-r--r-- | 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 64281c7..21776f9 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, |