<?php $what=(isset($_GET["what"]) ? $_GET["what"] : false); require "config.inc.php"; function listRepos($db){ $repos = array(); $res=$db->query("SELECT * FROM repo WHERE active=1 ORDER BY ID"); if ($res) while ($repo = $res->fetchObject()) { $repos[$repo->main][$repo->sub]=$repo; } // echo "<pre>"; print_r($repos);echo "</pre>"; foreach($repos as $repomain) { foreach ($repomain as $repo) { /*printf ("<th align='left'>%s</th>", $repo->main);*/ $repos[$repo->main][$repo->sub] = $repo; break; } } return $repos; } function Report ($db, $repos) { global $what; /*$repos=array(); $res=$db->query("SELECT * FROM repo WHERE active=1 ORDER BY ID"); if ($res) while ($repo = $res->fetchObject()) { $repos[$repo->main][$repo->sub]=$repo; }*/ if (substr($what,0,1)=='%') { $sql=sprintf("SELECT DISTINCT name FROM rpm WHERE SUBSTRING(name,1,1)='%s' ORDER BY name", substr($what,1,1)); } else { $sql=sprintf("SELECT DISTINCT name FROM acls WHERE owner='%s' ORDER BY name", $what); } //echo "<p>SQL=$sql</p>"; /*echo "<table id='fedora-list-packages'>\n"; echo "<tr class='odd'><th>Package</th><th>Owner(s)</th>"; foreach($repos as $repomain) { foreach ($repomain as $repo) { printf ("<th align='left'>%s</th>", $repo->main); break; } } echo "</tr>\n";*/ $i=0; $res=$db->query($sql); if ($res) while ($desc = $res->fetchObject()) { $rpmname = $desc->name; $sql2="SELECT DISTINCT owner FROM acls WHERE name LIKE '$rpmname'"; $res2=$db->query($sql2); $dispowner=""; if ($res2) while ($owner= $res2->fetchObject()) { if ($dispowner) $dispowner .= "<br/>"; $dispowner .= sprintf ("<a href=\"%s?what=%s\">%s</a>", $_SERVER["PHP_SELF"], $owner->owner, $owner->owner); } $sql3 = "SELECT * FROM rpm WHERE name LIKE '$rpmname'"; $res3=$db->query($sql3); $rpm = ($res3 ? $res3->fetchObject() : false); if ($rpm) { $url = $rpm->url; $des = htmlentities($rpm->summary); $rpms=array(); do { $rpms[$rpm->repo_main."-".$rpm->repo_sub]=$rpm; } while ($rpm = $res3->fetchObject()); printf ("<tr class=\"%s\">\n\t<td><a href=\"zoom.php?rpm=%s\" title=\"%s\">%s</a></td>\n\t<td>%s</td>\n", ($i%2 ? "odd" : "even"), $rpmname, $des, $rpmname, $dispowner); foreach($repos as $repomain) { $display=""; $class=""; foreach ($repomain as $repo) { if (isset($rpms[$repo->main."-".$repo->sub])) { $rpm=$rpms[$repo->main."-".$repo->sub]; $maxver = (isset($rpms["rawhide-"]) ? $rpms["rawhide-"]->ver : ""); switch ($repo->sub) { case "base": if (isset($rpms[$repo->main."-updates"])) { $display .= sprintf("%s-%s<br/>", $rpm->ver, $rpm->rel); } else { $display .= sprintf("<strong>%s</strong>-%s<br/>", $rpm->ver, $rpm->rel); $class = ($rpm->ver == $maxver ? "check" : "attn"); } break; case "": $display .= sprintf("<strong>%s</strong>-%s<br/>", $rpm->ver, $rpm->rel); break; case "updates": $display .= sprintf("<strong>%s</strong>-%s <small>(updates)</small><br/>", $rpm->ver, $rpm->rel); $class = ($rpm->ver == $maxver ? "check" : "attn"); break; case "testing": $display .= sprintf("%s-%s <small>(testing)</small><br/>", $rpm->ver, $rpm->rel); $class = ($rpm->ver == $maxver ? "info" : "attn"); break; } } // RPM exists } // sub repo if ($class && $maxver) { printf("\t<td class=\"%s\">%s</td>\n", $class, $display); } else if ($display) { printf("\t<td>%s</td>\n", $display); } else { echo "\t<td> </td>\n"; } } // mainrepo echo "</tr>\n"; $i++; } } // each Line } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Packages in Fedora</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="stylesheet" type="text/css" media="screen" href="css/rpmphp.css"/> <!--<link rel="stylesheet" type="text/css" media="print" href="css/rpmphp-print.css">--> <link rel="shortcut icon" href="images/favicon.ico"/> <link rel="icon" href="images/favicon.ico"/> </head> <body> <div id="wrapper"> <?php include '_header.php'; ?> <div id="fedora-content"> <div id="ariane"> <p>You are here: </p> <ul> <li><a href="./">Reports home</a></li> <li><a href="#">All packages</a></li> </ul> </div> <div id="filter"> <form action='<?php echo $_SERVER["PHP_SELF"]; ?>' method='get'> <fieldset> <legend>Filter packages</legend> <label for="what">Criteria: </label> <select name="what" id="what"> <optgroup label="Pakages"> <?php try { $db = new PDO ("mysql:dbname=" . MYBASE . ";host=" . MYHOST, MYUSER, MYPASS); $sql="SELECT DISTINCT CONCAT('%',SUBSTRING(name,1,1)) as init FROM rpm ORDER BY init"; $res=$db->query($sql); if ($res)while ($start = $res->fetchObject()) { printf("\t\t\t\t\t\t\t\t\t<option value=\"%s\" %s>Start with %s</option>\n", $start->init, ($what==$start->init ? " selected=\"selected\"" : ""), substr($start->init,1)); } else { echo "\t\t\t\t\t\t\t\t\t<option value=\"remi\">remi</option>\n"; } ?> </optgroup> <optgroup label="Owner"> <?php $sql="SELECT DISTINCT owner FROM acls ORDER BY owner"; $res=$db->query($sql); if ($res)while ($owner = $res->fetchObject()) { printf("\t\t\t\t\t\t\t\t\t<option value=\"%s\" %s>%s</option>\n", $owner->owner, ($what==$owner->owner ? " selected=\"selected\"" : ""), $owner->owner); } else { echo "\t\t\t\t\t\t\t\t\t<option value=\"remi\">remi</option>\n"; } ?> </optgroup> </select> <input type="submit" value="Filter" /> </fieldset> </form> </div> <?php $sql='SELECT MAX(stamp) AS stamp FROM repo'; $res=$db->query($sql); if ($res && $row=$res->fetchObject()) { printf("<p>Repositories last updated %s.</p>", date("r", $row->stamp)); } ?> <h1>Packages in Fedora</h1> <table id="list-packages"> <thead> <tr> <th>Package</th> <th>Owner(s)</th> <?php $repos = listRepos($db); $repos_k = array_keys($repos); foreach ( $repos_k as $r ) { ?> <th><?php echo $r; ?></th> <?php } ?> </tr> </thead> <tbody> <?php if ($what) Report($db, $repos); else echo "<tr><td colspan=\"" . (count($repos) + 3) . "\"><h2>Choose a criteria from the filter menu</h2></td></tr>"; //echo "<pre>"; print_r($rpms); echo "</pre>"; } catch(PDOException $e) { ?> <tr> <td colspan="<?php echo count($repos_k) + 3; ?>"> <?php printf("%s ERREUR : %s\n", date("r"), $e->getMessage()); ?> </td> </tr> <?php } ?> </tbody> </table> <ul id="legend"> <li>Legend: </li> <li><strong>Upstream</strong>: bold if stable. </li> <li><strong>Repo</strong>: bold for latest release.</li> <li class='check'>Lastest released (stable if exists)</li> <li class='info'>Lastest in testing</li> <li class='attn'>Lastest not available</li> </ul> </div><!-- /fedora-content --> <?php include '_footer.php'; ?> </div> </body> </html>