diff options
author | Marcel Korpel <marcel.lists@gmail.com> | 2013-01-09 18:41:33 +0100 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2013-01-19 12:18:13 +0100 |
commit | 8e1051932eb86ef87f7b64efc86f50e633201b56 (patch) | |
tree | ce7bd28a65411339ca5cb5f711ddb6b79a01fa98 | |
parent | b004333eadb9a4db57592bb501b28edced708943 (diff) | |
download | aur-8e1051932eb86ef87f7b64efc86f50e633201b56.tar.gz aur-8e1051932eb86ef87f7b64efc86f50e633201b56.tar.xz |
Add description meta-element to package pages
Implements FS#33294
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r-- | web/html/packages.php | 11 | ||||
-rw-r--r-- | web/lib/aur.inc.php | 2 | ||||
-rw-r--r-- | web/lib/pkgfuncs.inc.php | 81 | ||||
-rw-r--r-- | web/template/header.php | 3 |
4 files changed, 62 insertions, 35 deletions
diff --git a/web/html/packages.php b/web/html/packages.php index 61825501..c1e54e1b 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -20,9 +20,12 @@ if (!isset($pkgid) || !isset($pkgname)) { } } -# Set the title to the current query if required +# Set the title to the current query and get package details if required +$details = array(); + if (isset($pkgname)) { $title = $pkgname; + $details = get_package_details($pkgid); } else if (!empty($_GET['K'])) { $title = __("Search Criteria") . ": " . $_GET['K']; } else { @@ -93,7 +96,7 @@ if (check_token()) { } } -html_header($title); +html_header($title, $details); ?> <?php if ($output): ?> @@ -105,10 +108,10 @@ if (isset($pkgid)) { include('pkg_search_form.php'); if ($pkgid) { if (isset($_COOKIE["AURSID"])) { - package_details($pkgid, $_COOKIE["AURSID"]); + display_package_details($pkgid, $details, $_COOKIE["AURSID"]); } else { - package_details($pkgid, null); + display_package_details($pkgid, $details, null); } } else { print __("Error trying to retrieve package details.")."<br />\n"; diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index 018d5c82..e3921025 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -297,7 +297,7 @@ function db_connect() { * * @return void */ -function html_header($title="") { +function html_header($title="", $details=array()) { global $AUR_LOCATION; global $DISABLE_HTTP_LOGIN; global $LANG; diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index c00c33db..568ca3d1 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -432,17 +432,52 @@ function pkgname_is_blacklisted($name, $dbh=NULL) { } /** + * Get the package details + * + * @param string $id The package ID to get description for + * @param \PDO $dbh An already established database connection + * + * @return array The package's details OR error message + **/ +function get_package_details($id=0, $dbh=NULL) { + if(!$dbh) { + $dbh = db_connect(); + } + + $q = "SELECT Packages.*,Category "; + $q.= "FROM Packages,PackageCategories "; + $q.= "WHERE Packages.CategoryID = PackageCategories.ID "; + $q.= "AND Packages.ID = " . intval($id); + $result = $dbh->query($q); + + $row = array(); + + if (!$result) { + $row['error'] = __("Error retrieving package details."); + } + else { + $row = $result->fetch(PDO::FETCH_ASSOC); + if (empty($row)) { + $row['error'] = __("Package details could not be found."); + } + } + + return $row; +} + +/** * Display the package details page * * @global string $AUR_LOCATION The AUR's URL used for notification e-mails * @global bool $USE_VIRTUAL_URLS True if using URL rewriting, otherwise false * @param string $id The package ID to get details page for + * @param array $row Package details retrieved by get_package_details * @param string $SID The session ID of the visitor * @param \PDO $dbh An already established database connection * * @return void */ -function package_details($id=0, $SID="", $dbh=NULL) { +function display_package_details($id=0, $row, $SID="", $dbh=NULL) { global $AUR_LOCATION; global $USE_VIRTUAL_URLS; @@ -450,42 +485,28 @@ function package_details($id=0, $SID="", $dbh=NULL) { $dbh = db_connect(); } - $q = "SELECT Packages.*,Category "; - $q.= "FROM Packages,PackageCategories "; - $q.= "WHERE Packages.CategoryID = PackageCategories.ID "; - $q.= "AND Packages.ID = " . intval($id); - $result = $dbh->query($q); - - if (!$result) { - print "<p>" . __("Error retrieving package details.") . "</p>\n"; + if (isset($row['error'])) { + print "<p>" . $row['error'] . "</p>\n"; } else { - $row = $result->fetch(PDO::FETCH_ASSOC); - if (empty($row)) { - print "<p>" . __("Package details could not be found.") . "</p>\n"; + include('pkg_details.php'); - } - else { - include('pkg_details.php'); - - # Actions Bar - if ($SID) { - include('actions_form.php'); - if (isset($_REQUEST['comment']) && check_token()) { - $uid = uid_from_sid($SID, $dbh); - add_package_comment($id, $uid, $_REQUEST['comment'], $dbh); - } - include('pkg_comment_form.php'); + # Actions Bar + if ($SID) { + include('actions_form.php'); + if (isset($_REQUEST['comment']) && check_token()) { + $uid = uid_from_sid($SID, $dbh); + add_package_comment($id, $uid, $_REQUEST['comment'], $dbh); } + include('pkg_comment_form.php'); + } - # Print Comments - $comments = package_comments($id, $dbh); - if (!empty($comments)) { - include('pkg_comments.php'); - } + # Print Comments + $comments = package_comments($id, $dbh); + if (!empty($comments)) { + include('pkg_comments.php'); } } - return; } diff --git a/web/template/header.php b/web/template/header.php index 92cb2ff8..9cefedcb 100644 --- a/web/template/header.php +++ b/web/template/header.php @@ -10,6 +10,9 @@ <link rel='shortcut icon' href='/images/favicon.ico' /> <link rel='alternate' type='application/rss+xml' title='Newest Packages RSS' href='<?= get_uri('/rss/'); ?>' /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<?php if (isset($details['Description']) && !empty($details['Description'])): ?> + <meta name="description" content="<?= htmlspecialchars($details['Description']) ?>" /> +<?php endif; ?> </head> <body> <div id="archnavbar" class="anb-aur"> |