Changeset 35214 for trunk/www


Ignore:
Timestamp:
Mar 21, 2008, 3:36:34 AM (12 years ago)
Author:
jmpp@…
Message:

Big commit but with no functional changes but one:

  • Finally eliminated all switching back and forth between markup and php mode for small things, use print statements instead from within php;
  • Eliminated all "" quoting in php mode, resorting to and append operations where appropriate;
  • Introduced some comments;
  • Fixed markup in case the search query sent to the db fails, the only functional change in this commit.

All this done in the hope processing of queries returning large result sets gets a little snappier.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/ports.php

    r35193 r35214  
    77   
    88    $MPWEB = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['SCRIPT_NAME']);
    9     include_once("$MPWEB/includes/common.inc");
     9    include_once($MPWEB . '/includes/common.inc');
    1010    print_header('The MacPorts Project -- Available Ports', 'utf-8');
    1111   
    1212    $portsdb_info = portsdb_connect($portsdb_host, $portsdb_user, $portsdb_passwd);
    13     $sql = "SELECT UNIX_TIMESTAMP(activity_time) FROM $portsdb_name.log ORDER BY UNIX_TIMESTAMP(activity_time) DESC";
     13    $sql = 'SELECT UNIX_TIMESTAMP(activity_time) FROM ' . $portsdb_name . '.log ORDER BY UNIX_TIMESTAMP(activity_time) DESC';
    1414    $result = mysql_query($sql);
    1515    if ($result && $row = mysql_fetch_row($result)) {
     
    3939            <label>Search by:</label>
    4040            <select name="by">
    41                 <option value="name"<?php if ($by == "name") { print " selected=\"selected\""; } ?>>Software Title</option>
    42                 <option value="category"<?php if ($by == "category") { print " selected=\"selected\""; } ?>>Category</option>
    43                 <option value="maintainer"<?php if ($by == "maintainer") { print " selected=\"selected\""; } ?>>Maintainer</option>
    44 <!--                <option value="library"<?php if ($by == "dependency") { print " selected=\"selected\""; } ?>>Dependency</option> -->
    45                 <option value="variant"<?php if ($by == "variant") { print " selected=\"selected\""; } ?>>Variant</option>
    46                 <option value="platform"<?php if ($by == "platform") { print " selected=\"selected\""; } ?>>Platform</option>
     41                <option value="name"<?php if ($by == 'name') { print ' selected="selected"'; } ?>>Software Title</option>
     42                <option value="category"<?php if ($by == 'category') { print ' selected="selected"'; } ?>>Category</option>
     43                <option value="maintainer"<?php if ($by == 'maintainer') { print ' selected="selected"'; } ?>>Maintainer</option>
     44<!--                <option value="library"<?php if ($by == 'dependency') { print ' selected="selected"'; } ?>>Dependency</option> -->
     45                <option value="variant"<?php if ($by == 'variant') { print ' selected="selected"'; } ?>>Variant</option>
     46                <option value="platform"<?php if ($by == 'platform') { print ' selected="selected"'; } ?>>Platform</option>
    4747            </select>
    4848            <input type="text" name="substr" size="40" />
     
    5656
    5757<?php
    58     if (!$by || (!$substr && $by != "all")) {
    59         $query = "SELECT DISTINCT category FROM $portsdb_name.categories ORDER BY category";
     58    /* If no valid search criteria is specified (by set and not equal to all and a valid substring) we output port categories
     59     as possible searches */
     60    if (!$by || ($by != 'all' && !$substr)) {
     61        $query = 'SELECT DISTINCT category FROM ' . $portsdb_name . '.categories ORDER BY category';
    6062        $result = mysql_query($query);
    6163        if ($result) {
    6264            $max_entries_per_column = floor($portsdb_info['num_categories']/4);
    6365            $columns = 0;
    64             print "<h3>Port Categories</h3>\n<div id=\"categories\">\n<ul>";
     66            print '<h3>Port Categories</h3><div id="categories"><ul>';
    6567            while ($columns < 4) {
    6668                $entries_per_colum = 0;
    67                 print "<li>\n<ul>\n";
     69                print '<li><ul>';
    6870                while ($row = mysql_fetch_assoc($result)) {
    6971                    print '<li><a href="' . $_SERVER['PHP_SELF'] . '?by=category&amp;substr=' . urlencode($row['category']) . '">'
     
    7274                    $entries_per_colum++;
    7375                }
    74                 print "</ul>\n</li>";
     76                print '</ul></li>';
    7577                $columns++;
    7678            }
    77             print "</ul>\n\n</div>";
     79            print '</ul></div>';
    7880        }
    7981    }
    8082
    81     if ($by && ($substr || $by == "all")) {
    82         $fields = "name, path, version, description";
    83         $tables = "$portsdb_name.portfiles AS p";
    84         if ($by == "name") {
    85             $criteria = "p.name LIKE '%" . mysql_real_escape_string($substr) . "%'";
    86         }
    87         if ($by == "category") {
    88             $tables .= ", $portsdb_name.categories AS c";
    89             $criteria = "c.portfile = p.name AND c.category = '" . mysql_real_escape_string($substr) . "'";
    90         }
    91         if ($by == "maintainer") {
    92             $tables .= ", $portsdb_name.maintainers AS m";
    93             $criteria = "m.portfile = p.name AND m.maintainer LIKE '%" . mysql_real_escape_string($substr) . "%'";
    94         }
    95         if ($by == "library") {
    96             $criteria = "p.name = '" . mysql_real_escape_string($substr) . "'";
    97         }
    98         if ($by == "variant") {
    99             $tables .= ", $portsdb_name.variants AS v";
    100             $criteria = "v.portfile = p.name AND v.variant = '" . mysql_real_escape_string($substr) . "'";
    101         }
    102         if ($by == "platform") {
    103             $tables .= ", $portsdb_name.platforms AS pl";
    104             $criteria = "pl.portfile = p.name AND pl.platform = '" . mysql_real_escape_string($substr) . "'";
    105         }
    106         if ($criteria == "") {
    107             $where = "";
     83    /* If valid criteria is specified (by set and a valid substring, or by set to all) we poll the db and display the results */
     84    if ($by && ($substr || $by == 'all')) {
     85        $fields = 'name, path, version, description';
     86        $tables = $portsdb_name . '.portfiles AS p';
     87        if ($by == 'name') {
     88            $criteria = 'p.name LIKE \'%' . mysql_real_escape_string($substr) . '%\'';
     89        }
     90        if ($by == 'category') {
     91            $tables .= ', ' . $portsdb_name . '.categories AS c';
     92            $criteria = 'c.portfile = p.name AND c.category = \'' . mysql_real_escape_string($substr) . '\'';
     93        }
     94        if ($by == 'maintainer') {
     95            $tables .= ', ' . $portsdb_name . '.maintainers AS m';
     96            $criteria = 'm.portfile = p.name AND m.maintainer LIKE \'%' . mysql_real_escape_string($substr) . '%\'';
     97        }
     98        if ($by == 'library') {
     99            $criteria = 'p.name = \'' . mysql_real_escape_string($substr) . '\'';
     100        }
     101        if ($by == 'variant') {
     102            $tables .= ', ' . $portsdb_name . '.variants AS v';
     103            $criteria = 'v.portfile = p.name AND v.variant = \'' . mysql_real_escape_string($substr) . '\'';
     104        }
     105        if ($by == 'platform') {
     106            $tables .= ', ' . $portsdb_name . '.platforms AS pl';
     107            $criteria = 'pl.portfile = p.name AND pl.platform = \'' . mysql_real_escape_string($substr) . '\'';
     108        }
     109        if ($criteria == '') {
     110            $where = '';
    108111        } else {
    109             $where = "WHERE $criteria";
    110         }
    111         $query = "SELECT DISTINCT $fields FROM $tables $where ORDER BY name";
     112            $where = 'WHERE ' . $criteria;
     113        }
     114        $query = 'SELECT DISTINCT ' . $fields . ' FROM ' . $tables . ' ' . $where . 'ORDER BY name';
    112115        $result = mysql_query($query);
     116       
     117        /* Main query sent to the DB */
    113118        if ($result) {
    114 ?>
    115             <h3>Query Results</h3>
    116 
    117             <p><i><?php print mysql_num_rows($result) . ' ' . (mysql_num_rows($result) == 1 ? 'Portfile' : 'Portfiles') .
    118             ' Selected'; ?></i></p>
    119 
    120             <dl>
    121 <?php
     119            print '<h3>Query Results</h3><p><i>' . mysql_num_rows($result) . ' ' . (mysql_num_rows($result) == 1 ? 'Portfile' : 'Portfiles')
     120            . ' Selected</i></p>';
     121
     122            print '<dl>';
     123            /* Iterate over the entire set of returned ports */
    122124            while ($row = mysql_fetch_assoc($result)) {
    123 ?>
    124                 <dt><b><a href="<?php print $trac_url . 'browser/trunk/dports/' . $row['path'] . '/Portfile'; ?>"><?php print
    125                 htmlspecialchars($row['name']); ?></a></b> <?php print htmlspecialchars($row['version']); ?></dt>
    126                 <dd>
    127                     <?php print htmlspecialchars($row['description']); ?>
    128                     <br />
    129 <?php
    130 /* MAINTAINERS */
    131                     $nquery = "SELECT maintainer FROM $portsdb_name.maintainers WHERE portfile='" . mysql_real_escape_string($row['name']) .
    132                     "' ORDER BY is_primary DESC, maintainer";
     125
     126                /* Port name and Portfile URL */
     127                print '<dt><b><a href="' . $trac_url . 'browser/trunk/dports/' . $row['path'] . '/Portfile">' . htmlspecialchars($row['name'])
     128                . '</a></b> ' . htmlspecialchars($row['version']) . '</dt>';
     129               
     130                print '<dd>';
     131                /* Port short description */
     132                print htmlspecialchars($row['description']) . '<br />';
     133               
     134                /* Maintainers */
     135                $nquery = 'SELECT maintainer FROM ' . $portsdb_name . '.maintainers WHERE portfile=\'' . mysql_real_escape_string($row['name']) .
     136                    '\' ORDER BY is_primary DESC, maintainer';
    133137                    $nresult = mysql_query($nquery);
    134138                    if ($nresult) {
    135 ?>
    136                         <i>Maintained by:</i>
    137 <?php
    138139                        $primary = 1;
    139                         while ($nrow = mysql_fetch_array($nresult)) {
    140                             if ($primary) { print "<b>"; }
    141                             else { print " "; }
    142                             $addr = obfuscate_email($nrow[0]);
    143                             print $addr;
    144                             if ($primary) { print "</b>"; }
     140                        print '<i>Maintained by:</i>';
     141                        while ($nrow = mysql_fetch_array($nresult)) {
     142                            if ($primary) { print ' <b>'; }
     143                            else { print ' '; }
     144                            print obfuscate_email($nrow[0]);;
     145                            if ($primary) { print '</b>'; }
    145146                            $primary = 0;
    146147                        }
    147148                    }
    148149
    149 /* CATEGORIES */
    150                     $nquery = "SELECT category FROM $portsdb_name.categories WHERE portfile='" . mysql_real_escape_string($row['name']) .
    151                     "' ORDER BY is_primary DESC, category";
     150                    /* Categories */
     151                    $nquery = 'SELECT category FROM ' . $portsdb_name . '.categories WHERE portfile=\'' . mysql_real_escape_string($row['name']) .
     152                    '\' ORDER BY is_primary DESC, category';
    152153                    $nresult = mysql_query($nquery);
    153154                    if ($nresult) {
    154 ?>
    155                         <br />
    156                         <i>Categories:</i>
    157 <?php
    158155                        $primary = 1;
     156                        print '<br /><i>Categories:</i>';
    159157                        while ($nrow = mysql_fetch_assoc($nresult)) {
    160                             if ($primary) { print "<b>"; }
    161 ?>
    162                             <a href="<?php print $_SERVER['PHP_SELF']; ?>?by=category&amp;substr=<?php print urlencode($nrow['category']); ?>">
    163                             <?php print htmlspecialchars($nrow['category']); ?></a>
    164 <?php
    165                             if ($primary) { print "</b>"; }
     158                            if ($primary) { print ' <b>'; }
     159                            else { print ' '; }
     160                            print '<a href="' . $_SERVER['PHP_SELF'] . '?by=category&amp;substr=' . urlencode($nrow['category']) . '">'
     161                            . htmlspecialchars($nrow['category']) . '</a>';
     162                            if ($primary) { print '</b>'; }
    166163                            $primary = 0;
    167164                        }
    168165                    }
    169166
    170 /* PLATFORMS */
    171                     $nquery = "SELECT platform FROM $portsdb_name.platforms WHERE portfile='" . mysql_real_escape_string($row['name']) .
    172                     "' ORDER BY platform";
     167                    /* Platforms */
     168                    $nquery = 'SELECT platform FROM ' . $portsdb_name . '.platforms WHERE portfile=\'' . mysql_real_escape_string($row['name']) .
     169                    '\' ORDER BY platform';
    173170                    $nresult = mysql_query($nquery);
    174171                    if ($nresult && mysql_num_rows($nresult) > 0) {
    175 ?>
    176                         <br />
    177                         <i>Platforms:</i>
    178 <?php
    179                         while ($nrow = mysql_fetch_array($nresult)) {
    180                             $platform = $nrow[0];
    181 ?>
    182                             <a href="<?php print $_SERVER['PHP_SELF']; ?>?by=platform&amp;substr=<?php print urlencode($platform); ?>">
    183                             <?php print htmlspecialchars($platform); ?></a>
    184 <?php
    185                         }
    186                     }
    187 
    188 /* DEPENDENCIES */
    189                     $nquery = "SELECT library FROM $portsdb_name.dependencies WHERE portfile='" . mysql_real_escape_string($row['name']) .
    190                     "' ORDER BY library";
     172                        print '<br /><i>Platforms:</i> ';
     173                        while ($nrow = mysql_fetch_array($nresult)) {
     174                            print '<a href="' . $_SERVER['PHP_SELF'] . '?by=platform&amp;substr=' . urlencode($nrow[0]) . '">'
     175                            . htmlspecialchars($nrow[0]) . '</a> ';
     176                        }
     177                    }
     178
     179                    /* Dependencies */
     180                    $nquery = 'SELECT library FROM ' . $portsdb_name . '.dependencies WHERE portfile=\'' . mysql_real_escape_string($row['name']) .
     181                    '\' ORDER BY library';
    191182                    $nresult = mysql_query($nquery);
    192183                    if ($nresult && mysql_num_rows($nresult) > 0) {
    193 ?>
    194                         <br />
    195                         <i>Dependencies:</i>
    196 <?php
     184                        print '<br /><i>Dependencies:</i> ';
    197185                        while ($nrow = mysql_fetch_array($nresult)) {
    198186                            // lib:libpng.3:libpng -> libpng
    199187                            // might need adapting to the new port: depspec
    200                             $library = eregi_replace("^([^:]*:[^:]*:|[^:]*:)", "", $nrow[0]);
    201 ?>
    202                             <a href="<?php print $_SERVER['PHP_SELF']; ?>?by=library&amp;substr=<?php print urlencode($library); ?>">
    203                             <?php print htmlspecialchars($library); ?></a>
    204 <?php
    205                         }
    206                     }
    207 
    208 /* VARIANTS */
    209                     $nquery = "SELECT variant FROM $portsdb_name.variants WHERE portfile='" . mysql_real_escape_string($row['name']) .
    210                     "' ORDER BY variant";
     188                            $library = eregi_replace('^([^:]*:[^:]*:|[^:]*:)', '', $nrow[0]);
     189                            print '<a href="' . $_SERVER['PHP_SELF'] . '?by=library&amp;substr=' . urlencode($library) . '">'
     190                            . htmlspecialchars($library) . '</a> ';
     191                        }
     192                    }
     193
     194                    /* Variants */
     195                    $nquery = 'SELECT variant FROM ' . $portsdb_name . '.variants WHERE portfile=\'' . mysql_real_escape_string($row['name']) .
     196                    '\' ORDER BY variant';
    211197                    $nresult = mysql_query($nquery);
    212198                    if ($nresult && mysql_num_rows($nresult) > 0) {
    213 ?>
    214                         <br />
    215                         <i>Variants:</i>
    216 <?php
    217                         while ($nrow = mysql_fetch_array($nresult)) {
    218                             $variant = $nrow[0];
    219 ?>
    220                             <a href="<?php print $_SERVER['PHP_SELF']; ?>?by=variant&amp;substr=<?php print urlencode($variant); ?>">
    221                             <?php print htmlspecialchars($variant); ?></a>
    222 <?php
    223                         }
    224                     }
    225 ?>
    226                     <br />
    227                     <br />
    228                 </dd>
    229 
    230 <?php
    231             }
    232 
     199                        print '<br /><i>Variants:</i> ';
     200                        while ($nrow = mysql_fetch_array($nresult)) {
     201                            print '<a href="' . $_SERVER['PHP_SELF'] . '?by=variant&amp;substr=' . urlencode($nrow[0]) . '">'
     202                            . htmlspecialchars($nrow[0]) . '</a> ';
     203                        }
     204                    }
     205                    print '<br /><br /></dd>';
     206               
     207            } /* while (listing of macthing ports) */
     208            print '</dl>';
     209
     210        /* When we hit this else, the query failed for some reason */
    233211        } else {
    234212            print '<p>An Error Occurred: '. mysql_error($portsdb_info['connection_handler']) . '</p>';
    235213        }
    236 ?>
    237         </dl>
    238 
    239 <?php
    240     }
     214       
     215    } /* if (main query sent to the DB) */
    241216?>
    242217
Note: See TracChangeset for help on using the changeset viewer.