Commit a93363ac authored by Lukas Fleischer's avatar Lukas Fleischer
Browse files

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: default avatarLukas Fleischer <archlinux@cryptocrack.de>
parent 0e368510
......@@ -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;
----
......
......@@ -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;
......
......@@ -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);
}
......
......@@ -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 ";
......
......@@ -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'];
......@@ -286,6 +287,24 @@ if ($row["MaintainerUID"]):
<?php endif; ?>
<?php else: ?>
<td><?= __('None') ?></td>
<?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>
......
......@@ -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'];
......@@ -169,6 +170,24 @@ if ($row["MaintainerUID"]):
<?php endif; ?>
<?php else: ?>
<td><?= __('None') ?></td>
<?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>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment