210 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php echo '<?xml version="1.0" encoding="iso-8859-1"?>' ?>
 | 
						|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
 | 
						|
  <head>
 | 
						|
    <title>euscan</title>
 | 
						|
    <meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />
 | 
						|
    <link rel="stylesheet" type="text/css" href="/style.css" media="screen" title="Normal" />
 | 
						|
    <script src="sorttable.js"></script>
 | 
						|
  </head>
 | 
						|
  <body>
 | 
						|
    <div id="header">
 | 
						|
      <h1>euscan</h1>
 | 
						|
    </div>
 | 
						|
    <div id="content">
 | 
						|
<?php
 | 
						|
$db = new SQLite3('euscan.db');
 | 
						|
 | 
						|
$act = isset($_GET['act']) ? $_GET['act'] : "home";
 | 
						|
$cat = isset($_GET['cat']) ? $_GET['cat'] : '';
 | 
						|
$pkg = isset($_GET['pkg']) ? $_GET['pkg'] : '';
 | 
						|
$herd = isset($_GET['herd']) ? $_GET['herd'] : '';
 | 
						|
$mtnr = isset($_GET['maintainer']) ? $_GET['maintainer'] : '';
 | 
						|
 | 
						|
if ($act == "home") {
 | 
						|
 | 
						|
} else if ($act == "categories") {
 | 
						|
  $sql = "SELECT category, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
  $sql.= " FROM packages JOIN versions ON package_id = packages.id";
 | 
						|
  $sql.= " GROUP BY category";
 | 
						|
 | 
						|
  $results = $db->query($sql);
 | 
						|
 | 
						|
  echo "<table class=\"sortable\"><tr><th>Category</th><th>Ebuilds</th><th>New versions</th></tr>";
 | 
						|
  while ($row = $results->fetchArray()) {
 | 
						|
    $new = $row['versions'] - $row['ebuilds'];
 | 
						|
    $color = $new == 0 ? 'green' : 'red';
 | 
						|
    echo "<tr>";
 | 
						|
    echo "<td><a href=\"?act=packages&cat={$row['category']}\">{$row['category']}</a></td>";
 | 
						|
    echo "<td>{$row['ebuilds']}</td>";
 | 
						|
    echo "<td style=\"color: $color\">$new</td>";
 | 
						|
    echo "</tr>";
 | 
						|
  }
 | 
						|
  echo "</table>";
 | 
						|
} else if ($act == "herds") {
 | 
						|
  $sql = "SELECT herd, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
  $sql.= " FROM herds";
 | 
						|
  $sql.= " JOIN package_herds ON herds.id = herd_id";
 | 
						|
  $sql.= " JOIN packages ON package_herds.package_id = packages.id";
 | 
						|
  $sql.= " JOIN versions ON versions.package_id = packages.id";
 | 
						|
  $sql.= " GROUP BY herd";
 | 
						|
 | 
						|
  $results = $db->query($sql);
 | 
						|
 | 
						|
  echo "<table class=\"sortable\"><tr><th>Herd</th><th>Ebuilds</th><th>New versions</th></tr>";
 | 
						|
  while ($row = $results->fetchArray()) {
 | 
						|
    $new = $row['versions'] - $row['ebuilds'];
 | 
						|
    $color = $new == 0 ? 'green' : 'red';
 | 
						|
    echo "<tr>";
 | 
						|
    echo "<td><a href=\"?act=packages&herd={$row['herd']}\">{$row['herd']}</a></td>";
 | 
						|
    echo "<td>{$row['ebuilds']}</td>";
 | 
						|
    echo "<td style=\"color: $color\">$new</td>";
 | 
						|
    echo "</tr>";
 | 
						|
  }
 | 
						|
  echo "</table>";
 | 
						|
} else if ($act == "maintainers") {
 | 
						|
  $sql = "SELECT maintainer, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
  $sql.= " FROM maintainers";
 | 
						|
  $sql.= " JOIN package_maintainers ON maintainers.id = maintainer_id";
 | 
						|
  $sql.= " JOIN packages ON package_maintainers.package_id = packages.id";
 | 
						|
  $sql.= " JOIN versions ON versions.package_id = packages.id";
 | 
						|
  $sql.= " GROUP BY maintainer";
 | 
						|
 | 
						|
  $results = $db->query($sql);
 | 
						|
 | 
						|
  echo "<table class=\"sortable\"><tr><th>Maintainer</th><th>Ebuilds</th><th>New versions</th></tr>";
 | 
						|
  while ($row = $results->fetchArray()) {
 | 
						|
    $new = $row['versions'] - $row['ebuilds'];
 | 
						|
    $color = $new == 0 ? 'green' : 'red';
 | 
						|
    echo "<tr>";
 | 
						|
    echo "<td><a href=\"?act=packages&maintainer={$row['maintainer']}\">{$row['maintainer']}</a></td>";
 | 
						|
    echo "<td>{$row['ebuilds']}</td>";
 | 
						|
    echo "<td style=\"color: $color\">$new</td>";
 | 
						|
    echo "</tr>";
 | 
						|
  }
 | 
						|
  echo "</table>";
 | 
						|
} else if ($act == "categories") {
 | 
						|
  $sql = "SELECT category, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
  $sql.= " FROM packages JOIN versions ON package_id = packages.id";
 | 
						|
  $sql.= " GROUP BY category";
 | 
						|
 | 
						|
  $results = $db->query($sql);
 | 
						|
 | 
						|
  echo "<table class=\"sortable\"><tr><th>Category</th><th>Ebuilds</th><th>New versions</th></tr>";
 | 
						|
  while ($row = $results->fetchArray()) {
 | 
						|
    $new = $row['versions'] - $row['ebuilds'];
 | 
						|
    $color = $new == 0 ? 'green' : 'red';
 | 
						|
    echo "<tr>";
 | 
						|
    echo "<td><a href=\"?act=packages&cat={$row['category']}\">{$row['category']}</a></td>";
 | 
						|
    echo "<td>{$row['ebuilds']}</td>";
 | 
						|
    echo "<td style=\"color: $color\">$new</td>";
 | 
						|
    echo "</tr>";
 | 
						|
  }
 | 
						|
  echo "</table>";
 | 
						|
} else if ($act == 'packages') {
 | 
						|
  $db_cat = $db->escapeString($cat);
 | 
						|
  $db_herd = $db->escapeString($herd);
 | 
						|
  $db_mtnr = $db->escapeString($mtnr);
 | 
						|
 | 
						|
  if ($db_cat) {
 | 
						|
    $sql = "SELECT category, package, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
    $sql.= " FROM packages JOIN versions ON package_id = packages.id";
 | 
						|
    $sql.= " WHERE category = '$db_cat'";
 | 
						|
    $sql.= " GROUP BY category, package";
 | 
						|
  } else if ($db_herd) {
 | 
						|
    $sql = "SELECT category, package, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
    $sql.= " FROM herds";
 | 
						|
    $sql.= " JOIN package_herds ON herds.id = herd_id";
 | 
						|
    $sql.= " JOIN packages ON package_herds.package_id = packages.id";
 | 
						|
    $sql.= " JOIN versions ON versions.package_id = packages.id";
 | 
						|
    $sql.= " WHERE herd LIKE '$db_herd'";
 | 
						|
    $sql.= " GROUP BY category, package";
 | 
						|
  } else if ($db_mtnr) {
 | 
						|
    $sql = "SELECT category, package, COUNT(version) as versions, SUM(packaged) as ebuilds";
 | 
						|
    $sql.= " FROM maintainers";
 | 
						|
    $sql.= " JOIN package_maintainers ON maintainers.id = maintainer_id";
 | 
						|
    $sql.= " JOIN packages ON package_maintainers.package_id = packages.id";
 | 
						|
    $sql.= " JOIN versions ON versions.package_id = packages.id";
 | 
						|
    $sql.= " WHERE maintainer LIKE '%$db_mtnr%'";
 | 
						|
    $sql.= " GROUP BY category, package";
 | 
						|
  }
 | 
						|
 | 
						|
  if ($sql) {
 | 
						|
    $results = $db->query($sql);
 | 
						|
 | 
						|
    echo "<table class=\"sortable\"><tr><th>Category</th><th>Ebuilds</th><th>New versions</th></tr>";
 | 
						|
    while ($row = $results->fetchArray()) {
 | 
						|
      $new = $row['versions'] - $row['ebuilds'];
 | 
						|
      $catpkg = "{$row['category']}/{$row['package']}";
 | 
						|
      $color = $new == 0 ? 'green' : 'red';
 | 
						|
      echo "<tr>";
 | 
						|
      echo "<td><a href=\"?act=package&pkg=$catpkg\">$catpkg</td>";
 | 
						|
      echo "<td>{$row['ebuilds']}</td>";
 | 
						|
      echo "<td style=\"color: $color\">$new</td>";
 | 
						|
      echo "</tr>";
 | 
						|
    }
 | 
						|
    echo "</table>";
 | 
						|
  }
 | 
						|
} else if ($act == 'package') {
 | 
						|
  $pkg = explode("/", $pkg);
 | 
						|
 | 
						|
  if (count($pkg) == 2) {
 | 
						|
    $cat = $db->escapeString($pkg[0]);
 | 
						|
    $pkg = $db->escapeString($pkg[1]);
 | 
						|
  } else {
 | 
						|
    $cat = $pkg = "";
 | 
						|
  }
 | 
						|
 | 
						|
  $sql = "SELECT * FROM packages WHERE category = '$cat' AND package = '$pkg'";
 | 
						|
  $infos = $db->query($sql);
 | 
						|
  $infos = $infos->fetchArray();
 | 
						|
 | 
						|
  if ($infos) {
 | 
						|
    echo "<h3>{$infos['category']}/${infos['package']}</h3>";
 | 
						|
 | 
						|
    $sql = "SELECT * FROM versions WHERE package_id = ${infos['id']} AND packaged = 1";
 | 
						|
    $results = $db->query($sql);
 | 
						|
 | 
						|
    echo '<h3>Packaged versions:</h3><ul>';
 | 
						|
    while ($version = $results->fetchArray()) {
 | 
						|
      echo "<li>${version['version']}-${version['revision']}:${version['slot']}</li>";
 | 
						|
    }
 | 
						|
 | 
						|
    $sql = "SELECT * FROM versions ";
 | 
						|
    $sql.= "JOIN upstream_urls ON versions.id = version_id ";
 | 
						|
    $sql.= "WHERE package_id = ${infos['id']} AND packaged = 0";
 | 
						|
    $results = $db->query($sql);
 | 
						|
 | 
						|
    echo '</ul>';
 | 
						|
    echo '<h3>Upstream versions:</h3><ul>';
 | 
						|
 | 
						|
    while ($version = $results->fetchArray()) {
 | 
						|
      echo "<li>${version['version']} - ${version['url']}</li>";
 | 
						|
    }
 | 
						|
 | 
						|
    echo '</ul>';
 | 
						|
  } else {
 | 
						|
    echo '<div class="error">Invalid package</div>';
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
?>
 | 
						|
    </div>
 | 
						|
    <div id="menus">
 | 
						|
      <div id="menu">
 | 
						|
	<ul>
 | 
						|
	  <li><a href="?act=categories">Categories</a></li>
 | 
						|
	  <li><a href="?act=herds">Herds</a></li>
 | 
						|
	  <li><a href="?act=maintainers">Maintainers</a></li>
 | 
						|
	</div>
 | 
						|
      </div>
 | 
						|
    </div>
 | 
						|
    <div id="footer">
 | 
						|
      Powered by:
 | 
						|
      <a href="http://kernel.org"><img  src="/linux.png" alt="Linux" /></a>
 | 
						|
      <a href="http://gentoo.org"><img  src="/gentoo.png" alt="Gentoo Linux" /></a>
 | 
						|
      -
 | 
						|
      Copyright (C) 2011 <strong>Corentin Chary</strong>
 | 
						|
    </div>
 | 
						|
  </body>
 | 
						|
</html>
 |