blob: dbf71bef813c03c92a6e596f0e7433349d770c71 [file] [log] [blame]
<?php
/**
* Copyright (c) Eclipse Foundation and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
require_once dirname ( __FILE__ ) . '/../../eclipse.org-common/system/app.class.php';
require_once dirname ( __FILE__ ) . '/../../eclipse.org-common/system/nav.class.php';
require_once dirname ( __FILE__ ) . '/../../eclipse.org-common/system/menu.class.php';
$App = new App ();
$Nav = new Nav ();
$Menu = new Menu ();
include ($App->getProjectCommon ());
require_once dirname ( __FILE__ ) . '/../classes/Project.class.php';
require_once dirname ( __FILE__ ) . '/../classes/Release.class.inc';
require_once dirname ( __FILE__ ) . '/../classes/Review.class.inc';
require_once dirname ( __FILE__ ) . '/../classes/SpecificationWorkingGroup.class.inc';
require_once dirname ( __FILE__ ) . '/../classes/debug.php';
require_once dirname ( __FILE__ ) . '/../classes/database.inc';
$pageTitle = "Future Eclipse Project Releases";
$pageKeywords = "";
$pageAuthor = "Wayne Beaton";
/**
* Answers an array containing information about future releases.
* The array that gets returned maps review dates to a collection of
* releases that will be concluded on the date.
*
* @return array|Release
*/
function getFutureReleases() {
$releases = array();
foreach (Release::getFutureReleases() as $release) {
$releases[date('F Y', $release->getDate())][] = $release;
}
return $releases;
}
/**
* Write HTML describing the future releases.
*/
function dumpFutureReleases() {
foreach ( getFutureReleases () as $date => $releases ) {
echo "<h3>{$date}</h3>";
echo "<ul>";
foreach ( $releases as $release ) {
$tracking = "<a href=\"{$release->getUrl()}/tracking_bug\">[tracking bug]</a>";
echo "<li><a href=\"{$release->getUrl()}\">{$release->getName()}</a> ";
echo "<ul>";
echo "<li>Release date: " . date ( 'Y-m-d', $release->getDate () ) . "</li>";
$reviewRequired = false;
$project = Project::getProject($release->getId());
if ($spec = SpecificationWorkingGroup::getForProject($project)) {
echo "<li>This is a specification project</li>";
$reviewRequired = true;
}
if ($review = Review::getLastSuccessful($project)) {
echo "<li>Last successful review: <a href=\"{$review->getUrl()}\">" . date ('Y-m-d', $review->getDate()) . "</a></li>";
if ($release->getDate() - $review->getDate() > (365 * 24 * 60 * 60)) {
echo "<li>The last review was more than one year before</li>";
$reviewRequired = true;
}
} else {
echo " <li>No prior reviews</li>";
$reviewRequired = true;
}
if ($review = Review::getRecentOngoing($project)) {
echo "<li>Ongoing review: <a href=\"{$review->getUrl()}\">" . date ('Y-m-d', $review->getDate()) . "</a> {$tracking}</li>";
}
if ($reviewRequired) {
echo "<li><b>A release review is required</b> {$tracking}</li>";
} else {
echo "<li>A release review is not required.</li>";
}
dumpOpenCQs ( $release );
echo "</ul>";
echo "</li>";
}
echo "</ul>";
}
}
/**
* Write an HTML unordered list of all open CQs for the project
* that owns the release.
*
* @param Release $release
*/
function dumpOpenCQs(Release $release) {
/*
* Query IPZilla directly to get the list of open CQs
* associated with the release.
*/
$sql = '
select
b.bug_id as id, b.short_desc as title
from bugs as b
join components as c on b.component_id=c.id
where c.name=\'$id\'
and bug_status in (\'NEW\', \'REOPENED\')';
$rows = array();
query ( 'ipzilla', $sql, array ('$id' => $release->getId ()), function ($row) use (&$rows) {
$id = $row ['id'];
$title = $row ['title'];
$rows[] = "<li><a target=_blank href=\"https://dev.eclipse.org/ipzilla/show_bug.cgi?id=$id\">$id</a> $title</li>";
} );
if ($rows) {
echo "<li>Pending CQs:";
echo "<ul>";
foreach ($rows as $row) echo $row;
echo "</ul>";
echo "</li>";
}
}
ob_start ();
?>
<div id="maincontent">
<div id="midcolumn">
<h1><?=$pageTitle?></h1>
<p>
<strong>EXPERIMENTAL</strong>. This page shows a list of upcoming
releases and&mdash;where they exist&mdash;corresponding lists of open
intellectual property review requests (CQs). Note that the CQs are
associated with the projects, not with any particular release. This
is for informational purposes only.
</p>
<?php dumpFutureReleases(); ?>
</div>
</div>
<?php
$html = ob_get_contents ();
ob_end_clean ();
$App->generatePage ( $theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html );
?>