diff options
Diffstat (limited to 'web/lib/pkgfuncs.inc.php')
-rw-r--r-- | web/lib/pkgfuncs.inc.php | 112 |
1 files changed, 91 insertions, 21 deletions
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index defe7f45..cf8c2f9d 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -138,7 +138,7 @@ function pkg_dependencies($pkgid) { $pkgid = intval($pkgid); if ($pkgid > 0) { $dbh = DB::connect(); - $q = "SELECT pd.DepName, dt.Name, pd.DepCondition, p.ID FROM PackageDepends pd "; + $q = "SELECT pd.DepName, dt.Name, pd.DepCondition, pd.DepArch, p.ID FROM PackageDepends pd "; $q.= "LEFT JOIN Packages p ON pd.DepName = p.Name "; $q.= "OR SUBSTRING(pd.DepName FROM 1 FOR POSITION(': ' IN pd.DepName) - 1) = p.Name "; $q.= "LEFT JOIN DependencyTypes dt ON dt.ID = pd.DepTypeID "; @@ -167,7 +167,7 @@ function pkg_relations($pkgid) { $pkgid = intval($pkgid); if ($pkgid > 0) { $dbh = DB::connect(); - $q = "SELECT pr.RelName, rt.Name, pr.RelCondition, p.ID FROM PackageRelations pr "; + $q = "SELECT pr.RelName, rt.Name, pr.RelCondition, pr.RelArch, p.ID FROM PackageRelations pr "; $q.= "LEFT JOIN Packages p ON pr.RelName = p.Name "; $q.= "LEFT JOIN RelationTypes rt ON rt.ID = pr.RelTypeID "; $q.= "WHERE pr.PackageID = ". $pkgid . " "; @@ -219,11 +219,12 @@ function pkg_relation_type_id_from_name($name) { * @param string $name The name of the dependency * @param string $type The name of the dependency type * @param string $cond The package dependency condition string + * @param string $arch The package dependency architecture * @param int $pkg_id The package of the package to display the dependency for * * @return string The HTML code of the label to display */ -function pkg_depend_link($name, $type, $cond, $pkg_id) { +function pkg_depend_link($name, $type, $cond, $arch, $pkg_id) { if ($type == 'optdepends' && strpos($name, ':') !== false) { $tokens = explode(':', $name, 2); $name = $tokens[0]; @@ -242,12 +243,74 @@ function pkg_depend_link($name, $type, $cond, $pkg_id) { $link .= htmlspecialchars($name) . '</a>'; $link .= htmlspecialchars($cond); - if ($type == 'makedepends') { - $link .= ' <em>(make)</em>'; - } elseif ($type == 'checkdepends') { - $link .= ' <em>(check)</em>'; - } elseif ($type == 'optdepends') { - $link .= ' <em>(optional) – ' . htmlspecialchars($desc) . ' </em>'; + if ($type != 'depends' || $arch) { + $link .= ' <em>('; + + if ($type == 'makedepends') { + $link .= 'make'; + } elseif ($type == 'checkdepends') { + $link .= 'check'; + } elseif ($type == 'optdepends') { + $link .= 'optional'; + } + + if ($type != 'depends' && $arch) { + $link .= ', '; + } + + if ($arch) { + $link .= htmlspecialchars($arch); + } + + $link .= ')'; + if ($type == 'optdepends') { + $link .= ' – ' . htmlspecialchars($desc) . ' </em>'; + } + $link .= '</em>'; + } + + return $link; +} + +/** + * Get the HTML code to display a package relation + * + * @param string $name The name of the relation + * @param string $cond The package relation condition string + * @param string $arch The package relation architecture + * + * @return string The HTML code of the label to display + */ +function pkg_rel_html($name, $cond, $arch) { + $html = htmlspecialchars($name) . htmlspecialchars($cond); + + if ($arch) { + $html .= ' <em>(' . htmlspecialchars($arch) . ')</em>'; + } + + return $html; +} + +/** + * Get the HTML code to display a source link + * + * @param string $url The URL of the source + * @param string $arch The source architecture + * + * @return string The HTML code of the label to display + */ +function pkg_source_link($url, $arch) { + $url = explode('::', $url); + $parsed_url = parse_url($url[0]); + + if (isset($parsed_url['scheme']) || isset($url[1])) { + $link = '<a href="' . htmlspecialchars((isset($url[1]) ? $url[1] : $url[0]), ENT_QUOTES) . '">' . htmlspecialchars($url[0]) . '</a>'; + } else { + $link = htmlspecialchars($url[0]); + } + + if ($arch) { + $link .= ' <em>(' . htmlspecialchars($arch) . ')</em>'; } return $link; @@ -289,7 +352,7 @@ function pkg_sources($pkgid) { $pkgid = intval($pkgid); if ($pkgid > 0) { $dbh = DB::connect(); - $q = "SELECT Source FROM PackageSources "; + $q = "SELECT Source, SourceArch FROM PackageSources "; $q.= "WHERE PackageID = " . $pkgid; $q.= " ORDER BY Source"; $result = $dbh->query($q); @@ -297,7 +360,7 @@ function pkg_sources($pkgid) { return array(); } while ($row = $result->fetch(PDO::FETCH_NUM)) { - $sources[] = $row[0]; + $sources[] = $row; } } return $sources; @@ -749,16 +812,18 @@ function pkg_create($base_id, $pkgname, $pkgver, $pkgdesc, $pkgurl) { * @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 + * @param string $deparch The architecture of the dependency to add * * @return void */ -function pkg_add_dep($pkgid, $type, $depname, $depcondition) { +function pkg_add_dep($pkgid, $type, $depname, $depcondition, $deparch) { $dbh = DB::connect(); - $q = sprintf("INSERT INTO PackageDepends (PackageID, DepTypeID, DepName, DepCondition) VALUES (%d, %d, %s, %s)", + $q = sprintf("INSERT INTO PackageDepends (PackageID, DepTypeID, DepName, DepCondition, DepArch) VALUES (%d, %d, %s, %s, %s)", $pkgid, pkg_dependency_type_id_from_name($type), $dbh->quote($depname), - $dbh->quote($depcondition) + $dbh->quote($depcondition), + $deparch ? $dbh->quote($deparch) : 'NULL' ); $dbh->exec($q); } @@ -770,16 +835,18 @@ function pkg_add_dep($pkgid, $type, $depname, $depcondition) { * @param string $type The type of relation to add * @param string $relname The name of the relation to add * @param string $relcondition The version requirement of the relation + * @param string $relarch The architecture of the relation to add * * @return void */ -function pkg_add_rel($pkgid, $type, $relname, $relcondition) { +function pkg_add_rel($pkgid, $type, $relname, $relcondition, $relarch) { $dbh = DB::connect(); - $q = sprintf("INSERT INTO PackageRelations (PackageID, RelTypeID, RelName, RelCondition) VALUES (%d, %d, %s, %s)", + $q = sprintf("INSERT INTO PackageRelations (PackageID, RelTypeID, RelName, RelCondition, RelArch) VALUES (%d, %d, %s, %s, %s)", $pkgid, pkg_relation_type_id_from_name($type), $dbh->quote($relname), - $dbh->quote($relcondition) + $dbh->quote($relcondition), + $relarch ? $dbh->quote($relarch) : 'NULL' ); $dbh->exec($q); } @@ -789,14 +856,17 @@ function pkg_add_rel($pkgid, $type, $relname, $relcondition) { * * @param int $pkgid The package ID to add the source for * @param string $pkgsrc The package source to add to the database + * @param string $srcarch The architecture of the source to add * * @return void */ -function pkg_add_src($pkgid, $pkgsrc) { +function pkg_add_src($pkgid, $pkgsrc, $srcarch) { $dbh = DB::connect(); - $q = "INSERT INTO PackageSources (PackageID, Source) VALUES ("; - $q .= $pkgid . ", " . $dbh->quote($pkgsrc) . ")"; - + $q = sprintf("INSERT INTO PackageSources (PackageID, Source, SourceArch) VALUES (%d, %s, %s)", + $pkgid, + $dbh->quote($pkgsrc), + $srcarch ? $dbh->quote($srcarch) : 'NULL' + ); $dbh->exec($q); } |