diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-04-17 19:49:26 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-04-17 21:09:16 +0200 |
commit | 73936002f7d5685a9063683f68d4e8c2e01be0ac (patch) | |
tree | c1f152f76be0399222a47cab2060998e41ce5688 /web | |
parent | 32b5d466439b5c291472c68f6a732c5be4ca60cf (diff) | |
download | aurweb-73936002f7d5685a9063683f68d4e8c2e01be0ac.tar.xz |
Store {make,check,opt}depends in the database
In addition to parsing and storing dependencies of packages, store
makedepends, checkdepends and optdepends. Every dependency (of any type)
is displayed on the package details page.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Diffstat (limited to 'web')
-rw-r--r-- | web/html/pkgsubmit.php | 36 | ||||
-rw-r--r-- | web/lib/pkgfuncs.inc.php | 29 |
2 files changed, 45 insertions, 20 deletions
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php index 7db81a5..045b8f9 100644 --- a/web/html/pkgsubmit.php +++ b/web/html/pkgsubmit.php @@ -150,7 +150,13 @@ if ($uid): $pkginfo[] = array_merge($pkgbase_info, $section_info); } } - $section_info = array('depends' => array(), 'source' => array()); + $section_info = array( + 'depends' => array(), + 'makedepends' => array(), + 'checkdepends' => array(), + 'optdepends' => array(), + 'source' => array() + ); /* Fall-through case. */ case 'epoch': case 'pkgdesc': @@ -162,6 +168,9 @@ if ($uid): break; case 'source': case 'depends': + case 'makedepends': + case 'checkdepends': + case 'optdepends': $section_info[$key][] = $value; break; } @@ -181,15 +190,12 @@ if ($uid): if (!isset($pkgbase_info['pkgbase'])) { $pkgbase_info['pkgbase'] = $pkgbase_info['pkgname']; } - if (empty($pkgbase_info['depends'])) { - $pkgbase_info['depends'] = array(); - } else { - $pkgbase_info['depends'] = explode(" ", $pkgbase_info['depends']); - } - if (empty($pkgbase_info['source'])) { - $pkgbase_info['source'] = array(); - } else { - $pkgbase_info['source'] = explode(" ", $pkgbase_info['source']); + foreach (array('source', 'depends', 'makedepends', 'checkdepends', 'optdepends') as $array_opt) { + if (empty($pkgbase_info[$array_opt])) { + $pkgbase_info[$array_opt] = array(); + } else { + $pkgbase_info[$array_opt] = explode(" ", $pkgbase_info[$array_opt]); + } } $pkginfo[] = $pkgbase_info; } @@ -345,10 +351,12 @@ if ($uid): foreach ($pkginfo as $pi) { $pkgid = pkg_create($base_id, $pi['pkgname'], $pi['license'], $pi['full-version'], $pi['pkgdesc'], $pi['url']); - foreach ($pi['depends'] as $dep) { - $deppkgname = preg_replace("/(<|=|>).*/", "", $dep); - $depcondition = str_replace($deppkgname, "", $dep); - pkg_add_dep($pkgid, $deppkgname, $depcondition); + foreach (array('depends', 'makedepends', 'checkdepends', 'optdepends') as $deptype) { + foreach ($pi[$deptype] as $dep) { + $deppkgname = preg_replace("/(<|=|>).*/", "", $dep); + $depcondition = str_replace($deppkgname, "", $dep); + pkg_add_dep($pkgid, $deptype, $deppkgname, $depcondition); + } } foreach ($pi['source'] as $src) { diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index c6b4a27..153e2a8 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -132,6 +132,21 @@ function pkg_dependencies($pkgid) { } /** + * Get the ID of a dependency type given its name + * + * @param string $name The name of the dependency type + * + * @return int The ID of the dependency type + */ +function pkg_dependency_type_id_from_name($name) { + $dbh = DB::connect(); + $q = "SELECT ID FROM DependencyTypes WHERE Name = "; + $q.= $dbh->quote($name); + $result = $dbh->query($q); + return $result->fetch(PDO::FETCH_COLUMN, 0); +} + +/** * Determine packages that depend on a package * * @param string $name The package name for the dependency search @@ -653,18 +668,20 @@ function pkg_create($base_id, $pkgname, $license, $pkgver, $pkgdesc, $pkgurl) { * Add a dependency for a specific package to the database * * @param int $pkgid The package ID to add the dependency for + * @param string $type The type of dependency to add * @param string $depname The name of the dependency to add * @param string $depcondition The type of dependency for the package * * @return void */ -function pkg_add_dep($pkgid, $depname, $depcondition) { +function pkg_add_dep($pkgid, $type, $depname, $depcondition) { $dbh = DB::connect(); - $q = sprintf("INSERT INTO PackageDepends (PackageID, DepName, DepCondition) VALUES (%d, %s, %s)", - $pkgid, - $dbh->quote($depname), - $dbh->quote($depcondition)); - + $q = sprintf("INSERT INTO PackageDepends (PackageID, DepTypeID, DepName, DepCondition) VALUES (%d, %d, %s, %s)", + $pkgid, + pkg_dependency_type_id_from_name($type), + $dbh->quote($depname), + $dbh->quote($depcondition) + ); $dbh->exec($q); } |