summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/html/pkgsubmit.php36
-rw-r--r--web/lib/pkgfuncs.inc.php29
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);
}