<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository macports-www.

</pre>
<p><a href="https://github.com/macports/macports-www/commit/dfd296a87c93a8d1093283245d0113999439544a">https://github.com/macports/macports-www/commit/dfd296a87c93a8d1093283245d0113999439544a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new dfd296a  Drop ports.php, remove database connectivity
</span>dfd296a is described below

<span style='display:block; white-space:pre;color:#808000;'>commit dfd296a87c93a8d1093283245d0113999439544a
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Thu Jun 11 17:48:38 2020 +0200

<span style='display:block; white-space:pre;color:#404040;'>    Drop ports.php, remove database connectivity
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    The benefits of not having to provide connectivity to PostgreSQL for PHP
</span><span style='display:block; white-space:pre;color:#404040;'>    outweigh the downsides of not having two rather meaningless numbers
</span><span style='display:block; white-space:pre;color:#404040;'>    disabled on our home page.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    ports.php was replaced by the webapp a while ago anyway.
</span>---
 includes/common.inc |  78 --------------
 index.php           |   6 +-
 ports.php           | 293 ----------------------------------------------------
 3 files changed, 2 insertions(+), 375 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/includes/common.inc b/includes/common.inc
</span><span style='display:block; white-space:pre;color:#808080;'>index 783642a..74a380f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/includes/common.inc
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/includes/common.inc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,84 +69,6 @@ function print_warnings() {
</span> }
 
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-######################################################################
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Connect to the portsdb and gather miscellaneous information:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-function portsdb_gather_information() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $script = basename($_SERVER['PHP_SELF']);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $portsdb_connection = FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (function_exists('pg_connect')) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $portsdb_connection = pg_connect("");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($portsdb_connection === FALSE) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        switch ($script) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            case "index.php":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $portsdb_info = array(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    'connection_handler' => FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    'num_ports' => 'a lot of',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    'num_categories' => 'many'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            case "ports.php":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print_header("The MacPorts Project", "utf-8");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    <div id="content">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        <h2 class="hdr">MacPorts Portfiles</h2>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        <p>Our database is currently unavailable. We hope to have it back soon!</p>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    </div>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print_footer();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                die();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print_footer();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                die();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $portsdb_info = array(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            'connection_handler' => $portsdb_connection,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            'num_ports' => ports_count(),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            'num_categories' => categories_count()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return $portsdb_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-######################################################################
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Total count of currently available ports:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-function ports_count() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $result = pg_query("SELECT COUNT(DISTINCT name) FROM portfiles");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $row = pg_fetch_array($result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $count = $row[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $count = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return $count;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-######################################################################
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Total count of port categories:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-function categories_count() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $result = pg_query("SELECT COUNT(DISTINCT category) FROM categories");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $row = pg_fetch_array($result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $count = $row[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $count = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return $count;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> ######################################################################
 
 # Obfuscate e-mail addresses:
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/index.php b/index.php
</span><span style='display:block; white-space:pre;color:#808080;'>index 9655937..8287843 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/index.php
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/index.php
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,6 @@
</span>     /* Copyright (c) 2007, 2014, The MacPorts Project. */
     include_once("includes/common.inc");
     print_header('The MacPorts Project -- Home', 'utf-8');
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    $portsdb_info = portsdb_gather_information();
</span> ?>
 
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -21,9 +20,8 @@
</span>     <p>We provide a single software tree that attempts to track the latest release of every software title (port) we distribute,
     without splitting them into &#8220;stable&#8221; Vs. &#8220;unstable&#8221; branches, targeting mainly macOS Sierra v10.12 and later
     (including macOS Catalina v10.15).
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    There are currently <a href="<?php print $portdb_url; ?>">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <b><?php print $portsdb_info['num_ports']; ?></b> ports</a> in our tree, distributed among <?php print $portsdb_info['num_categories']; ?>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    different categories, and more are being added on a regular basis.</p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    There are <a href="<?php print $portdb_url; ?>">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <b>thousands</b> of ports</a> in our tree, distributed among different categories, and more are being added on a regular basis.</p>
</span> 
     <h3 class="subhdr">Getting started</h3>
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/ports.php b/ports.php
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 78c5f23..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ports.php
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,293 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<?php
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* -*- coding: utf-8; mode: php; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:set fenc=utf-8 filetype=php et sw=4 ts=4 sts=4: */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Web client to the PortIndex2MySQL script located in 'jobs' directory of git repository macports-infrastructure . */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Copyright (c) 2004, OpenDarwin. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Copyright (c) 2004-2007, The MacPorts Project. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    include_once("includes/common.inc");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $portsdb_info = portsdb_gather_information();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $sql = "SELECT ceil(extract( epoch from activity_time)) as tim FROM log ORDER BY tim DESC";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $result = pg_query($sql);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($result && $row = pg_fetch_row($result)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $date = date('Y-m-d', $row[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $time = date('H:i:s e', $row[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $date = '(unknown)';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $time = '(unknown)';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $by = isset($_GET['by']) ? $_GET['by'] : '';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $substr = isset($_GET['substr']) ? $_GET['substr'] : '';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $page = isset($_GET['page']) ? max(intval($_GET['page']), 1) : '1';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $pagesize = isset($_GET['pagesize']) ? max(intval($_GET['pagesize']), 1) : 50; # arbitrary setting
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # protect against XSS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $phpself = htmlspecialchars($_SERVER['PHP_SELF']);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    print_header('The MacPorts Project -- Available Ports', 'utf-8');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-?>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<div id="content">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <h2 class="hdr">MacPorts Portfiles</h2>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <p>The MacPorts Project currently distributes <b><?php print $portsdb_info['num_ports']; ?></b> ports, organized across
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <?php print $portsdb_info['num_categories']; ?> different categories and available below for viewing. This form allows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    you to search the MacPorts software index, last updated on <?php print '<b>' . $date . '</b> at <b>' . $time . '</b>'; ?>.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    </p>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <br />
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <form action="<?php print $phpself; ?>" method="get">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        <p>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            <label for="by">Search by:</label>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            <select name="by" id="by">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                <option value="name"<?php if ($by == 'name') { print ' selected="selected"'; } ?>>Software Title</option>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                <option value="category"<?php if ($by == 'category') { print ' selected="selected"'; } ?>>Category</option>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                <option value="maintainer"<?php if ($by == 'maintainer') { print ' selected="selected"'; } ?>>Maintainer</option>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<!--                <option value="library"<?php if ($by == 'dependency') { print ' selected="selected"'; } ?>>Dependency</option> -->
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                <option value="variant"<?php if ($by == 'variant') { print ' selected="selected"'; } ?>>Variant</option>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                <option value="platform"<?php if ($by == 'platform') { print ' selected="selected"'; } ?>>Platform</option>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<!--                <option value="license"<?php if ($by == 'license') { print ' selected="selected"'; } ?>>License</option> -->
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            </select>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            <input type="text" name="substr" value="<?php print htmlspecialchars($substr); ?>" size="40" />
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            <input type="submit" value="Search" />
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        </p>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    </form>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <p>Or view the complete <a href="<?php print $phpself; ?>?by=all">ports list (<?php print $portsdb_info['num_ports']; ?>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ports)</a>.</p>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    <br />
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<?php
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* If no valid search criteria is specified (by set and not equal to all and a valid substring) we output port categories
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     as possible searches */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (!$by || ($by != 'all' && !$substr)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $query = "SELECT DISTINCT category FROM categories ORDER BY category";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $result = pg_query($query);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if ($result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $max_entries_per_column = floor($portsdb_info['num_categories']/4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $columns = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '<h3>Port Categories</h3><div id="categories"><ul>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            while ($columns < 4) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $entries_per_column = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '<li><ul>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                while ($row = pg_fetch_assoc($result)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print "<li><a href=\"$phpself?by=category&amp;substr=" . urlencode($row['category']) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    . htmlspecialchars($row['category']) . '</a></li>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if ($entries_per_column == $max_entries_per_column) break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    $entries_per_column++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '</ul></li>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $columns++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '</ul></div>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* If valid criteria is specified (by set and a valid substring, or by set to all) we poll the db and display the results */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($by && ($substr || $by == 'all')) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $fields = 'name, path, version, description';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $tables = "portfiles AS p";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        switch ($by) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'name':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            #TODO: was pg_escape_string. Current charset taken into account ?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "p.name ILIKE '%" . pg_escape_string($substr) . "%'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'category':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $tables .= ", categories AS c";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "c.portfile = p.name AND c.category ILIKE '" . pg_escape_string($substr) . "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'maintainer':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $tables .= ", maintainers AS m";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "m.portfile = p.name AND m.maintainer ILIKE '%" . pg_escape_string($substr) . "%'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'library':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "p.name = '" . pg_escape_string($substr) . "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'variant':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $tables .= ", variants AS v";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "v.portfile = p.name AND v.variant ILIKE '" . pg_escape_string($substr) . "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'platform':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $tables .= ", platforms AS pl";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "pl.portfile = p.name AND pl.platform ILIKE '" . pg_escape_string($substr) . "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'license':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $tables .= ", $portsdb_name.licenses AS lc";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = "lc.portfile = p.name AND lc.license ILIKE '" . pg_escape_string($substr) . "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        case 'all':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = '';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $criteria = 'FALSE';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $where = ($criteria == '' ? '' : "WHERE $criteria");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $query = "SELECT DISTINCT $fields FROM $tables $where ORDER BY name";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $result = pg_query($query);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        /* Main query sent to the DB */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if ($result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $paging = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            $numrows = pg_num_rows($result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if ($numrows > $pagesize) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $paging = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $pagecount = ceil($numrows / $pagesize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $page = min($page, $pagecount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $offset = $pagesize * ($page-1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $curpagesize = min($pagesize, $numrows - $offset);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # generate a paging control and cache it so we can show it twice
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $pagecontrol = "<p>Page ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                for ($i = 1; $i <= $pagecount; $i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if ($i != 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $pagecontrol .= " | ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if ($i == $page) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $pagecontrol .= "<b>$i</b>";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $pagecontrol .= "<a href=\"$phpself?by=$by&amp;substr=" . urlencode($substr) . "&amp;page=$i&amp;pagesize=$pagesize\">$i</a>";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $pagecontrol .= "</p>";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # seek the data pointer by fetching the row before the interesting one
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # FIXME: maybe should be offset - 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if($offset > 0){
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    pg_fetch_row($result, $offset);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '<h3>Query Results</h3>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if ($paging) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print $pagecontrol;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $numrowtext = ($offset+1) . "-" . ($offset + $curpagesize) . " of $numrows Portfile" . ($curpagesize == 1 ? '' : 's');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $numrowtext = "$numrows Portfile" . ($numrows == 1 ? '' : 's');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print "<p><i>$numrowtext Selected</i></p>";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '<dl>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            /* Iterate over the entire set of returned ports */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            for ($row = pg_fetch_assoc($result), $i = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 $row && (!$paging || $i < $curpagesize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 $row = pg_fetch_assoc($result), $i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Port name and Portfile URL */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '<dt><b>' . htmlspecialchars($row['name']) . '</b> ' . htmlspecialchars($row['version'])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                . ' <i>(<a href="' . htmlspecialchars($github_url . 'macports-ports/blob/master/' . $row['path'] . '/Portfile')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                . '">source</a>)</i></dt>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '<dd>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Port short description */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print htmlspecialchars($row['description']) . '<br />';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Licenses */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT license FROM licenses WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY license";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult && pg_num_rows($nresult) > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<i>Licenses:</i> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print "<a href=\"$phpself?by=license&amp;substr=" . urlencode($nrow[0]) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        . htmlspecialchars($nrow[0]) . '</a> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print "<br />";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Maintainers */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT maintainer FROM maintainers WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY is_primary DESC, maintainer";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    $primary = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<i>Maintained by:</i>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if ($primary) { print ' <b>'; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        else { print ' '; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print obfuscate_email($nrow[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if ($primary) { print '</b>'; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $primary = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Categories */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT category FROM categories WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY is_primary DESC, category";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    $primary = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<br /><i>Categories:</i>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if ($primary) { print ' <b>'; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        else { print ' '; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print "<a href=\"$phpself?by=category&amp;substr=" . urlencode($nrow[0]) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        . htmlspecialchars($nrow[0]) . '</a>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if ($primary) { print '</b>'; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $primary = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Platforms */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT platform FROM platforms WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY platform";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<br /><i>Platforms:</i> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print "<a href=\"$phpself?by=platform&amp;substr=" . urlencode($nrow[0]) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        . htmlspecialchars($nrow[0]) . '</a> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Dependencies */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT library FROM dependencies WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY library";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult && pg_num_rows($nresult) > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<br /><i>Dependencies:</i> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        $library = preg_replace('/^(?:[^:]*:){1,2}/', '', $nrow[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print "<a href=\"$phpself?by=library&amp;substr=" . urlencode($library) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        . htmlspecialchars($library) . '</a> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                /* Variants */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nquery = "SELECT variant FROM variants WHERE portfile='" . pg_escape_string($row['name']) .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "' ORDER BY variant";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                $nresult = pg_query($nquery);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ($nresult && pg_num_rows($nresult) > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    print '<br /><i>Variants:</i> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    while ($nrow = pg_fetch_row($nresult)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        print "<a href=\"$phpself?by=variant&amp;substr=" . urlencode($nrow[0]) . '">'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        . htmlspecialchars($nrow[0]) . '</a> ';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print '<br /><br /></dd>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            } /* while (listing of matching ports) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '</dl>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if ($paging) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                print $pagecontrol;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        /* When we hit this else, the query failed for some reason */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            print '<p>An Error Occurred: '. pg_last_error($portsdb_info['connection_handler']) . '</p>';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } /* if (main query sent to the DB) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-?>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-</div>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<?php
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    print_footer();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    pg_close($portsdb_info['connection_handler']);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-?>
</span></pre><pre style='margin:0'>

</pre>