diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-05-06 20:52:32 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-05-06 20:52:32 +0200 |
commit | a93363ac08ade0b17b342c5238efb37fc5d15741 (patch) | |
tree | b95c7b2b78c20cf04000e363acca466a31de5094 | |
parent | 0e368510f47a934895024fe34714bfcc5f90bc3f (diff) | |
download | aur-a93363ac08ade0b17b342c5238efb37fc5d15741.tar.gz aur-a93363ac08ade0b17b342c5238efb37fc5d15741.tar.xz |
Add a packager field to packages
Store the last packager in addition to storing the submitter and the
maintainer of a package. This allows for checking who last updated a
package, even if the package has been disowned.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r-- | UPGRADING | 5 | ||||
-rw-r--r-- | schema/aur-schema.sql | 5 | ||||
-rw-r--r-- | web/lib/pkgbasefuncs.inc.php | 15 | ||||
-rw-r--r-- | web/lib/pkgfuncs.inc.php | 2 | ||||
-rw-r--r-- | web/template/pkg_details.php | 19 | ||||
-rw-r--r-- | web/template/pkgbase_details.php | 19 |
6 files changed, 56 insertions, 9 deletions
@@ -31,16 +31,19 @@ CREATE TABLE PackageBases ( ModifiedTS BIGINT UNSIGNED NOT NULL, SubmitterUID INTEGER UNSIGNED NULL DEFAULT NULL, MaintainerUID INTEGER UNSIGNED NULL DEFAULT NULL, + PackagerUID INTEGER UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (ID), UNIQUE (Name), INDEX (CategoryID), INDEX (NumVotes), INDEX (SubmitterUID), INDEX (MaintainerUID), + INDEX (PackagerUID), FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION, -- deleting a user will cause packages to be orphaned, not deleted FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL, - FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL + FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (PackagerUID) REFERENCES Users(ID) ON DELETE SET NULL ) ENGINE = InnoDB; ---- diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 85335489..adacdf02 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -104,16 +104,19 @@ CREATE TABLE PackageBases ( ModifiedTS BIGINT UNSIGNED NOT NULL, SubmitterUID INTEGER UNSIGNED NULL DEFAULT NULL, -- who submitted it? MaintainerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- User + PackagerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- Last packager PRIMARY KEY (ID), UNIQUE (Name), INDEX (CategoryID), INDEX (NumVotes), INDEX (SubmitterUID), INDEX (MaintainerUID), + INDEX (PackagerUID), FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION, -- deleting a user will cause packages to be orphaned, not deleted FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL, - FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL + FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (PackagerUID) REFERENCES Users(ID) ON DELETE SET NULL ) ENGINE = InnoDB; diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index 4eaa6404..4d05b945 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -182,7 +182,8 @@ function pkgbase_get_details($base_id) { $q.= "PackageBases.CategoryID, PackageBases.NumVotes, "; $q.= "PackageBases.OutOfDateTS, PackageBases.SubmittedTS, "; $q.= "PackageBases.ModifiedTS, PackageBases.SubmitterUID, "; - $q.= "PackageBases.MaintainerUID, PackageCategories.Category "; + $q.= "PackageBases.MaintainerUID, PackageBases.PackagerUID, "; + $q.= "PackageCategories.Category "; $q.= "FROM PackageBases, PackageCategories "; $q.= "WHERE PackageBases.CategoryID = PackageCategories.ID "; $q.= "AND PackageBases.ID = " . intval($base_id); @@ -917,9 +918,10 @@ function pkgbase_change_category($base_id, $atype) { function pkgbase_create($name, $category_id, $uid) { $dbh = DB::connect(); $q = sprintf("INSERT INTO PackageBases (Name, CategoryID, " . - "SubmittedTS, ModifiedTS, SubmitterUID, MaintainerUID) " . - "VALUES (%s, %d, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), %d, %d)", - $dbh->quote($name), $category_id, $uid, $uid); + "SubmittedTS, ModifiedTS, SubmitterUID, MaintainerUID, " . + "PackagerUID) VALUES (%s, %d, UNIX_TIMESTAMP(), " . + "UNIX_TIMESTAMP(), %d, %d, %d)", + $dbh->quote($name), $category_id, $uid, $uid, $uid); $dbh->exec($q); return $dbh->lastInsertId(); } @@ -937,8 +939,9 @@ function pkgbase_update($base_id, $name, $uid) { $dbh = DB::connect(); $q = sprintf("UPDATE PackageBases SET " . "Name = %s, ModifiedTS = UNIX_TIMESTAMP(), " . - "MaintainerUID = %d, OutOfDateTS = NULL WHERE ID = %d", - $dbh->quote($name), $uid, $base_id); + "MaintainerUID = %d, PackagerUID = %d, OutOfDateTS = NULL " . + "WHERE ID = %d", + $dbh->quote($name), $uid, $uid, $base_id); $dbh->exec($q); } diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index a6fa32e4..c35147fb 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -400,7 +400,7 @@ function pkg_get_details($id=0) { $q.= "PackageBases.NumVotes, PackageBases.OutOfDateTS, "; $q.= "PackageBases.SubmittedTS, PackageBases.ModifiedTS, "; $q.= "PackageBases.SubmitterUID, PackageBases.MaintainerUID, "; - $q.= "PackageCategories.Category "; + $q.= "PackageBases.PackagerUID, PackageCategories.Category "; $q.= "FROM Packages, PackageBases, PackageCategories "; $q.= "WHERE PackageBases.ID = Packages.PackageBaseID "; $q.= "AND PackageBases.CategoryID = PackageCategories.ID "; diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php index 791c9ee5..12aa6924 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -9,6 +9,7 @@ $catarr = pkgbase_categories(); $submitter = username_from_id($row["SubmitterUID"]); $maintainer = username_from_id($row["MaintainerUID"]); +$packager = username_from_id($row["PackagerUID"]); $votes = $row['NumVotes']; @@ -289,6 +290,24 @@ if ($row["MaintainerUID"]): <?php endif; ?> </tr> <tr> + <th><?= __('Last Packager') .': ' ?></th> +<?php +if ($row["PackagerUID"]): + if ($SID): + if (!$USE_VIRTUAL_URLS): +?> + <td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&ID=<?= htmlspecialchars($row['PackagerUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= htmlspecialchars($packager) ?>"><?= htmlspecialchars($packager) ?></a></td> + <?php else: ?> + <td><a href="<?= get_uri('/account/') . htmlspecialchars($packager, ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($packager)) ?>"><?= htmlspecialchars($packager) ?></a></td> + <?php endif; ?> + <?php else: ?> + <td><?= htmlspecialchars($packager) ?></td> + <?php endif; ?> +<?php else: ?> + <td><?= __('None') ?></td> +<?php endif; ?> + </tr> + <tr> <th><?= __('Votes') . ': ' ?></th> <?php if ($atype == "Developer" || $atype == "Trusted User"): ?> <?php if ($USE_VIRTUAL_URLS): ?> diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php index fd7bdadb..eab3a534 100644 --- a/web/template/pkgbase_details.php +++ b/web/template/pkgbase_details.php @@ -8,6 +8,7 @@ $catarr = pkgbase_categories(); $submitter = username_from_id($row["SubmitterUID"]); $maintainer = username_from_id($row["MaintainerUID"]); +$packager = username_from_id($row["PackagerUID"]); $votes = $row['NumVotes']; @@ -172,6 +173,24 @@ if ($row["MaintainerUID"]): <?php endif; ?> </tr> <tr> + <th><?= __('Last Packager') .': ' ?></th> +<?php +if ($row["PackagerUID"]): + if ($SID): + if (!$USE_VIRTUAL_URLS): +?> + <td><a href="<?= get_uri('/account/'); ?>?Action=AccountInfo&ID=<?= htmlspecialchars($row['PackagerUID'], ENT_QUOTES) ?>" title="<?= __('View account information for')?> <?= htmlspecialchars($packager) ?>"><?= htmlspecialchars($packager) ?></a></td> + <?php else: ?> + <td><a href="<?= get_uri('/account/') . htmlspecialchars($packager, ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($packager)) ?>"><?= htmlspecialchars($packager) ?></a></td> + <?php endif; ?> + <?php else: ?> + <td><?= htmlspecialchars($packager) ?></td> + <?php endif; ?> +<?php else: ?> + <td><?= __('None') ?></td> +<?php endif; ?> + </tr> + <tr> <th><?= __('Votes') . ': ' ?></th> <?php if ($atype == "Developer" || $atype == "Trusted User"): ?> <?php if ($USE_VIRTUAL_URLS): ?> |