summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2014-05-06 20:52:32 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2014-05-06 20:52:32 +0200
commita93363ac08ade0b17b342c5238efb37fc5d15741 (patch)
treeb95c7b2b78c20cf04000e363acca466a31de5094
parent0e368510f47a934895024fe34714bfcc5f90bc3f (diff)
downloadaurweb-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--UPGRADING5
-rw-r--r--schema/aur-schema.sql5
-rw-r--r--web/lib/pkgbasefuncs.inc.php15
-rw-r--r--web/lib/pkgfuncs.inc.php2
-rw-r--r--web/template/pkg_details.php19
-rw-r--r--web/template/pkgbase_details.php19
6 files changed, 56 insertions, 9 deletions
diff --git a/UPGRADING b/UPGRADING
index 357cd6c..d9860bb 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -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 8533548..adacdf0 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 4eaa640..4d05b94 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 a6fa32e..c35147f 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 791c9ee..12aa692 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&amp;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 fd7bdad..eab3a53 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&amp;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): ?>