| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2010 Eclipse Foundation and others. | |
| * All rights reserved. This program and the accompanying materials | |
| * are made available under the terms of the Eclipse Public License v1.0 | |
| * which accompanies this distribution, and is available at | |
| * http://www.eclipse.org/legal/epl-v10.html | |
| * | |
| * Contributors: | |
| * Wayne Beaton - initial API and implementation | |
| *******************************************************************************/ | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php"); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/debug.php"); | |
| trace_file_info(__FILE__); | |
| 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(); | |
| login_committer(); | |
| include($App->getProjectCommon()); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/CQ.class.php"); | |
| $smallIconDir = "http://dev.eclipse.org/small_icons"; | |
| $projectid = $App->getHttpParameter('id'); | |
| if (!is_valid_project_name($projectid)) { | |
| $projectid = null; | |
| } | |
| $bundles = $App->getHttpParameter('bundles'); | |
| $bundles = htmlentities($bundles); | |
| $split = preg_split('/\\s/', $bundles); | |
| $eclipse_bundles = array(); | |
| $project_bundles = array(); | |
| $non_project_bundles = array(); | |
| $other_bundles = array(); | |
| foreach($split as $bundle) { | |
| $bundle = htmlentities(trim($bundle)); | |
| if (!$bundle) continue; | |
| $name = end(explode('/', $bundle)); | |
| if (preg_match("/^org\\.eclipse\\./", $name)) { | |
| // TODO There are some bundles that do not match the naming scheme. | |
| $eclipse_bundles[] = $name; | |
| } else if ($cq = find_cq_for_bundle($name, $projectid)) { | |
| $project_bundles[$name] = $cq; | |
| } else if ($cqs = find_cqs_for_bundle($bundle)) { | |
| $non_project_bundles[$name] = $cqs; | |
| } else { | |
| $other_bundles[] = $name; | |
| } | |
| } | |
| /* | |
| * At this point, all the bundle names should be safe to output having | |
| * been processed through htmlentities. Additionally, the provided | |
| * projectid should also be safe as we have validated that it | |
| * conforms to the standard form. | |
| */ | |
| $bundles = array_merge($eclipse_bundles, array_keys($project_bundles), array_keys($non_project_bundles), $other_bundles); | |
| ob_start(); | |
| $pageKeywords = ""; | |
| $pageTitle = $projectid ? "Bundle/CQ Report for $projectid" : "Bundle/CQ Scanner"; | |
| $pageAuthor = "Wayne Beaton"; | |
| ?> | |
| <div id="midcolumn"> | |
| <div class="homeitem"> | |
| <h1><?= $pageTitle ?></h1> | |
| <p>This tool will compare the contents of your project's downloads | |
| against the information provided in the contribution questionnaires (CQs) | |
| that your project has submitted. The success of this tool is limited by | |
| the information that we have available. We know, for example, the file | |
| patterns for many JAR'd bundles corresponding to CQs; we do not know | |
| them all (though we are filling in the gaps regularly). This tool | |
| should give you some sense for how accurate your automated IP Logs | |
| are and help you to highlight problem areas.</p> | |
| <p>Enter the id of your project, and paste the file names of the bundles that you'd like to check. | |
| The bundles may contain path information.</p> | |
| <p>Consider pasting a listing of the 'plugins' directory from your update site, or the | |
| output from <code>zipinfo -1 [downloadable.zip]</code> (that's a 'one') for your project's download.</p> | |
| <form method="post"> | |
| <?php if (isset($_GET['trace'])) echo "<input type=\"hidden\" name=\"trace\">"; ?> | |
| <table border="0"> | |
| <tr><td valign="top">Project id:</td><td><input name="id" type="text" width="25" value="<?php echo $projectid; ?>"/></td></tr> | |
| <tr><td valign="top">Bundles:</td><td><textarea rows="10" cols="75" name="bundles"><?php echo implode("\n", $bundles); ?></textarea></td></tr> | |
| <tr><td colspan="2"><input type="submit"/></td></tr> | |
| </table> | |
| </form> | |
| <h3>Eclipse Bundles</h3> | |
| <p>Here we list the bundles created and owned by Eclipse projects.</p> | |
| <?php | |
| if (!$eclipse_bundles) { | |
| echo "<p>There is nothing to report.</p>"; | |
| } else { | |
| echo "<ul>"; | |
| foreach($eclipse_bundles as $bundle) { | |
| echo "<li>$bundle</li>"; | |
| } | |
| echo "</ul>"; | |
| } | |
| ?> | |
| <h3>Third-Party Bundles with CQs</h3> | |
| <p>We have CQs in our system for these bundles for your project. Any CQs that are | |
| <strike>crossed out</strike> are not approved (a future version of this script | |
| will categorize these CQs separately).</p> | |
| <?php | |
| if (!$project_bundles) { | |
| echo "<p>There is nothing to report.</p>"; | |
| } else { | |
| echo "<ul>"; | |
| foreach($project_bundles as $bundle => $cq) { | |
| $link = $cq->as_html(); | |
| if (!$cq->is_approved()) { | |
| $link = "<strike>$link</strike>"; | |
| } | |
| $project = $cq->project; | |
| echo "<li>$bundle $link ($project)</li>"; | |
| } | |
| echo "</ul>"; | |
| } | |
| ?> | |
| <h3>Third-Party Bundles without CQs</h3> | |
| <p>We have CQs in our system for these bundles, but we don't have an active CQ | |
| for your project. Perhaps these bundles have been inherited from an Eclipse project that | |
| you're packaging with your distribution. Or, maybe you need to create a piggyback | |
| CQ for your project. Remember that version numbers are significant (i.e. you need to | |
| have a CQ for the specific version of the third-party library you're distributing).</p> | |
| <?php | |
| if (!$non_project_bundles) { | |
| echo "<p>There is nothing to report.</p>"; | |
| } else { | |
| echo "<ul>"; | |
| foreach($non_project_bundles as $bundle => $cqs) { | |
| echo "<li><strong>$bundle</strong> might be from one of:<ul>"; | |
| foreach ($cqs as $cq) { | |
| $link = $cq->as_html(); | |
| if (!$cq->is_approved()) { | |
| $link = "<strike>$link</strike>"; | |
| } | |
| echo "<li>$link ($cq->project)</li>"; | |
| } | |
| echo "</ul></li>"; | |
| } | |
| echo "</ul>"; | |
| } | |
| ?> | |
| <h3>Other Bundles</h3> | |
| <p>We're not sure what's going on with these bundles.</p> | |
| <?php | |
| if (!$other_bundles) { | |
| echo "<p>There is nothing to report.</p>"; | |
| } else { | |
| echo "<ul>"; | |
| foreach($other_bundles as $bundle) { | |
| echo "<li>$bundle</li>"; | |
| } | |
| echo "</ul>"; | |
| } | |
| ?> | |
| <?php echo get_trace_html(); ?> | |
| </div> | |
| </div> | |
| <?php | |
| $html = ob_get_contents(); | |
| ob_end_clean(); | |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
| ?> |