summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2011-01-24 18:08:29 +0100
committerLukas Fleischer <archlinux@cryptocrack.de>2011-01-24 18:08:29 +0100
commit556de318aeeef6019bb7628389beee1358de93f8 (patch)
tree434794760f8df1c575b8771c80f0175477ffd5f6
parent0bb2a7b5147f9eeec5df5f02f59f03b6e85a8ed2 (diff)
downloadaurweb-556de318aeeef6019bb7628389beee1358de93f8.tar.xz
Build URLs from package names (fixes FS#15308, FS#19327).
Drop the "URLPath" field from the "Packages" table, build URLs from package names instead. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--UPGRADING2
-rw-r--r--support/schema/aur-schema.sql1
-rwxr-xr-xsupport/schema/gendummydata.py22
-rw-r--r--web/html/pkgsubmit.php8
-rw-r--r--web/lib/aurjson.class.php21
-rw-r--r--web/template/pkg_details.php5
6 files changed, 32 insertions, 27 deletions
diff --git a/UPGRADING b/UPGRADING
index 468e995..2d3434f 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -9,7 +9,7 @@ From 1.7.0 to 1.8.0
----
ALTER TABLE Packages ADD OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL;
UPDATE Packages SET OutOfDateTS = UNIX_TIMESTAMP() WHERE OutOfDate = 1;
-ALTER TABLE Packages DROP OutOfDate;
+ALTER TABLE Packages DROP OutOfDate, DROP URLPath;
----
2. You will need to update all packages which are stored in the incoming dir as
diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
index 93ec9a0..cd24f38 100644
--- a/support/schema/aur-schema.sql
+++ b/support/schema/aur-schema.sql
@@ -115,7 +115,6 @@ CREATE TABLE Packages (
URL CHAR(255) NOT NULL DEFAULT "http://www.archlinux.org",
DummyPkg TINYINT UNSIGNED NOT NULL DEFAULT 0, -- 1=>dummy
FSPath CHAR(255) NOT NULL DEFAULT '',
- URLPath CHAR(255) NOT NULL DEFAULT '',
License CHAR(40) NOT NULL DEFAULT '',
LocationID TINYINT UNSIGNED NOT NULL DEFAULT 1,
NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0,
diff --git a/support/schema/gendummydata.py b/support/schema/gendummydata.py
index dabd451..2260555 100755
--- a/support/schema/gendummydata.py
+++ b/support/schema/gendummydata.py
@@ -267,36 +267,30 @@ for p in seen_pkgs.keys():
if location_id == 1: # Unsupported - just a PKGBUILD and maybe other stuff
others = random.randrange(0,3)
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "PKGBUILD", "/home/aur/incoming/%s/PKGBUILD" % p,
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/PKGBUILD" % p,
random.randrange(0,999))
out.write(s)
if others == 0:
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "%s.patch" % p,
- "/home/aur/incoming/%s/%s.patch" % (p,p),
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/%s.patch" % (p,p),
random.randrange(0,999))
out.write(s)
elif others == 1:
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "%s.patch" % p,
- "/home/aur/incoming/%s/%s.patch" % (p,p),
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/%s.patch" % (p,p),
random.randrange(0,999))
out.write(s)
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "arch.patch",
- "/home/aur/incoming/%s/arch.patch" % p,
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/arch.patch" % p,
random.randrange(0,999))
out.write(s)
elif others == 2:
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "%s.patch" % p,
- "/home/aur/incoming/%s/%s.patch" % (p,p),
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/%s.patch" % (p,p),
random.randrange(0,999))
out.write(s)
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "arch.patch",
- "/home/aur/incoming/%s/arch.patch" % p,
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/arch.patch" % p,
random.randrange(0,999))
out.write(s)
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], "%s.install" % p,
- "/home/aur/incoming/%s/%s.install" % (p,p),
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], "/home/aur/incoming/%s/%s.install" % (p,p),
random.randrange(0,999))
out.write(s)
@@ -325,7 +319,7 @@ for p in seen_pkgs.keys():
path = loc + "/" + p
if not files.has_key(path):
files[path] = 1
- s = "INSERT INTO PackageContents (PackageID, URLPath, FSPath, FileSize) VALUES (%d, '%s', '%s', %d);\n" % (seen_pkgs[p], os.path.basename(path), path,
+ s = "INSERT INTO PackageContents (PackageID, FSPath, FileSize) VALUES (%d, '%s', %d);\n" % (seen_pkgs[p], path,
random.randrange(0,99999999))
out.write(s)
if DBUG: print "."
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php
index 68f8634..cdcc510 100644
--- a/web/html/pkgsubmit.php
+++ b/web/html/pkgsubmit.php
@@ -277,7 +277,7 @@ if ($_COOKIE["AURSID"]):
}
# Update package data
- $q = sprintf("UPDATE Packages SET ModifiedTS = UNIX_TIMESTAMP(), Name = '%s', Version = '%s-%s', License = '%s', Description = '%s', URL = '%s', LocationID = 2, FSPath = '%s', URLPath = '%s', OutOfDateTS = NULL WHERE ID = %d",
+ $q = sprintf("UPDATE Packages SET ModifiedTS = UNIX_TIMESTAMP(), Name = '%s', Version = '%s-%s', License = '%s', Description = '%s', URL = '%s', LocationID = 2, FSPath = '%s', OutOfDateTS = NULL WHERE ID = %d",
mysql_real_escape_string($new_pkgbuild['pkgname']),
mysql_real_escape_string($new_pkgbuild['pkgver']),
mysql_real_escape_string($new_pkgbuild['pkgrel']),
@@ -285,7 +285,6 @@ if ($_COOKIE["AURSID"]):
mysql_real_escape_string($new_pkgbuild['pkgdesc']),
mysql_real_escape_string($new_pkgbuild['url']),
mysql_real_escape_string($incoming_pkgdir . "/" . $pkg_name . ".tar.gz"),
- mysql_real_escape_string(URL_DIR . $pkg_name . "/" . $pkg_name . ".tar.gz"),
$pdata["ID"]);
db_query($q, $dbh);
@@ -323,7 +322,7 @@ if ($_COOKIE["AURSID"]):
$uid = uid_from_sid($_COOKIE["AURSID"]);
# This is a brand new package
- $q = sprintf("INSERT INTO Packages (Name, License, Version, CategoryID, Description, URL, LocationID, SubmittedTS, SubmitterUID, MaintainerUID, FSPath, URLPath) VALUES ('%s', '%s', '%s-%s', %d, '%s', '%s', 2, UNIX_TIMESTAMP(), %d, %d, '%s', '%s')",
+ $q = sprintf("INSERT INTO Packages (Name, License, Version, CategoryID, Description, URL, LocationID, SubmittedTS, SubmitterUID, MaintainerUID, FSPath) VALUES ('%s', '%s', '%s-%s', %d, '%s', '%s', 2, UNIX_TIMESTAMP(), %d, %d, '%s')",
mysql_real_escape_string($new_pkgbuild['pkgname']),
mysql_real_escape_string($new_pkgbuild['license']),
mysql_real_escape_string($new_pkgbuild['pkgver']),
@@ -333,8 +332,7 @@ if ($_COOKIE["AURSID"]):
mysql_real_escape_string($new_pkgbuild['url']),
$uid,
$uid,
- mysql_real_escape_string($incoming_pkgdir . "/" . $pkg_name . ".tar.gz"),
- mysql_real_escape_string(URL_DIR . $pkg_name . "/" . $pkg_name . ".tar.gz"));
+ mysql_real_escape_string($incoming_pkgdir . "/" . $pkg_name . ".tar.gz"));
$result = db_query($q, $dbh);
$packageID = mysql_insert_id($dbh);
diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php
index ab1bdbf..0868cb2 100644
--- a/web/lib/aurjson.class.php
+++ b/web/lib/aurjson.class.php
@@ -18,10 +18,23 @@ include_once("aur.inc");
**/
class AurJSON {
private $dbh = false;
- private $exposed_methods = array('search','info','msearch');
- private $fields = array('Packages.ID','Name','Version','CategoryID',
- 'Description', 'LocationID', 'URL','URLPath','License','NumVotes',
- '(OutOfDateTS IS NOT NULL) AS OutOfDate');
+ private $exposed_methods = array();
+ private $fields = array();
+
+ /**
+ * Initialize methods and database fields.
+ **/
+ public function __construct() {
+ $this->exposed_methods = array('search', 'info', 'msearch');
+
+ $this->fields = array(
+ 'Packages.ID', 'Name', 'Version', 'CategoryID',
+ 'Description', 'LocationID', 'URL', 'CONCAT("' .
+ mysql_real_escape_string(URL_DIR) .
+ '", Name, "/", Name, ".tar.gz") AS URLPath', 'License',
+ 'NumVotes', '(OutOfDateTS IS NOT NULL) AS OutOfDate'
+ );
+ }
/**
* Handles post data, and routes the request.
diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php
index 8dd3d28..a8da6c9 100644
--- a/web/template/pkg_details.php
+++ b/web/template/pkg_details.php
@@ -173,8 +173,9 @@ $out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : gmdate("r", intval($row[
$src = $src[0];
# It is presumably an internal source
if ($row["LocationID"] == 2) {
- echo "<a href='".dirname($row['URLPath'])."/".$row['Name'];
- echo "/$src'>$src</a><br />\n";
+ $urlpath = URL_DIR . $row['Name'];
+ echo "<a href='$urlpath/$src'>";
+ echo "$src</a><br />\n";
}
}
}