index : website | |
Archlinux32 website - obsolete | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | feeds/feed.php | 294 | ||||
-rw-r--r-- | feeds/index.php | 194 |
diff --git a/feeds/feed.php b/feeds/feed.php deleted file mode 100644 index 65fc372..0000000 --- a/feeds/feed.php +++ /dev/null @@ -1,294 +0,0 @@ -<?php - -require_once "../init.php"; - -require_once BASE . "/lib/mysql.php"; - -$uri_parts = explode('/', $_SERVER['REQUEST_URI']); - -if ($uri_parts[0] != '' || $uri_parts[1] != 'feeds') - throw_http_error(422, 'Unprocessable Entity'); - -$last = array_pop($uri_parts); -if ($last != '') - array_push($uri_parts, $last); - -array_splice( - $uri_parts, - 0, 2 -); - -if ($uri_parts[0] == 'releases') { - if (count($uri_parts) != 1) - throw_http_error(501, "Not Implemented", '/feeds/' . implode('/',$uri_parts)); - $available_isos = apcu_fetch('available_isos', $apcu_success); - if ($apcu_success == false || true) { - $ch = curl_init("https://mirror.archlinux32.org/archisos/"); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - $listing = curl_exec($ch); - curl_close($ch); - preg_match_all( - ',<a href="(archlinux-([0-9]{4}\.[0-9]{2}\.[0-9]{2})-([^.]+)\.iso)">\1</a>\s+(\S+)\s+\S+\s+([0-9]+)\s*\n,', - $listing, - $matches, - PREG_SET_ORDER - ); - $available_isos = array(); - foreach ($matches as $match) { - $available_isos[] = array( - 'file' => $match[1], - 'title' => $match[2] . '-' . $match[3], - 'build_date' => strtotime(str_replace('.', '-', $match[2])), - 'build_type' => $match[3], - 'release_date' => $match[4], - 'size' => $match[5] - ); - } - apcu_store('available_isos', $available_isos, 3600); - } - - header('Content-Type: application/rss+xml; charset=utf-8'); - print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; - print "<rss version=\"2.0\">"; - print "<channel>"; - print "<title>"; - print "Arch Linux 32: Releases"; - print "</title>"; - print "<link>"; - print "https://www.archlinux32.org/download/"; - print "</link>"; - print "<description>"; - print "Release ISOs"; - print "</description>"; - print "<atom:link href=\"https://www.archlinux32.org/feeds/releases/\" rel=\"self\">"; - print "</atom:link>"; - print "<language>"; - print "en-us"; - print "</language>"; - print "<lastBuildDate>"; - print date('Y-m-d', $available_isos[0]['build_date']); - print "</lastBuildDate>"; - foreach ($available_isos as $available_iso) { - print "<item>"; - print "<title>"; - print $available_iso['title']; - print "</title>"; - // TODO: link to iso description (do we want that?) - print "<description>"; - print "</description>"; - print "<pubDate>"; - print date('Y-m-d', $available_iso['release_date']); - print "</pubDate>"; - // TODO: guid - print "<enclosure length=\""; - print date('Y-m-d', $available_iso['size']); - print "\" type=\"application/x-bittorrent\">"; - // TODO: url=\"https://www.archlinux32.org/iso/2019.02.01/archlinux-2019.02.01-x86_64.iso.torrent\">"; - print "</enclosure>"; - print "</item>"; - } - print "</channel>"; - print "</rss>"; - - die(); -} - -if ($uri_parts[0] == 'packages') { - - array_splice( - $uri_parts, - 0, 1 - ); - -// TODO: implement "added" and "removed" - but how? -// $actions = array('' => '', 'added' => 'added', 'removed' => 'removed'); - $actions = array('' => ''); - $archs = array('all' => 'all'); - $result = mysql_run_query( - "SELECT DISTINCT `architectures`.`name` FROM `architectures`" . - mysql_join_architectures_repositories() . - " WHERE `repositories`.`is_on_master_mirror`" . - " ORDER BY `name`" - ); - while ($row = $result -> fetch_assoc()) - $archs[$row['name']] = $row['name']; - $repos = array('' => ''); - $result = mysql_run_query( - "SELECT DISTINCT `repositories`.`name` FROM `repositories` WHERE `repositories`.`is_on_master_mirror` ORDER BY `name`" - ); - while ($row = $result -> fetch_assoc()) - $repos[$row['name']] = $row['name']; - - if (count($uri_parts) > 0 && array_key_exists($uri_parts[0], $actions)) { - $action = $uri_parts[0]; - $action_filter = 'unimplemented'; - array_splice( - $uri_parts, - 0, 1 - ); - } - else { - $action = ''; - $action_filter = '`repositories`.`is_on_master_mirror`'; - } - - if (count($uri_parts) > 0) { - if (!array_key_exists($uri_parts[0], $archs)) - throw_http_error(501, "Not Implemented", implode('/',$uri_parts)); - $arch = $uri_parts[0]; - $arch_filter = ' AND `r_a`.`name`="' . $arch . '"'; - array_splice( - $uri_parts, - 0, 1 - ); - } - else { - $arch = ''; - $arch_filter = ''; - } - - if (count($uri_parts) > 0) { - if (!array_key_exists($uri_parts[0], $repos)) - throw_http_error(501, "Not Implemented", implode('/',$uri_parts)); - $repo = $uri_parts[0]; - $repo_filter = ' AND `repositories`.`name`="' . $repo . '"'; - array_splice( - $uri_parts, - 0, 1 - ); - } - else { - $repo = ''; - $repo_filter = ''; - } - - if (count($uri_parts) != 0) - throw_http_error(501, "Not Implemented", implode('/',$uri_parts)); - - $result = mysql_run_query( - "SELECT MAX(`build_assignments`.`return_date`) AS `max_build_date`" . - " FROM `build_assignments`" . - mysql_join_build_assignments_binary_packages() . - mysql_join_binary_packages_binary_packages_in_repositories() . - mysql_join_binary_packages_in_repositories_repositories() . - mysql_join_repositories_architectures("", "r_a") . - " WHERE " . $action_filter . $repo_filter . $arch_filter - ); - $max_build_date = $result -> fetch_assoc(); - $max_build_date = $max_build_date['max_build_date']; - - $result = mysql_run_query( - "SELECT `binary_packages`.`pkgname`," . - "`binary_packages`.`epoch`," . - "`binary_packages`.`pkgver`," . - "`binary_packages`.`pkgrel`," . - "`binary_packages`.`sub_pkgrel`," . - "`binary_packages`.`sub_pkgrel_omitted`," . - "`architectures`.`name` AS `architecture`," . - "`repositories`.`name` AS `repo`," . - "`r_a`.`name` AS `r_a`," . - "`binary_packages_in_repositories`.`last_moved`" . - " FROM `binary_packages`" . - mysql_join_binary_packages_binary_packages_in_repositories() . - mysql_join_binary_packages_in_repositories_repositories() . - mysql_join_repositories_architectures("", "r_a") . - mysql_join_binary_packages_architectures() . - " WHERE " . $action_filter . $repo_filter . $arch_filter . - " ORDER BY `binary_packages_in_repositories`.`last_moved` DESC" . - " LIMIT 50" - ); - $packages = array(); - while ($row = $result -> fetch_assoc()) - $packages[] = $row; - - header('Content-Type: application/rss+xml; charset=utf-8'); - - print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; - print "<rss version=\"2.0\">"; - print "<channel>"; - print "<title>"; - print "Arch Linux 32: "; - switch ($action) { - case '': - print "Recent package updates"; - break; - case 'added': - print "Recent added packages"; - break; - case 'removes': - print "Recent removed packages"; - break; - } - if ($arch != 'all') - print " (" . $arch; - if ($repo != '') - print " [" . $repo . "]"; - if ($arch != '') - print ")"; - print "</title>"; - print "<link>"; - print "https://www.archlinux32.org/packages/"; - print "</link>"; - print "<description>"; - switch ($action) { - case '': - print "Recently updated packages in the Arch Linux 32 package repositories"; - break; - case 'added': - print "Recently added packages to the Arch Linux 32 package repositories"; - break; - case 'removes': - print "Recently removed packages from the Arch Linux 32 package repositories"; - break; - } - if ($arch != 'all') - print " for the '" . $arch . "' architecture (including 'any' packages)"; - else - print " for all architectures"; - if ($repo != '') - print " in the [" . $repo . "] repository"; - print "."; - print "</description>"; - print "<atom:link href=\"https://www.archlinux32.org" . $_SERVER['REQUEST_URI'] . "\" rel=\"self\">"; - print "</atom:link>"; - print "<language>"; - print "en-us"; - print "</language>"; - print "<lastBuildDate>"; - print $max_build_date; - print "</lastBuildDate>"; - foreach ($packages as $package) { - print "<item>"; - print "<title>"; - print $package['pkgname']; - if ($package['epoch'] != 0) - print $package['epoch'] . ":"; - print $package['pkgver'] . "-" . $package['pkgrel']; - if (!$package['sub_pkgrel_omitted']) - print '.' . $package['sub_pkgrel']; - print ' ' . $package['architecture']; - print "</title>"; - print "<link>"; - print "https://www.archlinux32.org/packages/" . $package['repo'] . "/" . $package['r_a'] . "/" . $package['pkgname'] . "/"; - print "</link>"; -// TODO: description - print "<pubDate>"; - print $package['last_moved']; - print "</pubDate>"; -// TODO: guid - print "<category>"; - print $package['repo']; - print "</category>"; - print "<category>"; - print $package['r_a']; - print "</category>"; - print "</item>"; - } - print "</channel>"; - print "</rss>"; - - die(); - -} - -throw_http_error(501, "Not Implemented"); diff --git a/feeds/index.php b/feeds/index.php deleted file mode 100644 index e74717b..0000000 --- a/feeds/index.php +++ /dev/null @@ -1,194 +0,0 @@ -<?php - -require_once "../init.php"; - -require_once BASE . "/lib/mysql.php"; -require_once BASE . "/lib/style.php"; -require_once BASE . "/lib/format.php"; - -print_header("RSS - Feeds"); - -$result = mysql_run_query( - "SELECT DISTINCT `architectures`.`name` FROM `architectures`" . - mysql_join_architectures_repositories() . - " WHERE `repositories`.`is_on_master_mirror`" . - " ORDER BY `name`" -); -$archs = array(); -while ($row = $result -> fetch_assoc()) - $archs[$row['name']] = $row['name'] . '/'; - -$print_archs = array_merge( - array( - '' => '', - 'All Arches' => 'all/' - ), - $archs -); - -$result = mysql_run_query( - "SELECT DISTINCT `repositories`.`name` FROM `repositories` WHERE `repositories`.`is_on_master_mirror` ORDER BY `name`" -); -$repos = array(); -while ($row = $result -> fetch_assoc()) - $repos[$row['name']] = $row['name'] . '/'; - -$print_repos = array_merge( - array( - 'All Repos' => '' - ), - $repos -); - -$bugtracker_projects = array( - 0 => 'All Projects', - 1 => 'Arch Linux 32' -); - -$bugtracker_operations = array( - 'Opened' => '', - 'Edited' => 'topic=edit&', - 'Closed' => 'topic=clo&' -); - -function print_arches_header() { - global $print_archs; - foreach ($print_archs as $arch => $dummy) { - print " <th>\n"; - print " " . $arch . "\n"; - print " </th>\n"; - }; -} - -function print_feeds($prefix) { - global $print_archs; - global $print_repos; - foreach ($print_repos as $repo => $dummy) { - print " <tr>\n"; - print " <td>\n"; - print " <strong>" . $repo . "</strong>\n"; - print " </td>\n"; - foreach ($print_archs as $arch => $dummy) { - if ($arch == '') - continue; - print " <td>\n"; - print " <a href=\"/feeds/packages/" . $prefix . $print_archs[$arch] . $print_repos[$repo] . "\" class=\"rss\">Feed</a>\n"; - print " </td>\n"; - } - print " </tr>\n"; - } -} - -function print_feeds_table($prefix) { - print " <table class=\"pretty2\">\n"; - print " <thead>\n"; - print " <tr>\n"; - print_arches_header(); - print " </tr>\n"; - print " </thead>\n"; - print " <tbody>\n"; - print_feeds($prefix); - print " </tbody>\n"; - print " </table>\n"; -} - -?> - <div id="rss-feeds" class="box"> - <h2> - RSS Feeds - </h2> - <p> - Several RSS feeds are available for consumption from the Arch32 website. - The majority of these are package-related and allow feeds to be customized for the updates you care about. - </p> - <h3> - News Feed - </h3> - <p> - Grab the - <a href="https://news.archlinux32.org/rss.php" class="rss" title="Arch Linux news feed">news item feed</a> - to keep up-to-date with the latest news from the Arch Linux development staff. - </p> - <h3> - Package Feeds - </h3> - <p> - If you are interested in - <a href="/feeds/packages/" class="rss" title="Arch Linux 32 package updates feed">all package updates</a>, - then grab this feed. -<?php - -print_feeds_table(''); - -?> - <p> - <s>Recently added packages.</s> (to be implemented) - </p> -<?php - -// print_feeds_table('added/'); - -?> - <p> - <s>Recently removed packages.</s> (to be implemented) - </p> -<?php - -// print_feeds_table('removed/'); - -?> - <h3> - Release Feed - </h3> - <p> - Grab the - <a href="/feeds/releases/" class="rss" title="Arch Linux release feed">ISO release feed</a> - if you want to help seed the ISO release torrents as they come out. - </p> - <h3> - Development Feeds - </h3> - <p> - Subscribe to any of the following to track bug tickets and feature requests from the - <a href="https://bugs.archlinux32.org/" title="Arch Linux 32 Bugs">Arch Linux 32 Bugtracker</a>: - </p> - <table class="pretty2"> - <thead> - <tr> - <th> - Project - </th> -<?php - -foreach ($bugtracker_operations as $label => $dummy) { - print " <th>\n"; - print " Recently " . $label . " Tasks\n"; - print " </th>\n"; -} - -?> - </tr> - </thead> - <tbody> -<?php - -foreach ($bugtracker_projects as $id => $project) { - print " <tr>\n"; - print " <td>\n"; - print " " . $project . "\n"; - print " </td>\n"; - foreach ($bugtracker_operations as $label => $option) { - print " <td>\n"; - print " <a href=\"https://bugs.archlinux.org/feed.php?feed_type=rss2&" . $option . "project=" . $id . "\" class=\"rss\">Feed</a>\n"; - print " </td>\n"; - } - print " </tr>\n"; -} - -?> - </tbody> - </table> - </div> -<?php - -print_footer(); |