| <?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—where they exist—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 ); |
| ?> |