. * * @category Main * @package RPMPHP * * @author Remi Collet * @author Johan Cwiklinski * @copyright 2010 Remi Collet * @license http://www.gnu.org/licenses/agpl-3.0-standalone.html AGPL License 3.0 or (at your option) any later version * @link http://github.com/remicollet/rpmphp/ * @since The begining of times. */ require 'main.inc.php'; $what=(isset($_GET["what"]) ? $_GET["what"] : false); $ariane[] = array( 'url' => '#', 'text' => 'Packages in Fedora repositories' ); $smarty->assign('ariane', $ariane); $smarty->assign('what', $what); $smarty->assign('page_title', 'All packages in Fedora repositories'); /** * Retrieve packages informations * * @param Object $db A reference to the database * * @return array */ function report ($db) { global $what, $smarty; $packages = null; $repos = listRepos($db); $smarty->assign('repos', $repos); 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 "

SQL=$sql

"; $i=0; $res=$db->query($sql); if ($res) { while ($desc = $res->fetchObject()) { $package = null; $rpmname = $desc->name; $sql2="SELECT DISTINCT owner FROM acls WHERE name LIKE '$rpmname'"; $res2=$db->query($sql2); $dispowner=""; $owners=array(); if ( $res2 ) { while ($owner= $res2->fetchObject()) { $owners[] = $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()); $package['name'] = $rpmname; $package['description'] = $des; $package['owners'] = $owners; $versions = null; 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
", $rpm->ver, $rpm->rel ); } else { $display .= sprintf( "%s-%s
", $rpm->ver, $rpm->rel ); $class = ($rpm->ver == $maxver ? "check" : "attn"); } break; case "": $display .= sprintf( "%s-%s
", $rpm->ver, $rpm->rel ); break; case "updates": $display .= sprintf( "%s-%s (updates)
", $rpm->ver, $rpm->rel ); $class = ($rpm->ver == $maxver ? "check" : "attn"); break; case "testing": $display .= sprintf( "%s-%s (testing)
", $rpm->ver, $rpm->rel ); $class = ($rpm->ver == $maxver ? "info" : "attn"); break; } } // RPM exists } // sub repo $versions[] = array( 'class' => ($class && $maxver) ? $class : '', 'display' => $display ); $package['versions'] = $versions; } // mainrepo $i++; $packages[] = $package; } } // each Line } return $packages; } 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 ( $s = $res->fetchObject() ) { $starts_with[] = $s; } $smarty->assign('starts_with', $starts_with); } $sql="SELECT DISTINCT owner FROM acls ORDER BY owner"; $res=$db->query($sql); if ( $res ) { while ( $owner = $res->fetchObject() ) { $owners[] = $owner; } $smarty->assign('owners', $owners); } $sql='SELECT MAX(stamp) AS stamp FROM repo'; $res=$db->query($sql); if ($res && $row=$res->fetchObject()) { $smarty->assign('repositories_update', date("r", $row->stamp)); } $smarty->assign('packages', report($db)); } catch(PDOException $e) { $smarty->assign( 'error', sprintf("%s ERREUR : %s\n", date("r"), $e->getMessage()) ); } $page_content = $smarty->fetch('all.tpl'); $smarty->assign('page_content', $page_content); $smarty->display('main.tpl'); ?>