blob: 6c0abb9cec423826a43586736949280ede0da3f4 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2010, 2017 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which available at http://www.eclipse.org/legal/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");
require_once(dirname(__FILE__) . "/../classes/IPZilla.class.inc");
require_once(dirname(__FILE__) . "/../classes/common.php");
require_once(dirname(__FILE__) . "/../classes/debug.php");
$App = new App();
$Nav = new Nav();
$Menu = new Menu();
mustBeCommitter();
include($App->getProjectCommon());
// Preload all of the active projects to speed things up a bit.
$projects = Project::getActiveProjects();
function getProjectLink($id) {
global $projects;
if (isset($projects[$id])) {
$project = $projects[$id];
$url = $project->getUrl();
$name = $project->getFormalName();
} else {
$url = "https://projects.eclipse.org/projects/{$id}";
$name = $id;
}
return "<a href=\"{$url}\">{$name}</a>";
}
$ipzilla = IPZilla::getInstance();
function display_cq($cq) {
if (!$cq->isApproved()) return;
echo "<div class=\"cq\">";
if ($cq->isProjectCode()) {
$icon = 'eclipse.gif';
$title = 'An EPL-licensed contribution to an Eclipse project';
} elseif ($cq->isThirdParty()) {
$icon = 'library.png';
$title = 'A third-party library';
} else {
return;
}
$description = htmlentities($cq->getDescription());
$name = htmlentities($cq->getName());
$version = htmlentities($cq->getVersion());
$header = $name;
if ($version) $header = "$header $version";
echo "<h4 id=\"{$cq->getId()}\"><img src=\"/projects/images/$icon\" title=\"$title\"></img>
<a href=\"https://dev.eclipse.org/ipzilla/show_bug.cgi?id={$cq->getId()}\">CQ&nbsp;{$cq->getId()}</a>
$header</h4><p>$description<p>";
echo "<div class=\"cq-info\">";
echo "<p>Name: {$cq->getName()}</p>";
echo "<p>Version: {$cq->getVersion()}</p>";
echo "<p>Due Diligence Type: {$cq->getDueDiligenceType()}</p>";
echo "<p>Keywords: {$cq->getKeywords()}</p>";
echo "<p>License(s): {$cq->getLicenses()}</p>";
echo "<p>SPDX: {$cq->getSPDX()}</p>";
$link = getProjectLink($cq->getProjectId());
echo "<p>Created by: {$link}</p>";
displayPiggybacks($cq);
displayFilePatterns($cq);
displayMavenPatterns($cq);
displayRelated($cq);
echo "</div>";
echo "</div>";
}
function displayFilePatterns($cq) {
if ($cq->getFilePatterns()) {
echo "<p>File patterns:</p>";
echo "<ul>";
foreach($cq->getFilePatterns() as $pattern => $regex) {
echo "<li>$pattern</li>";
}
echo "</ul>";
}
}
function displayMavenPatterns($cq) {
if ($patterns = $cq->getMvnPatterns()) {
echo "<p>Maven patterns:</p>";
echo "<ul>";
foreach($patterns as $pattern) {
echo "<li>$pattern</li>";
}
echo "</ul>";
}
}
function displayPiggybacks($cq) {
if ($piggybacks = $cq->getPiggybacks()) {
echo "<p>Also used by:</p>";
echo "<ul>";
foreach($piggybacks as $piggyback) {
$link = getProjectLink($piggyback->getProjectId());
echo "<li>{$link} (<a href=\"https://dev.eclipse.org/ipzilla/show_bug.cgi?id={$piggyback->getId()}\">{$piggyback->getId()}</a>)</li>";
}
echo "</ul>";
}
}
function displayRelated($cq) {
if ($related = $cq->getRelatedCqs()) {
usort($related, 'compareCqsBySemanticVersion');
echo "<p>See also:</p>";
echo "<ul>";
foreach($related as $each){
echo "<li><a href=\"#{$each->getId()}\">{$each->getId()}</a> {$each->getName()} {$each->getVersion()}</li>";
}
echo "</ul>";
}
}
function compareCqsBySemanticVersion($a, $b) {
return compareSemanticVersion($a->getVersion(), $b->getVersion());
}
ob_start();
$pageKeywords = "";
$pageTitle = "An Overview of Contribution Questionnaires";
$pageAuthor = "Wayne Beaton";
?>
<div id="midcolumn">
<div class="homeitem">
<h1><?= $pageTitle ?></h1>
<p>This page display information about contribution questionnaires (CQs),
including the hierarchical relationship of the various &quot;piggy-back&quot;.
Where known, the file patterns for any JAR'd bundles associated with
the CQs are indicated.</p>
<style>
.cq table {border-width:0;margin-top:1em;margin-bottom:5px}
.cq tr {vertical-align:top}
.cq p {margin:0}
.cq-info {margin-left:2em}
.cq-info p ul {margin-top:0px;margin-bottom:}
.cq-info li {margin:0}
</style>
<?php
$ipzilla->rootCqsDo(function($cq) {
display_cq($cq);
});
?>
</div>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>