blob: 1628325a3cf5feeb6c36f790e9505ed29bddd1ff [file] [log] [blame]
<?php
// This PHP script reduces the project catalog report to a single project matching the id query parameter.
header('Content-type: application/xml');
// ini_set('display_errors', 'On');
// error_reporting(E_ALL | E_STRICT);
// Parse the report.
$xmlDoc = new DOMDocument();
$result = $xmlDoc->load("../marketplace-listings/marketplace.eclipse.org.setup");
if ($result === FALSE) {
http_response_code(404);
} else {
// The id to match.
$id = $_GET["id"];
$root = $xmlDoc->documentElement;
// Loop over the children.
$child = $root->firstChild;
while ($child != null) {
if ($child->nodeType == XML_ELEMENT_NODE) {
$name = $child->getAttribute("name");
$decodedName = urldecode($name);
// Also look for the marketplaceID for this listing.
$annotations = $child->getElementsByTagName("annotation");
$details = $annotations->item(0)->getElementsByTagName("detail");
$nodeID = null;
foreach ($details as $detail) {
if ($detail->getAttribute("key") == "marketplaceID") {
$value = $detail->getElementsByTagName("value")->item(0);
$nodeID = $detail->getElementsByTagName("value")->item(0)->nodeValue;
break;
}
}
// If the project name doesn't match and the its marketplaceID doesn't match, remove it and the following text node from the document.
if ($id != $decodedName && $id != $nodeID) {
$target = $child;
$child = $child->nextSibling;
$root->removeChild($target);
$target = $child;
$child = $child->nextSibling;
$root->removeChild($target);
continue;
}
}
$child = $child->nextSibling;
}
echo $xmlDoc->saveXML();
}
?>