diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-01-24 18:08:29 +0100 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-01-24 18:08:29 +0100 |
commit | 556de318aeeef6019bb7628389beee1358de93f8 (patch) | |
tree | 434794760f8df1c575b8771c80f0175477ffd5f6 | |
parent | 0bb2a7b5147f9eeec5df5f02f59f03b6e85a8ed2 (diff) | |
download | aurweb-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-- | UPGRADING | 2 | ||||
-rw-r--r-- | support/schema/aur-schema.sql | 1 | ||||
-rwxr-xr-x | support/schema/gendummydata.py | 22 | ||||
-rw-r--r-- | web/html/pkgsubmit.php | 8 | ||||
-rw-r--r-- | web/lib/aurjson.class.php | 21 | ||||
-rw-r--r-- | web/template/pkg_details.php | 5 |
6 files changed, 32 insertions, 27 deletions
@@ -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"; } } } |