Update of /cvsroot/fink/web/pdb
In directory sc8-pr-cvs17:/tmp/cvs-serv11975

Modified Files:
        browse.php header.inc index.php list.php maintainer.php 
        nomaintainer.php package.php search.php section.php 
        sections.php testing.php 
Removed Files:
        help.php 
Log Message:
put it all back the way it was for now

Index: section.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/section.php,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- section.php 10 Sep 2007 18:56:35 -0000      1.13
+++ section.php 10 Sep 2007 19:37:21 -0000      1.14
@@ -1,24 +1,73 @@
-<?php
-$title = "Package Database - Obsolete page";
+<?
+$title = "Package Database - Section ";
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-/* check path info */
-$PATH_INFO = $HTTP_SERVER_VARS["PATH_INFO"];
-if (ereg("^/([a-zA-Z0-9_.+-]+)$", $PATH_INFO, $r)) {
-       $section = $r[1];
-} elseif (ereg("^/([a-zA-Z0-9_.+-]+/[a-zA-Z0-9_.+-]+)$", $PATH_INFO, $r)) {
-       $section = $r[1];
-}
+$uses_pathinfo = 1;
+include "header.inc";
+$section = $pispec;
+?>
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php";
+<?
+if ($section == "-") {
+?>
+<p><b>No section specified.</b></p>
+<?
+} else { /* if (no section) */
+?>
 
-if (isset($section)) {
-       $location .= "?section=" . $section;
+<h1>Archive Section <? print $section ?></h1>
+
+<?
+/* Add some special case bundle splitoffs */   
+if($section == "games")
+{
+  $sectionquery = " (section='$section' OR parentname REGEXP 
'kdegames3|kdetoys3') ";
+} else if($section == "graphics")
+{      
+  $sectionquery = " (section='$section' OR parentname='kdegraphics3') ";
+} else if($section == "sound")
+{      
+  $sectionquery = " (section='$section' OR parentname='kdemultimedia3') ";
+} else if($section == "utils")
+{      
+  $sectionquery = " (section='$section' OR parentname='kdeutils3') ".
+                                 " AND (parentname IS NULL OR parentname != 
'webmin') ";
+} else
+$sectionquery = " section='$section' ";
+
+$q = "SELECT name,descshort FROM package WHERE ". $sectionquery .
+        " AND !(name REGEXP '.*-(dev|shlibs|bin|common|doc)$') ".
+     "AND latest=1 ORDER BY name ASC";
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
+} else {
+  $count = mysql_num_rows($rs);
+
+?>
+
+<p>Found <? print $count ?> packages in section <? print $section ?>:</p>
+
+<ul>
+<?
+  while ($row = mysql_fetch_array($rs)) {
+    $desc = " - ".$row[descshort];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a 
href="'.$pdbroot.'package.php/'.$row[name].'">'.$row[name].'</a>'.$desc."</li>\n";
+  }
+?>
+</ul>
+<?
 }
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://$server/$location";);
+} /* if (no section) */
+?>
 
+<p><a href="<? print $pdbroot ?>sections.php">Back to section list</a></p>
+
+
+<?
+include "footer.inc";
 ?>

Index: list.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/list.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- list.php    10 Sep 2007 18:56:34 -0000      1.9
+++ list.php    10 Sep 2007 19:37:21 -0000      1.10
@@ -1,12 +1,47 @@
-<?php
-$title = "Package Database - Obsolete page";
+<?
+$title = "Package Database";
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php";
+include "header.inc";
+?>
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://$server/$location";);
 
+<h1>All Packages By Name</h1>
+
+<p>
+This is a complete list of the packages in the Fink package database.
+Note that it lists all packages, including the unstable tree and
+the latest <a 
href="http://fink.sourceforge.net/doc/cvsaccess/index.php";>packages from
+CVS</a>.
+</p>
+
+<?
+$q = "SELECT name,descshort FROM package ".
+     "WHERE latest=1 ORDER BY name ASC";
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
+} else {
+  $count = mysql_num_rows($rs);
+?>
+
+<p>Found <? print $count ?> packages:</p>
+
+<ul>
+<?
+  while ($row = mysql_fetch_array($rs)) {
+    $desc = " - ".$row[descshort];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a 
href="package.php/'.$row[name].'">'.$row[name].'</a>'.$desc."</li>\n";
+  }
+?>
+</ul>
+<?
+}
+?>
+
+<?
+include "footer.inc";
 ?>

Index: search.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/search.php,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- search.php  10 Sep 2007 18:56:35 -0000      1.12
+++ search.php  10 Sep 2007 19:37:21 -0000      1.13
@@ -1,17 +1,144 @@
-<?php
-$title = "Package Database - Obsolete page";
+<?
+$title = "Package Database - Contents Search";
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php";
+include "header.inc";
 
-if (isset($_GET['summary'])) {
-       $summary = htmlspecialchars($_GET['summary']);
-       $location .= "?summary=" . $summary;
+$summary = ereg_replace(" ", "", param(summary));
+$filename = ereg_replace(" ", "", param(filename));
+
+if (ereg("[^a-zA-Z0-9_.+-]", $summary) || ereg("[^a-zA-Z0-9_.+-]", $filename)) 
{
+print "yes\n";
+?>
+       <h1>Package Search</h1>
+       
+       <form action="search.php" method="GET">
+       <p>Search package summaries: <input type="text" name="summary" 
size="15" value="<?
+       print $summary ?>">
+       </p>
+
+<?
+if (param(c))
+{
+?>
+       <p>Search package contents: <input type="text" name="filename" 
size="15" value="<?
+       print $filename ?>">
+       <input type="submit" value="Search">
+       </p>
+<?
 }
+?>
+</form>
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://"; . $server . "/" . $location);
+<p>You have entered a search text that contains invalid characters.</p>
 
+<?
+} else {  /* $search_key valid */
+?>
+
+       <h1>Package Search</h1>
+       
+       <form action="search.php" method="GET">
+       <p>Search package summaries: <input type="text" name="summary" 
size="15" value="<?
+       print $summary ?>">
+       </p>
+
+<?
+if (param(c))
+{
+?>
+       <p>Search package contents: <input type="text" name="filename" 
size="15" value="<?
+       print $filename ?>">
+       <input type=checkbox name=ignoredirs>Ignore Dirs
+       <input type="submit" value="Search">
+       </p>
+<?
+}
+?>
+
+</form>
+
+<?
+
+if(param(order)) {
+       $sortorder = param(order);
+       print "order $sortorder ";
+} else {
+       if(param(filename)) 
+               $sortorder = "filename";
+       else if (param(summary))
+               $sortorder = "name";
+}
+
+if (param(filename)) {
+
+  if(param(ignoredirs)){
+       $directories = " AND fileperms REGEXP '^[^d]' ";
+  }
+  $dosearch = 1;
+  $q = "SELECT 
filename,filepath,fileperms,filesize,pkghash,version,contentspackages.package,contentspackages.release
 ".
+               "FROM contents,contentspackages ".
+          "WHERE contents.file_id=contentspackages.file_id ".
+       "AND filename LIKE '%$filename%' ". $directories .
+       "ORDER BY $sortorder";
+          # ASC LIMIT 0,50";       
+} else if (param(summary)) {
+  $dosearch = 1;
+  $q = "SELECT name,descshort FROM package ".
+       "WHERE (name LIKE '%$summary%' OR descshort LIKE '%$summary%') ".
+       "AND latest=1 ORDER BY $sortorder ASC";
+} 
+
+if($dosearch) {
+
+  $rs = mysql_query($q, $dbh);
+  if (!$rs) {
+    print '<p><b>error during query:</b> '.mysql_error().'</p>';
+  } else {
+    $count = mysql_num_rows($rs);
+               param(summary) ? $search_key = param(summary) : $search_key = 
param(filename);
+    if ($count == 0) {
+           print "<p>Found no packages that match $search_key.</p>";
+    } elseif ($count == 1) {
+               print "<p>Found 1 package that matches $search_key:</p>";
+    } else {
+               print "<p>Found $count packages that match $search_key:</p>";
+    }
+    if ($count > 0) {
+               if(param(filename)) {
+                       print 'Sort: <a 
href="'.$pdbroot."search.php?filename=$filename&summary=$summary&order=package\">Package</a>
 - ";
+                       print '<a 
href="'.$pdbroot."search.php?filename=$filename&summary=$summary&order=filepath,filename\">Filename</a>";
+               } else {
+                       print 'Sort: <a 
href="'.$pdbroot."search.php?filename=$filename&summary=$summary&order=name\">Package</a>
 - ";
+                       print '<a 
href="'.$pdbroot."search.php?filename=$filename&summary=$summary&order=descshort\">Summary</a>";
+               }
+               
+         print "<ul>";   while ($row = mysql_fetch_array($rs)) {
+               $row["name"] ? $name = $row["name"] : $name = $row["package"];
+               $vers = $row["version"];
+               $tree = $row["release"];
+        $row[descshort] ? $desc = " - $row[descshort]" : $desc = " - $vers - 
$row[filepath]";
+               if(! param(summary)) {
+               print '<li><a 
href="'.$pdbroot."packagedetails.php?tree=$tree&pkg=$name&version=$vers\">".$name.'</a>'.$desc."</li>\n";
+        } else {
+               print '<li><a 
href="'.$pdbroot."package.php/$name\">".$name.'</a>'.$desc."</li>\n";
+           }
+      }
+       print "</ul>\n";
+    }
+  }
+} elseif ($have_key) {
+       print "<p>No search string entered.</p>\n";
+}
+
+
+}  /* $search_key valid */
+?>
+
+<script type="text/javascript" language="JavaScript" 
src="http://db3.net-filter.com/script/13500.js";></script>
+<noscript><img 
src="http://db3.net-filter.com/db.php?id=13500&amp;page=unknown"; 
alt=""></noscript>
+
+<?
+include "footer.inc";
 ?>

Index: index.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/index.php,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- index.php   10 Sep 2007 18:56:34 -0000      1.23
+++ index.php   10 Sep 2007 19:37:21 -0000      1.24
@@ -23,17 +23,17 @@
 "unstable" because they are not well-tested.
 You can help improve the situation by testing those packages and
 reporting both success and failure to the package maintainer.
-The <a href="browse.php?tree=testing&nochildren=on">Packages in Testing</a> 
page lists all
+The <a href="testing.php">Packages in Testing</a> page lists all
 packages that still have to pass testing.
 In order to test the packages, you need to configure Fink to <a 
href="http://fink.sourceforge.net/faq/usage-fink.php#unstable";>use
 unstable</a> and then download the latest descriptions by running <i>fink 
selfupdate-rsync</i> 
 (or <i>fink selfupdate-cvs</i> if you can't use rsync for some reason).
 </p>
 <p>Help is also needed to find new maintainers for the <a
-href="browse.php?maintainer=None&nochildren=on">packages without 
maintainers</a>.</p>
+href="nomaintainer.php">packages without maintainers</a>.</p>
 
 <?
-$q = "SELECT COUNT(DISTINCT name) FROM package";
+$q = "SELECT COUNT(name) FROM package WHERE latest=1";
 $rs = mysql_query($q, $dbh);
 if (!$rs) {
   print '<p><b>error during query:</b> '.mysql_error().'</p>';
@@ -43,16 +43,6 @@
   $pkgcount = $pkgcount[0];
 }
 
-$q = "SELECT MAX(UNIX_TIMESTAMP(infofilechanged)) FROM package";
-$rs = mysql_query($q, $dbh);
-if (!$rs) {
-  print '<p><b>error during query:</b> '.mysql_error().'</p>';
-  $dyndate = '';
-} else {
-  $dyndate = mysql_fetch_array($rs);
-  $dyndate = $dyndate[0];
-}
-
 $q = "SELECT * FROM sections ORDER BY name ASC";
 $rs = mysql_query($q, $dbh);
 if (!$rs) {
@@ -67,21 +57,21 @@
 <? print $pkgcount ?> packages in <? print $seccount ?> sections.
 </p>
 
-<form action="browse.php" method="GET">
+<form action="search.php" method="GET">
 <p>Search for package: <input type="text" name="summary" size="15" value="">
 <input type="submit" value="Search">
 </p>
 </form>
 
 <p>
-You can browse a <a href="browse.php">complete list of packages</a>,
+You can browse a <a href="list.php">complete list of packages</a>,
 or you can browse by archive section:
 </p>
 
 <ul>
 <?
   while ($row = mysql_fetch_array($rs)) {
-    print '<li><a href="browse.php?section='.$row[name].'">'.$row[name].'</a>'.
+    print '<li><a href="section.php/'.$row[name].'">'.$row[name].'</a>'.
       ($row[description] ? (' - '.$row[description]) : '').
       '</li>'."\n";
   }

Index: package.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/package.php,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- package.php 10 Sep 2007 18:56:35 -0000      1.46
+++ package.php 10 Sep 2007 19:37:21 -0000      1.47
@@ -6,6 +6,8 @@
 $uses_pathinfo = 1;
 include "header.inc";
 $package = $pispec;
+
+include "releases.inc";
 ?>
 
 
@@ -15,148 +17,48 @@
 <p><b>No package specified.</b></p>
 <?
 } else { /* if (no package) */
+?>
 
+<h1>Package <? print $package ?></h1>
 
-// Get url parameters
-list($version, $inv_p) = get_safe_param('version', '/^[0-9\-.:]+$/');
-list($distribution, $inv_p) = get_safe_param('distribution', 
'/^[a-z0-9\-.]+$/');
-list($release, $inv_p) = get_safe_param('release', 
'/^[0-9.]{3,}$|^unstable$|^stable$/');
-list($architecture, $inv_p) = get_safe_param('architecture', 
'/^powerpc$|^i386$/');
-list($rel_id, $inv_p) = get_safe_param('rel_id', '/^[0-9]+$/');
-list($showall, $inv_p) = get_safe_param('showall', '/^on$/');
-
-// TODO/FIXME: Do we really need all the params above? On the other hand --
-// if the user clicks on a specific package version, shouldn't we select
-// that version via the *pkg_id* ?
-// In particular, it seems rather ugly to search the DB with a concat...
-// A reason to keep those params would be to allow looking at a specific 
-// package version w/o knowing a pkg_id. But when would we ever be in such
-// a situation? I.e. is there *anything* that would need to do that?
-
-
-// Get package data to display (use for version-nonspecific pkg metadata)
-$qtodisplay_sel = "SELECT p.*,r.*,d.*,p.version AS pkg_version ";
-$qtodisplay_sel .= "FROM `package` AS p ";
-$qtodisplay_sel .= "INNER JOIN `release` r ON r.rel_id = p.rel_id ";
-$qtodisplay_sel .= "INNER JOIN `distribution` d ON r.dist_id = d.dist_id ";
-if (!$showall)
-  $qtodisplay_sel .= "AND d.visible='1' ";
-
-$qtodisplay_where .= "WHERE p.name='$package' ";
-if ($version) {
-  if (strrpos($version, ':'))
-    $qtodisplay_where .= "AND 
CONCAT(p.epoch,':',p.version,'-',p.revision)='$version' ";
-  else
-    $qtodisplay_where .= "AND CONCAT(p.version,'-',p.revision)='$version' ";
-}
-if ($rel_id) {
-  $qtodisplay_where .= "AND r.rel_id='$rel_id' ";
-} else { // no need to parse the other parameters
-  if ($distribution) {
-    $qtodisplay_where .= "AND d.identifier='$distribution' ";
-  }
-  if ($release) {
-    if ($release == 'unstable' || $release == 'stable') {
-      $qtodisplay_where .= "AND r.type='$release' ";
-    } else {
-      $qtodisplay_where .= "AND r.version='$release' ";
-    }
-  }
-  if ($architecture) {
-    $qtodisplay_where .= "AND d.architecture='$architecture' ";
-  }
-}
+<?
 
-$qtodisplay_order .= "ORDER BY d.priority DESC,r.priority DESC";
-$qtodisplay = $qtodisplay_sel.$qtodisplay_where.$qtodisplay_order;
-$qs = mysql_query($qtodisplay, $dbh);
-if (!$qs) {
+$q = "SELECT * FROM package WHERE name='$package' ORDER BY latest DESC";
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
   print '<p><b>error during query:</b> '.mysql_error().'</p>';
 } else {
-  $pkg2disp = mysql_fetch_array($qs);
-}
+  $row = mysql_fetch_array($rs);
+  $rmap = array();
+  while ($row) {
+    if($row[epoch] > 0)
+               $epoch = "$row[epoch]:";
+       else 
+               $epoch = "";
+       $rmap[$row[release]] = $epoch.$row[version]."-".$row[revision];
+    
+    $row = mysql_fetch_array($rs);
+  }
 
-$warning = '';
-if (!$pkg2disp) { # No specific version found, try latest
-  $qtodisplay = $qtodisplay_sel."WHERE p.name='$package' ".$qtodisplay_order;
-  $qs = mysql_query($qtodisplay, $dbh);
+  // Get latest version data (use for version-nonspecific pkg metadata)
+  $qlatest = "SELECT * FROM package WHERE name='$package' AND latest=1";
+  $qs = mysql_query($qlatest, $dbh);
   if (!$qs) {
     print '<p><b>error during query:</b> '.mysql_error().'</p>';
   } else {
-    $pkg2disp = mysql_fetch_array($qs);
+    $latest = mysql_fetch_array($qs);
   }
-  $warning = "<b>Warning: Package $package $version not found";
-  $warning .= $distribution ? " in distribution $distribution" : '';
-  $warning .= $architecture ? "-$architecture" : '';
-  $warning .= $release ? "-$release" : '';
-  $warning .= $rel_id ? " for selected release" : '';
-  $warning .= "!</b>";
-}
-
-if (!$pkg2disp) { # No package found
-?>
-<p><b>Package '<?=$package?>' not found in Fink!</b></p>
-<?
-} else { /* if (no package found) */
-
-if ($pkg2disp["epoch"] > 0) {
-  $fullversion = 
$pkg2disp["epoch"].':'.$pkg2disp["pkg_version"]."-".$pkg2disp["revision"];
-} else {
-  $fullversion = $pkg2disp["pkg_version"]."-".$pkg2disp["revision"];
-}
-
-?>
-<h1>Package <? print $package." ".$fullversion ?></h1>
-<?
 
+  $is_restrictive = 0;
+  if ($latest[license] && strcasecmp($latest[license],'Restrictive')==0) {
+      $is_restrictive = 1;
+  }
 
  function avail_td($text, $extras='') {
    print '<td align="center" valign="top" ' . $extras . '>';
    print '<div style="white-space:nowrap">' . $text . '</div>';
    print '</td>';
  }
- 
- function show_desc($label, $text) {
-   $text = htmlentities($text);
-   if ($text) {
-     # Try to detect urls
-     $text = preg_replace('/http:\/\/[^ &:]+/', '<a href="${0}">${0}</a>', 
$text);
-     $text = '<div class="desc">' . $text . '</div>';
-     if ($label)
-       it_item($label, '');
-     it_item('', $text);
-   }
- }
- 
- function version_tags($package, $vers, $rel_id, $disp_vers, $disp_rel_id) {
-   if ($vers == $disp_vers && $rel_id == $disp_rel_id) {
-     $open_tag = '<b>';
-     $close_tag = '</b>';
-   } else {
-     $open_tag = "<a href=\"$package?version=$vers&rel_id=$rel_id\">";
-     $close_tag = '</a>';
-   }
-   return array (
-     $open_tag,
-     $close_tag,
-   );
- }
- 
- function link_to_package($package, $vers, $rel_id, $description='') {
-   $pkg_str = '<a href="'.$package;
-   if ($vers) {
-     $pkg_str .= '?version='.$vers;
-     if ($rel_id)
-       $pkg_str .= '&rel_id='.$rel_id;
-   }
-   elseif ($rel_id)
-     $pkg_str .= '?rel_id='.$rel_id;
-   $pkg_str .= '">'.$package.'</a> ';
-   if ($description)
-     $pkg_str .= htmlentities($description);
-   return $pkg_str;
- }
-
 
  print '<table class="pkgversion" cellspacing="2" border="0">'."\n";
 
@@ -167,99 +69,71 @@
  print "</tr>\n";
 
  print '<tr bgcolor="#ffecbf">';
- print '<th width="100" align="center"><a 
href="http://feeds.feedburner.com/FinkProjectNews-stable";><img src="' . 
$pdbroot . 'rdf.png" alt="stable RSS feed" border="0"  width="14" height="14" 
/></a> stable</th>';
- print '<th width="100" align="center"><a 
href="http://feeds.feedburner.com/FinkProjectNews-unstable";><img src="' . 
$pdbroot . 'rdf.png" alt="unstable RSS feed" border="0"  width="14" height="14" 
/></a> unstable</th>';
+ print '<th width="100" align="center"><a 
href="http://feeds.feedburner.com/FinkProjectNews-stable";><img src="' . 
$pdbroot . 'rdf.png" alt="stable RSS feed" border="0" /></a> stable</th>';
+ print '<th width="100" align="center"><a 
href="http://feeds.feedburner.com/FinkProjectNews-unstable";><img src="' . 
$pdbroot . 'rdf.png" alt="unstable RSS feed" border="0" /></a> unstable</th>';
  print "</tr>\n";
 
- // Fetch list of all distributions
- $q = "SELECT * FROM `distribution` WHERE active='1' ";
- if (!$showall)
-   $q .= "AND visible='1' ";
- $q .= "ORDER BY priority DESC";
- $qdist = mysql_query($q, $dbh);
- if (!$qdist) {
-   die('<p><b>error during query:</b> '.mysql_error().'</p>');
- }
- $color_count = 0;
- $last_identifier = '';
- while ($dist_row = mysql_fetch_array($qdist)) {
-   if ($last_identifier != $dist_row['identifier'])
-     $color_count++;
-   if ($color_count == 1) {
+ foreach( $releases as $os=>$dists ) {
+   if($dists["pri"]==1) {
      $row_color='bgcolor="#e3caff"';
-   } else if ($color_count == 2) {
+   } else if ($dists["pri"]==2) {
      $row_color='bgcolor="#f1e2ff"';
    } else {
      $row_color='bgcolor="#f6ecff"';
    }
-   $last_identifier = $dist_row['identifier'];
 
-   // Now query all releases (typically: stable, unstable, bindist) for the 
given distribution.
-   $q = "SELECT p.*, r.type, r.version AS rel_version FROM `package` p, 
`release` r WHERE p.name = '$package' AND p.rel_id = r.rel_id AND r.dist_id='" 
. $dist_row['dist_id'] . "' AND active='1' ORDER BY r.priority ASC";
-   $qrel = mysql_query($q, $dbh);
-   if (!$qrel) {
-     die('<p><b>error during query:</b> '.mysql_error().'</p>');
-   }
-   
-   $pkg_release = array();
-   
-   while ($rel_row = mysql_fetch_array($qrel)) {
-     $type = $rel_row['type'];
-     $rel_version = $rel_row["version"]."-".$rel_row["revision"];
-     if($rel_row["epoch"] > 0)
-       $rel_version = $rel_row["epoch"].":".$rel_version;
-     $pkg_release[$type]["version"] = $rel_version;
-     $pkg_release[$type]["restrictive"] = 
(strcasecmp($rel_row["license"],'Restrictive')==0);
-     $pkg_release[$type]["rel_id"] = $rel_row['rel_id'];
-     $pkg_release[$type]["pkg_id"] = $rel_row['pkg_id'];
-     $pkg_release[$type]["rel_version"] = $rel_row['rel_version'];
+
+   // used in System and CVS/rsync entries to leave enough space for bindists
+   $bindist_rowspan='';
+   if (is_array($dists["bin"])) {
+       if (sizeof($dists["bin"])>1)
+         $bindist_rowspan='rowspan='.sizeof($dists["bin"]);
+       $bindists_lbl=array_keys($dists["bin"]);
+       $bindists_sql=array_values($dists["bin"]);
+   } else {
+     $bindists_lbl=array();
+     $bindists_sql=array();
    }
+
    // System
    print "<tr $row_color>";
-   avail_td(nl2br($dist_row['description']),'');
+   avail_td($os,$bindist_rowspan);
 
    // first bindist
-    if(isset($pkg_release["bindist"])) {
-      $vers = $pkg_release["bindist"]["version"];
-      list($open_tag, $close_tag) = 
-        version_tags($package, $vers, $pkg_release["bindist"]["rel_id"], 
$fullversion, $pkg2disp["rel_id"]);
-      avail_td(
-        strlen($vers) && !$pkg_release["bindist"]["restrictive"]
-        ? $open_tag . $vers . $close_tag . ' (bindist 
'.$pkg_release["bindist"]["rel_version"].')'
-        : '<i>not present</i>'
-      );
-      // need to use specific tag for info file in fink cvs?
-      if (strlen($vers) && !$pkg_release["bindist"]["restrictive"])
-        if ($vers == $fullversion && $pkg_release["bindist"]["rel_id"] == 
$pkg2disp["rel_id"])
-          $pkg2disp['bindist'] = $pkg_release["bindist"]["rel_version"];
+    if(strlen($bindists_sql[0])) {
+      $vers = $rmap[$bindists_sql[0]];
+      avail_td(strlen($vers) && $is_restrictive==0 ? $vers.' 
('.$bindists_lbl[0].')' : '<i>not present</i>');
     } else {
       avail_td('<i>no bindists available</i>',$bindist_rowspan);
     }
 
     // CVS/rsync dist
-    if(isset($pkg_release["stable"]) || isset($pkg_release["unstable"])) {
-      $vers = $pkg_release["stable"]["version"];
-      list($open_tag, $close_tag) = 
-        version_tags($package, $vers, $pkg_release["stable"]["rel_id"], 
$fullversion, $pkg2disp["rel_id"]);
+    if(strlen($dists["sta"]) || strlen($dists["uns"])) {
+      $vers_st = $rmap[$dists["sta"]];
+      $vers_un = $rmap[$dists["uns"]];
       avail_td(
-        strlen($vers)
-          ? $open_tag . $vers . $close_tag
-          : '<i>not present</i>'
-        , $bindist_rowspan
-      );
-      $vers = $pkg_release["unstable"]["version"];
-      list($open_tag, $close_tag) = 
-        version_tags($package, $vers, $pkg_release["unstable"]["rel_id"], 
$fullversion, $pkg2disp["rel_id"]);
+       strlen($vers_st)
+         ? '<!-- a 
href="../packagedetails.php?tree='.$dists["sta"]."&pkg=$package&version=$vers_st\"
 -->".$vers_st #."</a>"
+         : '<i>not present</i>'
+       , $bindist_rowspan);
       avail_td(
-        strlen($vers)
-          ? $open_tag . $vers . $close_tag
-          : '<i>not present</i>'
-        , $bindist_rowspan
-      );
+       strlen($vers_un)
+         ? '<!-- a 
href="../packagedetails.php?tree='.$dists["uns"]."&pkg=$package&version=$vers_un\"
 -->".$vers_un #."</a>"
+         : '<i>not present</i>'
+       , $bindist_rowspan);
     } else {
       avail_td("<i>unsupported</i>",$bindist_rowspan.' colspan=2');
     }
     print "</tr>\n";
+
+    // other bindists
+    for( $bindistrow=1; $bindistrow<sizeof($bindists_sql); $bindistrow++ ) {
+      print "<tr $row_color>";
+      $vers = $rmap[$bindists_sql[$bindistrow]];
+      avail_td(strlen($vers) && $is_restrictive==0 ? $vers.' 
('.$bindists_lbl[$bindistrow].')' : '<i>not present</i>');
+      print "</tr>\n";
+    }
+
   }
   
   print "</table>\n";
@@ -267,20 +141,13 @@
   print "<br>";
 
   it_start();
-  
-  if ($warning)
-    it_item('', $warning);
-
-  it_item("Description:", htmlentities($pkg2disp[descshort]) . " (" . 
$fullversion . ")");
-  show_desc('', $pkg2disp[desclong]);
-
-  show_desc('Usage&nbsp;Hints:', $pkg2disp[descusage]);
-
-  it_item("Section:", '<a 
href="'.$pdbroot.'browse.php?section='.$pkg2disp[section].'">'.$pkg2disp[section].'</a>');
+  $desc = $latest[desclong];
+  it_item("<p>Description:</p>", $desc);
+  it_item("Section:", '<a 
href="'.$pdbroot.'section.php/'.$latest[section].'">'.$latest[section].'</a>');
 
   // Get the maintainer field, and try to parse out the email address
-  if ($pkg2disp[maintainer]) {
-       $maintainers = $pkg2disp[maintainer];
+  if ($latest[maintainer]) {
+       $maintainers = $latest[maintainer];
        preg_match("/^(.+?)\s*<(\S+)>/", $maintainers, $matches);
     $maintainer = $matches[1];
     $email = $matches[2];
@@ -290,45 +157,33 @@
   // If there was an email specified, make the maintainer field a mailto: link
   if ($email) {
     $email = str_replace(array("@","."), array("AT","DOT"), $email);
-    it_item("Maintainer:", '<a 
href="'.$pdbroot.'browse.php?maintainer='.$maintainer.'">'.$maintainer.' 
&lt;'.$email.'&gt;'.'</a>');
+    it_item("Maintainer:", '<a 
href="'.$pdbroot.'maintainer.php?maintainer='.$maintainer.'">'.$maintainer.' 
&lt;'.$email.'&gt;'.'</a>');
 #    it_item("Maintainer:", '<a href="mailto:'.$email.'">'.$maintainer.'</a>');
   } else {
-    it_item("Maintainer:", '<a 
href="'.$pdbroot.'browse.php?maintainer='.$maintainer.'">'.$maintainer.'</a>');
-  }
-  if ($pkg2disp[homepage]) {
-    it_item("Website:", '<a 
href="'.$pkg2disp[homepage].'">'.$pkg2disp[homepage].'</a>');
+    it_item("Maintainer:", '<a 
href="'.$pdbroot.'maintainer.php?maintainer='.$maintainer.'">'.$maintainer.'</a>');
   }
-  if ($pkg2disp[license]) {
-    it_item("License:", '<a 
href="http://fink.sourceforge.net/doc/packaging/policy.php#licenses";>'.$pkg2disp[license].'</a>');
+  if ($latest[homepage]) {
+    it_item("Website:", '<a 
href="'.$latest[homepage].'">'.$latest[homepage].'</a>');
   }
-  if ($pkg2disp[parentname]) {
-    it_item("Parent:", link_to_package($pkg2disp[parentname], $version, 
$rel_id));
+  if ($latest[license]) {
+    it_item("License:", '<a 
href="http://fink.sourceforge.net/doc/packaging/policy.php#licenses";>'.$latest[license].'</a>');
   }
-  if ($pkg2disp[infofile]) {
-    # where the info file sits on a local Fink installation
-    $infofile_path = "/sw/" . str_replace('dists/', '', $pkg2disp[infofile]);
-    $infofile_cvs_url = 'http://fink.cvs.sourceforge.net/'.$pkg2disp[infofile];
-    if ($pkg2disp['bindist'])
-      $infofile_tag = '?pathrev=release_'.str_replace('.', '_', 
$pkg2disp['bindist']);
-    else
-      $infofile_tag = '';
-    $infofile_html  = '<a 
href="'.$infofile_cvs_url.$infofile_tag.($infofile_tag ? '&' : 
'?').'view=markup">'.$infofile_path.'</a><br>';
-    $infofile_html .= '<a href="'.$infofile_cvs_url.$infofile_tag.'">CVS 
log</a>, Last Changed: '.$pkg2disp[infofilechanged];
-    it_item("Info-File:", $infofile_html);
+  if ($latest[parentname]) {
+    it_item("Parent:", '<a 
href="'.$pdbroot.'package.php/'.$latest[parentname].'">'.$latest[parentname].'</a>');
   }
 
 
        // List the splitoffs of this package
 
-       $q = "SELECT * FROM `package` WHERE rel_id='$pkg2disp[rel_id]' AND 
parentname='$pkg2disp[name]' ORDER BY name";
+       $q = "SELECT * FROM splitoffs WHERE 
parentkey='$latest[release]$latest[name]'";
        $rs = mysql_query($q, $dbh);
        if (!$rs) {
          print '<p><b>error during query:</b> '.mysql_error().'</p>';
        } else {
          if($row = mysql_fetch_array($rs))
-           it_item("SplitOffs:", link_to_package($row["name"], $version, 
$rel_id, $row["descshort"]));
+           it_item("SplitOffs:", '<a 
href="'.$pdbroot.'package.php/'.$row[name].'">'.$row[name].'</a> 
'.htmlentities($row[descshort]));
          while ($row = mysql_fetch_array($rs)) {
-               it_item(" ", link_to_package($row["name"], $version, $rel_id, 
$row["descshort"]));
+               it_item(" ", '<a 
href="'.$pdbroot.'package.php/'.$row[name].'">'.$row[name].'</a> 
'.htmlentities($row[descshort]));
          }
        }
   it_end();
@@ -337,14 +192,12 @@
 
 
 <?
-} /* if (no package found) */
+} /* if (SQL error) */
 } /* if (no package) */
 ?>
 
 <p><a href="<? print $pdbroot ?>sections.php">Section list</a> -
-<a href="<? print $pdbroot ?>browse.php">Flat package list</a> -
-<a href="<? print $pdbroot ?>browse.php?nolist=on">Search packages</a>
-</p>
+<a href="<? print $pdbroot ?>list.php">Flat package list</a></p>
 
 
 <?

Index: maintainer.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/maintainer.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- maintainer.php      10 Sep 2007 18:56:34 -0000      1.5
+++ maintainer.php      10 Sep 2007 19:37:21 -0000      1.6
@@ -1,17 +1,55 @@
-<?php
-$title = "Package Database - Obsolete page";
+<?
+$title = "Package Database - Maintainer ";
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php";
+include "header.inc";
+?>
 
-if (isset($_GET['maintainer'])) {
-       $maintainer = htmlspecialchars($_GET['maintainer']);
-       $location .= "?maintainer=" . $maintainer;
+<?
+if (!isset($_GET['maintainer'])) {
+?>
+<p><b>No maintainer specified.</b></p>
+<?
+} else { /* if (no maintainer) */
+$maintainer = htmlspecialchars($_GET['maintainer']);
+?>
+
+<h1>Packages maintained by <? print $maintainer ?></h1>
+
+<?
+$q = "SELECT name,descshort FROM package WHERE maintainer LIKE 
'%$maintainer%'".
+        " AND !(name REGEXP '.*-(dev|shlibs|bin|common|doc)$') ".
+     "AND latest=1 ORDER BY name ASC";
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
+} else {
+  $count = mysql_num_rows($rs);
+
+?>
+
+<p>Found <? print $count ?> packages maintained by <? print $maintainer ?>:</p>
+
+<ul>
+<?
+  while ($row = mysql_fetch_array($rs)) {
+    $desc = " - ".$row[descshort];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a 
href="'.$pdbroot.'package.php/'.$row[name].'">'.$row[name].'</a>'.$desc."</li>\n";
+  }
+?>
+</ul>
+<?
 }
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://"; . $server . "/" . $location);
+} /* if (no maintainer) */
+?>
+
+<!-- <p><a href="<? print $pdbroot ?>sections.php">Back to section 
list</a></p> -->
 
+
+<?
+include "footer.inc";
 ?>

Index: header.inc
===================================================================
RCS file: /cvsroot/fink/web/pdb/header.inc,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- header.inc  10 Sep 2007 18:56:34 -0000      1.14
+++ header.inc  10 Sep 2007 19:37:21 -0000      1.15
@@ -47,6 +47,7 @@
   $localroot."pdb/search.php", "Search",
   $localroot."pdb/testing.php", "Help needed"
 );
+include "timestamp.inc";
 
 $fsroot = "../";
 if (substr($root,0,1) == "-") {
@@ -61,29 +62,4 @@
 include $fsroot."db.inc.php";
 $dbh = mysql_pconnect($db_host, $db_user, $db_passwd);
 mysql_select_db($db_name, $dbh);
-
-
-// Read url parameters. We use basic HTML encoding for now, and 
-// cut off very long values, to make unforseen SQL injection hacks more 
difficult.
-function get_safe_param($param_name, $valid_regexp='.*', $max_length=35) {
-  $param_name = $_GET[$param_name];
-  if ($param_name) $has_param_name = true;
-  if (strlen($param_name) > $max_length || !preg_match($valid_regexp, 
$param_name)) {
-    $param_name = '';
-  } else {
-    $param_name = mysql_real_escape_string(htmlspecialchars($param_name));
-    if (strlen($param_name) > $max_length || !preg_match($valid_regexp, 
$param_name))
-      $param_name = '';
-  }
-  if ($has_param_name && !$param_name)
-    $invalid_param = true;
-  else
-    $invalid_param = false;
-  return array (
-    $param_name,
-    $invalid_param,
-  );
-}
- 
-
 ?>

Index: nomaintainer.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/nomaintainer.php,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- nomaintainer.php    10 Sep 2007 18:56:34 -0000      1.15
+++ nomaintainer.php    10 Sep 2007 19:37:21 -0000      1.16
@@ -1,12 +1,64 @@
-<?php
-$title = "Package Database - Obsolete page";
+<?
+$title = "Package Database";
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php?maintainer=None&nochildren=on";
+include "header.inc";
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://$server/$location";);
+if (!param(distro)) {
+  $distro_sql = "AND (`release` LIKE 'current-10.3%' OR `release` LIKE 
'current-10.4%')";
+  $distro_txt = ' in the 10.3 and 10.4 releases';
+} else if (!strcmp(param(distro),"all")) {
+  $distro_sql = '';
+  $distro_txt = '';
+} else if (ereg("[^a-zA-Z0-9_.+-]",param(distro))) {
+  print '<p><b>error during query:</b> invalid distro</p>';
+  $distro_sql = '';
+  $distro_txt = '';
+} else {
+  $distro_sql = "AND `release` LIKE 'current-".param(distro)."%'";
+  $distro_txt = ' in the '.param(distro). ' release';
+}
+
+$q = "SELECT name,descshort FROM package ".
+     "WHERE maintainer LIKE '%None%' AND latest=1 AND parentname IS NULL ".
+     "$distro_sql ORDER BY name ASC";
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
+} else {
+  $count = mysql_num_rows($rs);
+?>
+
+
+<h1>Packages without Maintainers</h1>
+
+<p>
+This is a list of packages that need a new maintainer, because the original
+maintainer who brought the package to Fink is no longer able to maintain
+it.  If you are interested in taking on one of these packages, and you are
+not already a core Fink developer, please <a
+href="mailto:fink-develATlistsDOTsourceforgeDOTnet";>contact the Fink
+developers</a> and volunteer!</p>
+<p>Core Fink developers are welcome to adopt a package by changing the
+maintainer name in the package's .info file to their own.</p>
+
+<p>Found <? print $count ?> packages without maintainers<? print $distro_txt 
?>:</p>
 
+<ul>
+<?
+  while ($row = mysql_fetch_array($rs)) {
+    $desc = " - ".$row[descshort];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a 
href="'.$pdbroot.'package.php/'.$row[name].'">'.$row[name].'</a>'.$desc."</li>\n";
+  }
+?>
+</ul>
+<?
+}
+?>
+
+<?
+include "footer.inc";
 ?>

Index: browse.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/browse.php,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- browse.php  10 Sep 2007 18:56:34 -0000      1.4
+++ browse.php  10 Sep 2007 19:37:21 -0000      1.5
@@ -3,62 +3,13 @@
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-
-
-function addGETParam(&$params, $param_name) {
-  $value = stripslashes($_GET[$param_name]);
-  if ($value)
-    $params[$param_name] = urlencode($value);
-}
-
-
-if (isset($_GET['submit']) && $_GET['submit'] == 'Search') {
-  // Re-direct to clean out empty params
-  $getparams = array();
-  $value = $_GET['nomaintainer'];
-  if ($value == 'on')
-    $_GET['maintainer'] = 'None';
-  addGETParam($getparams, 'maintainer');
-  addGETParam($getparams, 'name');
-  addGETParam($getparams, 'summary');
-  addGETParam($getparams, 'nolist');
-  addGETParam($getparams, 'dist');
-  addGETParam($getparams, 'tree');
-  addGETParam($getparams, 'section');
-  addGETParam($getparams, 'nochildren');
-  addGETParam($getparams, 'noshlibsdev');
-  addGETParam($getparams, 'sort');
-  addGETParam($getparams, 'showall');
-  $redirect_url = '?';
-  foreach ($getparams as $key => $value) {
-    $redirect_url .= "$key=$value&";
-  }
-  $redirect_url = rtrim($redirect_url, '&?');
-  header("Location: browse.php$redirect_url");
-}
-
-// are there any advanced search options? If no, collapse advanced search div
-if ($_GET['maintainer'] || $_GET['name'] || $_GET['dist'] || $_GET['tree'] || 
$_GET['section'] || $_GET['nochildren'] || $_GET['noshlibsdev'] || 
$_GET['sort'])
-  $pdb_has_adv_searchoptions = true;
-else
-  $pdb_has_adv_searchoptions = false;
-
-// load javascript for pdb in header.inc
-$pdb_scripts = true;
-
 include "header.inc";
 ?>
 
 <h1>Browse packages</h1>
 
 <p>
-On this page you can browse through all packages in the Fink package database,
-optionally and at your direction narrowed down by various search parameters, 
set below.
-</p>
-<p>
-For each of several distributions (10.2, 10.3, 10.4), this database includes
-information about all packages found in the respective latest stable and 
unstable trees.
-Furthermore, all packages from the most recent binary distributions are 
covered.
+TODO: Write some text that fits here
 </p>
 
 <?
@@ -78,22 +29,16 @@
 $maintainer  any, name
 $dist  any, dist name
 $section any, sectio name
-$tree  any, stable, testing (=stable version outdated), unstable, bindist
+$tree  any, stable, testing (=stable version outdated), unstable
+$binary  any, true, false
 $nochildren  any, true, false
 */
 
-/**
- * Simple function to replicate PHP 5 behaviour
- */
-function microtime_float()
-{
-  list($usec, $sec) = explode(" ", microtime());
-  return ((float)$usec + (float)$sec);
-}
 
-// This function generates a form popup, with the given
+// This function generates a form popup, with the given label,
 // variable name, current value, and list of possible values.
-function genFormSelect($var_name, $cur_val, $values, $description = '') {
+function genFormSelect($label, $var_name, $cur_val, $values) {
+       echo $label;
        echo "<select NAME='$var_name'>\n";
        foreach ($values as $key => $val) {
                echo "  <option value='$key' ";
@@ -101,46 +46,27 @@
                echo ">$val</option>\n";
        }
        echo "</select>\n";
-       echo $description ? " $description" : '';
        echo "<br>";
 }
 
-list($showall, $inv_p) = get_safe_param('showall', '/^on$/');
-
-// Distribution values
-$dist_values = array();
-$q = "SELECT * FROM `distribution` WHERE active='1' ";
-if (!$showall)
-  $q .= "AND visible='1' ";
-$q .= "ORDER BY priority DESC";
-$qdist = mysql_query($q, $dbh);
-if (!$qdist) {
-  die('<p class="attention"><b>Error in db query (distribution):</b> 
'.mysql_error().'</p>');
-}
-$dist_values[''] = 'Any';
-while ($dist = mysql_fetch_array($qdist)) {
-  $dist_values[$dist['dist_id']] = $dist['description'];
-}
-
 // Allowed values for certain fields
 $tree_values = array(
-               "" => "Any",
-               "unstable" => "Unstable",
-               "stable" => "Stable",
-               "bindist" => "Binary Distribution",
-               "testing" => "Packages that need testing"
+               "any" => "any",
+               "stable" => "stable",
+               "testing" => "testing",
+               "unstable" => "unstable"
        );
 $sort_values = array(
-       "" => "Ascending",
+       "ASC" => "Ascending",
        "DESC" => "Descending"
        );
 
 // Load legal sections
-$section_values = array('' => 'Any');
+$section_values = array("any" => "Any");
 $query = "SELECT * FROM sections ORDER BY name ASC";
 $rs = mysql_query($query, $dbh);
 if (!$rs) {
-       print '<p class="attention"><b>Error in db query (sections):</b> 
'.mysql_error().'</p>';
+       print '<p><b>error during query:</b> '.mysql_error().'</p>';
 } else {
        $seccount = mysql_num_rows($rs);
        while ($row = mysql_fetch_array($rs)) {
@@ -148,104 +74,70 @@
        }
 }
 
-// Read url parameters
-// NOTE: You have to change the parameter list at the top of this file as well
-$invalid_param = false;
-list($maintainer, $inv_p) = get_safe_param('maintainer', '/[EMAIL 
PROTECTED]&\'\\\ ]+$/');
-$invalid_param = $invalid_param || $inv_p;
-list($name, $inv_p) = get_safe_param('name', '/^[a-z0-9+\-.%]+$/');
-$invalid_param = $invalid_param || $inv_p;
-list($summary, $inv_p) = get_safe_param('summary', '/.*/');
-$invalid_param = $invalid_param || $inv_p;
-list($nolist, $inv_p) = get_safe_param('nolist', '/on/');
-$invalid_param = $invalid_param || $inv_p;
+// Read the maintainer field. We use basic HTML encoding for now, and cut off
+// very long values, to make unforseen SQL injection hacks more difficult.
+$maintainer = $_GET['maintainer'];
+if (strlen($maintainer) > 15 || !preg_match("/[EMAIL PROTECTED] ]+$/", 
$maintainer)) {
+       $maintainer = "";
+} else {
+       $maintainer = htmlspecialchars($maintainer);
+       if (strlen($maintainer) > 15 || !preg_match("/^[a-zA-Z0-9@ ]+$/", 
$maintainer))
+               $maintainer = "";
+}
 
 // Extract the distribution
-$dist = $_GET['dist'];
-if (!isset($dist_values[$tree]))
-       $tree = '';
+// TODO
+//$dist = htmlspecialchars($_GET['dist']);
 
 // Extract the tree
 $tree = $_GET['tree'];
 if (!isset($tree_values[$tree]))
-       $tree = '';
+       $tree = "any";
 
 // Extract the section
 $section = $_GET['section'];
 if (!isset($section_values[$section]))
-       $section = '';
+       $section = "any";
+
+// List only binary packages, only non-binary packages, or all?
+$binary = $_GET['binary'];
+if ($binary != "1" and $binary != "0") $binary = "";
 
 // 
 $nochildren = $_GET['nochildren'];
-if ($nochildren != "on") $nochildren = '';
+if ($nochildren != "on") $nochildren = "off";
 
 // 
 $noshlibsdev = $_GET['noshlibsdev'];
-if ($noshlibsdev != "on") $noshlibsdev = '';
+if ($noshlibsdev != "on") $noshlibsdev = "off";
 
 // Sort direction
 $sort = $_GET['sort'];
-if ($sort != "DESC") $sort = '';
+if ($sort != "DESC") $sort = "ASC";
 
 ?>
 
-<form action="browse.php" method="get" name="pdb_browser" id="pdb_browser" 
onreset="resetForm();return false;">
-<?if ($showall) print '<input name="showall" type="hidden" value="on">';?>
-<br>
-Summary:
-<input name="summary" type="text" 
value="<?=stripslashes(stripslashes($summary))?>"> (Leave empty to list all)
-<br>
+<form action="browse.php" method="get" name="pdb_browser" id="pdb_browser">
 
-<input name="submit" type="submit" value="Search">
-<input type="reset" value="Clear Form">
-<br>
-<?if ($invalid_param) print '<p class="attention">Invalid Input 
Parameters!</p>';?>
-<br>
+<script language="javascript" type="text/javascript">
+<!--
+function list_unmaintained_packages() {
+  document.pdb_browser.elements.maintainer.value="None"
+}
+//-->
+</script>
 
-<span class="expand_adv_options">
-<a href="javascript:switchMenu('advancedsearch','triangle');" title="Advanced 
search options"><img src="<? echo $root ?>img/collapse.png" alt="" 
id="triangle" width="9" height="8">&nbsp;Advanced search options</a>
-</span>
+Maintainer:
+<input name="maintainer" type="text" value="<?=$maintainer?>">
+(<a href="javascript:list_unmaintained_packages()">list packages without 
maintainer</a>)
 <br>
 
-<div id="advancedsearch">
-
-<table><tr>
-<td>Package Name:</td>
-<td><input name="name" type="text" value="<?=$name?>"> (Exact match. Use '%' 
as wildcard.)</td>
-</tr><tr>
-<td>Maintainer:</td>
-<td>
-<input name="maintainer" type="text" 
value="<?=stripslashes(stripslashes($maintainer))?>" 
onChange="set_list_nomaintainer(this.value)">
-<input name="nomaintainer" type="checkbox" 
onchange="list_unmaintained_packages(this.checked)"  <? if ($maintainer == 
"None") echo "checked";?>>
-No maintainer
-</td>
-</tr>
-
 <?
-
-// We need to set a specific distribution if showing packages in "testing"
-// Select the one with the highest priority
-if ($tree == 'testing' && !$dist) {
-  reset($dist_values);
-  next($dist_values);
-  $dist = key($dist_values);
-}
+genFormSelect("Tree: ", "tree", $tree, $tree_values);
+genFormSelect("Section: ", "section", $section, $section_values);
+genFormSelect("Sort: ", "sort", $sort, $sort_values);
 ?>
 
-<tr>
-<td>Distribution:</td>
-<td><?genFormSelect("dist", $dist, $dist_values);?></td>
-</tr><tr>
-<td>Tree:</td>
-<td><?genFormSelect("tree", $tree, $tree_values);?></td>
-</tr><tr>
-<td>Section:</td>
-<td><?genFormSelect("section", $section, $section_values);?></td>
-</tr><tr>
-<td>Sort order:</td>
-<td><?genFormSelect("sort", $sort, $sort_values);?></td>
-</tr></table>
-
 <input name="nochildren" type="checkbox" <? if ($nochildren == "on") echo 
"checked";?>>
 Exclude packages with parent (includes most "-dev", "-shlibs", ... splitoffs)
 <br>
@@ -254,194 +146,71 @@
 Exclude -shlibs, -dev, -bin, -common, -doc packages 
 <br>
 
-</div>
-
+<input name="submit" type="submit" value="Browse">
 </form>
 
 
 <?
 
-if (!$nolist && !$invalid_param) {
-
 //
 // Build the big query string
 //
-$query = 
-     "SELECT p.name, p.version, p.revision, p.descshort, r.rel_id ";
-if ($dist && $tree) {
-  // show pkg of specifc dist/tree
-  if ($tree == 'testing') {
-    $query .= ", CONCAT(p.version, '-', p.revision) AS version_unstable, ".
-            "    CONCAT(sp.version, '-', sp.revision) AS version_stable ".
-            "FROM `release` r, `package` p ".
-            "LEFT OUTER JOIN (`package` sp, `release` sr)  ".
-            "     ON (p.name = sp.name ".
-            "         AND sp.rel_id = sr.rel_id ".
-            "         AND sr.dist_id = $dist ".
-            "         AND sr.type = 'stable') ".
-            "   WHERE p.rel_id = r.rel_id ".
-            "     AND r.dist_id = $dist ".
-            "     AND r.type = 'unstable' ";
-  } else {
-    $query .= "FROM `package` p, `release` r ".
-            "WHERE p.rel_id = r.rel_id".
-            "  AND r.dist_id = $dist ".
-            "  AND r.type = '$tree' ";
-  }
-} else if ($dist && !$tree) {
-  // show latest pkg of specifc dist or tree
-  $query .= "FROM `package` p, `release` r ".
-            "WHERE p.rel_id = r.rel_id ".
-            "  AND r.dist_id = $dist ".
-            "  AND r.priority = (SELECT MAX(rX.priority) ".
-            "    FROM `package` pX, ".
-            "         `release` rX ".
-            "    WHERE p.name = pX.name ".
-            "      AND pX.rel_id = rX.rel_id ".
-            "      AND rX.dist_id = $dist ".
-            "    GROUP BY pX.name) ";
-} else if (!$dist && $tree) {
-  // show everything in a given tree, regardless of the dist
-  // Note: This query is almost identical to the (!$dist && !$tree) one.
-  // The only additions are the '$tree' specifiers.
-  $query .= "FROM `package` p, `release` r, `distribution` d ".
-            "WHERE p.rel_id = r.rel_id ".
-            "  AND r.dist_id = d.dist_id ";
-  if (!$showall)
-    $query .= "AND d.visible='1' ";
-  $query .= "  AND r.type = '$tree' ".
-            "  AND d.priority = (SELECT MAX(dX.priority) ".
-            "    FROM `package` pX, ".
-            "         `release` rX, ".
-            "         `distribution` dX ".
-            "    WHERE p.name = pX.name ".
-            "      AND pX.rel_id = rX.rel_id ".
-            "      AND rX.dist_id = dX.dist_id ".
-            "      AND rX.type = '$tree' ";
-  if (!$showall)
-    $query .= "    AND dX.visible='1' ";
-  $query .= "    GROUP BY pX.name) ".
-            "  AND r.priority = (SELECT MAX(rX.priority) ".
-            "    FROM `package` pX, ".
-            "         `release` rX ".
-            "    WHERE p.name = pX.name ".
-            "      AND pX.rel_id = rX.rel_id ".
-            "      AND rX.dist_id = d.dist_id ".
-            "      AND rX.type = '$tree' ".
-            "    GROUP BY pX.name) ";
-} else if (!$dist && !$tree) {
-  // show latest if no specifc dist/tree
-  $query .= "FROM `package` p, `release` r, `distribution` d ".
-            "WHERE p.rel_id = r.rel_id ".
-            "  AND r.dist_id = d.dist_id ";
-  if (!$showall)
-    $query .= "AND d.visible='1' ";
-  $query .= "  AND d.priority = (SELECT MAX(dX.priority) ".
-            "    FROM `package` pX, ".
-            "         `release` rX, ".
-            "         `distribution` dX ".
-            "    WHERE p.name = pX.name ".
-            "      AND pX.rel_id = rX.rel_id ".
-            "      AND rX.dist_id = dX.dist_id ";
-  if (!$showall)
-    $query .= "    AND dX.visible='1' ";
-  $query .= "    GROUP BY pX.name) ".
-            "  AND r.priority = (SELECT MAX(rX.priority) ".
-            "    FROM `package` pX, ".
-            "         `release` rX ".
-            "    WHERE p.name = pX.name ".
-            "      AND pX.rel_id = rX.rel_id ".
-            "      AND rX.dist_id = d.dist_id ".
-            "    GROUP BY pX.name) ";
-}
+$query = "SELECT name,version,revision,descshort FROM package WHERE ".
+     "latest=1 "; // TODO: Should we really always specify latest=1 ??? 
probably not
+
+if ($tree == "testing")        // TODO: Handle stable / unstable, too!
+       $query .= "AND needtest=1 ";
 
 if ($nochildren == "on")
-       $query .= "AND p.parentname IS NULL ";
+       $query .= "AND parentname IS NULL ";
 
 if ($noshlibsdev == "on")
-       $query .= "AND !(p.name REGEXP '.*-(dev|shlibs|bin|common|doc)$') ";
+       $query .= "AND !(name REGEXP '.*-(dev|shlibs|bin|common|doc)$') ";
 
 if ($maintainer != "")
-       $query .= "AND p.maintainer LIKE '%$maintainer%' ";
-
-if ($name != "")
-       $query .= "AND p.name LIKE '$name' ";
-
-if ($summary != "")
-       $query .= "AND (p.name LIKE '%$summary%' OR p.descshort LIKE 
'%$summary%' OR p.desclong LIKE '%$summary%' OR p.descusage LIKE '%$summary%') 
";
+       $query .= "AND maintainer LIKE '%$maintainer%' ";
 
-if ($section) {
+if ($section != "any") {
        if ($section == "games") {
-               $sectionquery = " (p.section='$section' OR p.parentname REGEXP 
'kdegames3|kdetoys3') ";
+               $sectionquery = " (section='$section' OR parentname REGEXP 
'kdegames3|kdetoys3') ";
        } else if ($section == "graphics") {
-               $sectionquery = " (p.section='$section' OR 
p.parentname='kdegraphics3') ";
+               $sectionquery = " (section='$section' OR 
parentname='kdegraphics3') ";
        } else if ($section == "sound") {
-               $sectionquery = " (p.section='$section' OR 
p.parentname='kdemultimedia3') ";
+               $sectionquery = " (section='$section' OR 
parentname='kdemultimedia3') ";
        } else if ($section == "utils") {
-               $sectionquery = " (p.section='$section' OR 
p.parentname='kdeutils3') ".
-                               " AND (p.parentname IS NULL OR p.parentname != 
'webmin') ";
+               $sectionquery = " (section='$section' OR 
parentname='kdeutils3') ".
+                               " AND (parentname IS NULL OR parentname != 
'webmin') ";
        } else {
-               $sectionquery = " p.section='$section' ";
+               $sectionquery = " section='$section' ";
        }
        $query .= "AND $sectionquery ";
 }
-if ($tree == 'testing')
-       $query .= "HAVING version_stable IS NULL OR version_unstable != 
version_stable ";
-$query .= "ORDER BY p.name $sort";
 
-$time_sql_start = microtime_float();
+
+$query .= "ORDER BY name $sort";
+
 $rs = mysql_query($query, $dbh);
-$time_sql_end = microtime_float();
 if (!$rs) {
-  print '<p class="attention"><b>Error in db query (list packages):</b> 
'.mysql_error().'</p>';
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
 } else {
   $count = mysql_num_rows($rs);
+?>
 
+<p>Found <? print $count ?> packages:</p>
 
-// Maybe display an overview of the search settings used to obtain the results 
here?
-// Many seach servics (e.g. Google) do this: While the search settings are 
initially
-// still visible in the widgets on the page, the user may have altered them.
-?>
-<p>
-Found <?=$count?> 
-package<?=($count==1 ? '' : 's')?><?=($maintainer=='None' ? ' without 
maintainer' : '')?><?=($tree=='testing' ? ' that need testing' : '')?>:
-</p>
-<?
-  if ($count > 0) {
-?>
-<table class="pdb" cellspacing="2" border="0">
+<ul>
 <?
-  if ($tree == 'testing') {
-    print '<tr class="pdbHeading"><th>Name</th><th>Version in 
unstable</th><th>Version in stable</th><th>Description</th></tr>';
-  } 
-  elseif ($tree && $dist) {
-    print '<tr 
class="pdbHeading"><th>Name</th><th>Version</th><th>Description</th></tr>';
-  }
-  else {
-    print '<tr class="pdbHeading"><th>Name</th><th>Latest 
Version</th><th>Description</th></tr>';
-  }
   while ($row = mysql_fetch_array($rs)) {
-    print '<tr class="package">';
-    if ($tree || $dist)
-      $rel_id_str = '?rel_id='.$row["rel_id"].($showall ? '&showall=on' : '');
-    else
-      $rel_id_str = ($showall ? '?showall=on' : '');
-    print '<td class="packageName"><a 
href="package.php/'.$row["name"].$rel_id_str.'">'.$row["name"].'</a></td>';
-    if ($tree == 'testing') {
-      print '<td>'.$row['version_unstable'].'</td>'.
-            '<td>'.$row['version_stable'].'</td>';
-    } else {
-      print '<td 
class="packageName">'.$row['version'].'-'.$row['revision'].'</td>';
-    }
-    print '<td>'.$row['descshort']."</td></tr>\n";
+    $desc = " - ".$row["descshort"];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a href="package.php/'.$row["name"].'">'.$row["name"].'</a> '.
+      $row["version"].'-'.$row["revision"].$desc."</li>\n";
   }
 ?>
-</table>
-<? } // no packages to list ?>
-<p>Query took <? printf("%.2f", $time_sql_end - $time_sql_start); ?> sec</p>
+</ul>
 <?
-} // no sql error
-} // if($nolist)
+}
 ?>
 
 <?

Index: sections.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/sections.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- sections.php        10 Sep 2007 18:56:35 -0000      1.5
+++ sections.php        10 Sep 2007 19:37:21 -0000      1.6
@@ -27,7 +27,7 @@
 <ul>
 <?
   while ($row = mysql_fetch_array($rs)) {
-    print '<li><a href="browse.php?section='.$row[name].'">'.$row[name].'</a>'.
+    print '<li><a href="section.php/'.$row[name].'">'.$row[name].'</a>'.
       ($row[description] ? (' - '.$row[description]) : '').
       '</li>'."\n";
   }

Index: testing.php
===================================================================
RCS file: /cvsroot/fink/web/pdb/testing.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- testing.php 10 Sep 2007 18:56:35 -0000      1.9
+++ testing.php 10 Sep 2007 19:37:21 -0000      1.10
@@ -3,10 +3,58 @@
 $cvs_author = '$Author$';
 $cvs_date = '$Date$';
 
-$server = $_SERVER['SERVER_NAME'];
-$location = "pdb/browse.php?tree=testing&nochildren=on";
+$have_key = isset($maintainer);
 
-// This page is obsolete. We redirect to browse.php
-header("Location: http://$server/$location";);
+include "header.inc";
+?>
+
+
+<h1>Packages in Testing</h1>
+
+<p>
+This is a list of packages that need testing, i.e. the version in
+unstable is newer than the version in stable.
+The list is based on the latest <a
+href="http://fink.sourceforge.net/doc/cvsaccess/index.php";>packages from 
CVS</a>.
+</p>
+
+<?
+// list is actually constructed by 'flag' script during db update
+
+if ($have_key && !ereg("[^ a-zA-Z0-9_.+-]", $maintainer)) {
+  $q = "SELECT name,version,revision,descshort FROM package ".
+          "WHERE needtest=1 AND (maintainer LIKE '%$maintainer%') ". 
+          "AND parentname IS NULL ".
+          "ORDER BY name ASC";
+} else {
+  $q = "SELECT name,version,revision,descshort FROM package ".
+          "WHERE needtest=1 AND parentname IS NULL ".
+          "ORDER BY name ASC";
+}
+$rs = mysql_query($q, $dbh);
+if (!$rs) {
+  print '<p><b>error during query:</b> '.mysql_error().'</p>';
+} else {
+  $count = mysql_num_rows($rs);
+?>
+
+<p>Found <? print $count ?> testing packages:</p>
+
+<ul>
+<?
+  while ($row = mysql_fetch_array($rs)) {
+    $desc = " - ".$row[descshort];
+    if (substr($desc,3,1) == "[" || substr($desc,3,1) == "<")
+      $desc = "";
+    print '<li><a href="package.php/'.$row[name].'">'.$row[name].'</a> '.
+      $row[version].'-'.$row[revision].$desc."</li>\n";
+  }
+?>
+</ul>
+<?
+}
+?>
 
+<?
+include "footer.inc";
 ?>

--- help.php DELETED ---


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Fink-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fink-commits

Reply via email to