source: trunk/www/ports.php @ 29367

Last change on this file since 29367 was 29011, checked in by jmpp@…, 13 years ago

Rework the URL abstraction variables and extend their usage to the remaining pages.
Also correct some href's to reflect the flat directory layout we now have for all
our pages (that is, no more hardcoded 'macports' dir).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-php
File size: 9.0 KB
Line 
1<?php
2    /* $Id: ports.php 29011 2007-09-13 05:41:18Z jmpp@macports.org $ */
3    $MPWEB = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['SCRIPT_NAME']);
4    include_once("$MPWEB/includes/common.inc");
5    include_once("$MPWEB/includes/email.inc");
6    print_header('MacPorts -- Available Ports', 'utf-8');
7    $by = isset($_GET['by']) ? $_GET['by'] : '';
8    $substr = isset($_GET['substr']) ? $_GET['substr'] : '';
9?>
10
11<div id="content">
12    <h2>MacPorts Portfiles</h2>
13
14    <p>
15        This form allows you to search the current index of MacPorts software. <br />
16        <i>Index last updated: </i>
17<?php
18        $sql = "SELECT UNIX_TIMESTAMP(activity_time) FROM $portsdb.log ORDER BY UNIX_TIMESTAMP(activity_time) DESC";
19        $result = mysql_query($sql);
20        if ($result && $row = mysql_fetch_row($result)) {
21            echo date("d-M-Y H:i:s", $row[0]);
22        }
23?>
24    </p>
25       
26    <form action="<?php echo $_SERVER['PHP_SELF']; ?>">
27        <table>
28            <tr>
29                <th>Search by:</th>
30                <td>
31                    <select name="by">
32                        <option value="name"<?php if ($by == "name") { echo " selected=\"selected\""; } ?>>Software Title</option>
33                        <option value="desc"<?php if ($by == "desc") { echo " selected=\"selected\""; } ?>>Description</option>
34                        <option value="cat"<?php if ($by == "cat") { echo " selected=\"selected\""; } ?>>Category</option>
35                        <option value="maintainer"<?php if ($by == "maintainer") { echo " selected=\"selected\""; } ?>>Maintainer</option>
36                    </select>
37                </td>
38                <td><input type="text" name="substr" size="40" /></td>
39                <td><input type="submit" value="Search" /></td>
40            </tr>
41            <tr><td colspan="4"><hr /></td></tr>
42            <tr>
43<?php
44                $result = mysql_query("SELECT count(*) from $portsdb.portfiles");
45                if ($result) {
46                    $row = mysql_fetch_array($result);
47                    $count = $row[0];
48                } else {
49                    $count = 0;
50                }
51?>
52                <td colspan="4" align="left"><a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=all">View All Software Titles (<?php echo $count; ?>)</a></td>
53            </tr>
54<?php
55            if (!$by || (!$substr && $by != "all")) {
56?>
57                <tr><td colspan="4"><hr /></td></tr>
58                <tr><th colspan="4" align="left">View By Category:</th></tr>
59<?php
60                $query = "SELECT DISTINCT category FROM $portsdb.categories ORDER BY category";
61                $result = mysql_query($query);
62                if ($result) {
63                    while ($row = mysql_fetch_assoc($result)) {
64?>
65                        <tr><td colspan="4"><a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=cat&amp;substr=<?php echo urlencode($row['category']); ?>"><?php echo htmlspecialchars($row['category']); ?></a></td></tr>
66<?php
67                    }
68                }
69            }
70?>
71        </table>
72    </form>
73
74<?php
75    if ($by && ($substr || $by == "all")) {
76        $fields = "name, path, version, description";
77        $query = "1";
78        $tables = "$portsdb.portfiles p";
79        if ($by == "name") {
80            $query .= " AND p.name LIKE '%" . mysql_real_escape_string($substr) . "%'";
81        }
82        if ($by == "library") {
83            $query .= " AND p.name='" . mysql_real_escape_string($substr) . "'";
84        }
85        if ($by == "desc") {
86            $query .= " AND p.description LIKE '%" . mysql_real_escape_string($substr) . "%'";
87        }
88        if ($by == "cat") {
89            $tables .= ", $portsdb.categories c";
90            $query .= " AND c.portfile=p.name AND c.category='" . mysql_real_escape_string($substr) . "'";
91        }
92        if ($by == "variant") {
93            $tables .= ", $portsdb.variants v";
94            $query .= " AND v.portfile=p.name AND v.variant='" . mysql_real_escape_string($substr) . "'";
95        }
96        if ($by == "platform") {
97            $tables .= ", $portsdb.platforms pl";
98            $query .= " AND pl.portfile=p.name AND pl.platform ='" . mysql_real_escape_string($substr) . "'";
99        }
100        if ($by == "maintainer") {
101            $tables .= ", $portsdb.maintainers m";
102            $query .= " AND m.portfile=p.name AND m.maintainer LIKE '%" . mysql_real_escape_string($substr) . "%'";
103        }
104        $query = "SELECT DISTINCT $fields FROM $tables WHERE $query ORDER BY name";
105        $result = mysql_query($query);
106        if($result) {
107?>
108            <p>
109                <i><?php echo mysql_num_rows($result) . ' ' . (mysql_num_rows($result) == 1 ? 'Portfile' : 'Portfiles') . ' Selected'; ?></i>
110            </p>
111            <dl>
112<?php
113            while ($row = mysql_fetch_assoc($result)) {
114?>
115                <dt><b><a href="<?php print $trac_url . 'browser/trunk/dports/' . $row['path'] . '/Portfile'; ?>"><?php echo htmlspecialchars($row['name']); ?></a></b> <?php echo htmlspecialchars($row['version']); ?></dt>
116                <dd>
117                    <?php echo htmlspecialchars($row['description']); ?><br />
118<?php
119// MAINTAINERS
120                    $nquery = "SELECT maintainer FROM $portsdb.maintainers WHERE portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY is_primary DESC, maintainer";
121                    $nresult = mysql_query($nquery);
122                    if ($nresult) {
123?>
124                        <i>Maintained by:</i>
125<?php
126                        $primary = 1;
127                        while ($nrow = mysql_fetch_array($nresult)) {
128                            if ($primary) { echo "<b>"; }
129                            $addr = obfuscate_email($nrow[0]);
130                            print $addr;
131                            if ($primary) { echo "</b>"; }
132                            $primary = 0;
133                        }
134                    }
135
136// CATEGORIES
137                    $nquery = "SELECT category FROM $portsdb.categories WHERE portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY is_primary DESC, category";
138                    $nresult = mysql_query($nquery);
139                    if ($nresult) {
140?>
141                        <br />
142                        <i>Categories:</i>
143<?php
144                        $primary = 1;
145                        while ($nrow = mysql_fetch_assoc($nresult)) {
146                            if ($primary) { echo "<b>"; }
147?>
148                            <a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=cat&amp;substr=<?php echo urlencode($nrow['category']); ?>"><?php echo htmlspecialchars($nrow['category']); ?></a>
149<?php
150                            if ($primary) { echo "</b>"; }
151                            $primary = 0;
152                        }
153                    }
154
155// PLATFORMS
156                    $nquery = "SELECT platform FROM $portsdb.platforms WHERE portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY platform";
157                    $nresult = mysql_query($nquery);
158                    if ($nresult && mysql_num_rows($nresult) > 0) {
159?>
160                        <br />
161                        <i>Platforms:</i>
162<?php
163                        while ($nrow = mysql_fetch_array($nresult)) {
164                            $platform = $nrow[0];
165?>
166                            <a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=platform&amp;substr=<?php echo urlencode($platform); ?>"><?php echo htmlspecialchars($platform); ?></a>
167<?php
168                        }
169                    }
170
171// DEPENDENCIES
172                    $nquery = "SELECT library FROM $portsdb.dependencies WHERE portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY library";
173                    $nresult = mysql_query($nquery);
174                    if ($nresult && mysql_num_rows($nresult) > 0) {
175?>
176                        <br />
177                        <i>Dependencies:</i>
178<?php
179                        while ($nrow = mysql_fetch_array($nresult)) {
180                            // lib:libpng.3:libpng -> libpng
181                            $library = eregi_replace("^([^:]*:[^:]*:|[^:]*:)", "", $nrow[0]);
182?>
183                            <a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=library&amp;substr=<?php echo urlencode($library); ?>"><?php echo htmlspecialchars($library); ?></a>
184<?php
185                        }
186                    }
187/*
188// VARIANTS
189                    $nquery = "SELECT variant FROM $portsdb.variants WHERE portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY variant";
190                    $nresult = mysql_query($nquery);
191                    if ($nresult && mysql_num_rows($nresult) > 0) {
192?>
193                        <br />
194                        <i>Variants:</i>
195<?php
196                        while ($nrow = mysql_fetch_array($nresult)) {
197                            $variant = $nrow[0];
198?>
199                            <a href="<?php echo $_SERVER['PHP_SELF']; ?>?by=variant&amp;substr=<?php echo urlencode($variant); ?>"><?php echo htmlspecialchars($variant); ?></a>
200<?php
201                        }
202                    }
203*/
204?>
205                    <br />
206                </dd>
207<?php
208            }
209        } else {
210            echo "An Error Occurred. (501)";
211        }
212?>
213    </dl>
214<?php
215    }
216?>
217</div>
218
219<?php
220    print_footer();
221?>
Note: See TracBrowser for help on using the repository browser.