<?php $what=(isset($_GET["what"]) ? $_GET["what"] : "%fedora"); $type=(isset($_GET["type"]) ? $_GET["type"] : "pecl"); 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, $type, $repos) { global $what; $i=0; $resup=$db->query("SELECT * FROM upstream WHERE type='$type' ORDER BY name"); if ($resup) while ($upstream = $resup->fetchObject()) { $rpmname = $upstream->name; $sql2="SELECT DISTINCT owner FROM acls WHERE name = '$rpmname'"; $res2=$db->query($sql2); $owners=array(); if ($res2) while ($owner= $res2->fetchObject()) $owners[] = $owner->owner; $sql = "SELECT * FROM rpm WHERE name = '$rpmname'"; $res=$db->query($sql); $rpm = ($res ? $res->fetchObject() : false); switch ($what) { case '%fedora': $display = ($rpm !== false); break; case '%stable': $display = !empty($upstream->stable); break; case '%all': $display = true; break; default: // owner $display = (array_search($what, $owners) !== false); break; } if ($display) { if ($rpm) { $dispname = "<a href=\"zoom.php?rpm=" . $rpmname . "\" title=\"" . htmlentities($rpm->summary) . "\">$rpmname</a>"; } else { $dispname = $rpmname; } $rpms=array(); if ($rpm) do { $rpms[$rpm->repo_main."-".$rpm->repo_sub]=$rpm; } while ($rpm = $res->fetchObject()); $dispowner=""; foreach ($owners as $owner) { if ($dispowner) $dispowner .= "<br/>"; $dispowner .= sprintf ("<a href=\"%s?type=$type&what=%s\">%s</a>", $_SERVER["PHP_SELF"], $owner, $owner); } printf ("<tr class=\"%s\">\n\t<td>%s<br/><small>%s</small></td>\n\t<td>%s</td>\n\t<td>%s%s</td>\n", ($i%2 ? "odd" : "even"), $dispname, ($upstream->channel != $upstream->type ? "channel: " . $upstream->channel : ""), $dispowner, ($upstream->stable ? "<strong>".$upstream->stable."</strong><br />" : " "), ($upstream->unstable && (!$upstream->stable || $upstream->stable!=$upstream->unstable) ? $upstream->unstable." <small>(".$upstream->state.")</small>" : " ")); $verup = strtolower($upstream->stable ? $upstream->stable : $upstream->unstable); foreach($repos as $repomain) { $display=""; $class=""; foreach ($repomain as $repo) { if (isset($rpms[$repo->main."-".$repo->sub])) { $rpm=$rpms[$repo->main."-".$repo->sub]; $verpm=$rpm->ver; if (preg_match("/\.((beta|RC)\d*)\./i", $rpm->rel, $res)) { $verpm .= strtolower($res[1]); } 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); } if ($verup==$verpm) $class="check"; break; case "": $display .= sprintf("<strong>%s</strong>-%s<br/>", $rpm->ver, $rpm->rel); if ($verup==$verpm) $class="check"; break; case "updates": $display .= sprintf("<strong>%s</strong>-%s <small>(updates)</small><br/>", $rpm->ver, $rpm->rel); if ($verup==$verpm) $class="check"; break; case "testing": $display .= sprintf("%s-%s <small>(testing)</small><br/>", $rpm->ver, $rpm->rel); if ($verup==$verpm) $class="info"; break; } } // RPM exists } // sub repo if ($display && empty($class)) $class="attn"; if ($display) { printf("\t<td class=\"%s\">%s</td>\n", $class, $display); } else { echo "\t<td> </td>\n"; } } // mainrepo echo "</tr>\n"; $i++; } } // each $unstable echo "<tr id=\"count_found\"><td colspan=\"" . (count(array_keys($repos)) + 3) . "\">$i packages found</td></tr>\n"; } ?> <!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><?php echo $type; ?> extensions 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'; ?> <!-- content BEGIN --> <div id="fedora-content"> <div id="ariane"> <p>You are here: </p> <ul> <li><a href="./">Reports home</a></li> <li><a href="#"><?php echo strtoupper($type) . ' extensions'; ?></a></li> </ul> </div> <div id="filter"> <form action="rpm.php" method="get"> <fieldset> <legend>Filter <?php echo strtoupper($type); ?> packages</legend> <input type="hidden" name='type' value="<?php echo $type; ?>" /> <label for="what">Criteria: </label> <select name="what" id="what"> <optgroup label="Pakages"> <option value="%fedora"<?php if ($what=='%fedora') echo " selected=\"selected\""; ?>>In fedora</option> <option value="%stable"<?php if ($what=='%stable') echo " selected=\"selected\""; ?>>All stable</option> <option value="%all"<?php if ($what=='%all') echo " selected=\"selected\""; ?>>All</option> </optgroup> <optgroup label="Owner"> <?php try { switch ($type) { case "pecl": $filter = "WHERE name LIKE 'php-pecl-%' "; break; case "pear": $filter = "WHERE name LIKE 'php-%' "; break; case "R": $filter = "WHERE name LIKE 'R-%' "; break; default: $filter = ""; } $db = new PDO ("mysql:dbname=" . MYBASE . ";host=" . MYHOST, MYUSER, MYPASS); $sql="SELECT DISTINCT owner FROM acls $filter 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><?php echo strtoupper($type). ' extensions in Fedora'; ?></h1> <table id="list-packages"> <thead> <tr> <th>Package</th> <th>Owner(s)</th> <th>Upstream</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 Report($db, $type, $repos); } 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>