<?php
require_once 'BugzillaConnection.class.php'; 																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

$_FROM = $_GET['from'];
$_TO = $_GET['to'];
$_BUILD = $_GET['build'];
$_SINCE = $_GET['since'];
#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "Build Details: " . $_BUILD;
$pageKeywords	= "Type, page, keywords, here";
$pageAuthor		= "Eric Dillon";
# End: page-specific settings
#
$conn = new BugzillaConnection();
$productId = $conn->getTigerstripeProductID();

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<div id="maincontent">

<div id="midcolumn">
<h1>$pageTitle</h1>
<div class="homeitem3col">
	<h3>Fixed bugs<small> (since $_SINCE)</small></h3>
EOHTML;

$html = $html . "<ul>";
foreach( $conn->getAllFixedBugsBetween($_FROM, $_TO) as $bug) {
	$html = $html . "<li>" . $bug->render() . "</li>";
}
$html = $html . "</ul>";

$html = $html . <<<EOHTML
	</div>
	</div>
	<div id="rightcolumn">
 		<div class="sideitem">
		   <h6>Incubation</h6>
 		  <div align="center">
 		  	<a href="/projects/what-is-incubation.php">
 		  		<img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
 		  	</a>
 		  </div>
 		</div>
 	</div>
</div>
EOHTML;

# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);

?>