blob: d6e92f62f45880917eb22b334401f95d6d0a4c82 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2011 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 (Eclipse Foundation)- initial API and implementation
*******************************************************************************/
require_once(dirname(__FILE__) . "/../../eclipse.org-common/system/app.class.php");
$App = new App();
require_once(dirname(__FILE__) . "/../classes/common.php");
require_once(dirname(__FILE__) . "/../classes/debug.php");
require_once(dirname(__FILE__) . "/../classes/Project.class.php");
header("Content-type: application/json");
echo json_encode(projectsAsArray(getTopLevelProjects()));
echo get_trace_text();
function projectsAsArray($projects) {
$all = array();
foreach($projects as $project) {
$all[$project->getId()] = projectAsArray($project);
}
return $all;
}
function projectAsArray($project) {
return array(
'id' => $project->getId(),
'name' => $project->getName(),
'shortname' => $project->getShortName(),
'projecturl' => $project->getProjectUrl(),
'description' => $project->getDescription(),
'scope' => $project->getScope(),
'planurl' => $project->getPlanUrl(),
'bugzillaproduct' => $project->getBugzillaProduct(),
'wikiurl' => $project->getWikiUrl(),
'documentationurl' => normalizeHttpUrl($project->getDocumentationUrl()),
'downloadsurl' => normalizeHttpUrl($project->getDownloadsUrl()),
'gettingstartedurl' => normalizeHttpUrl($project->getGettingStartedUrl()),
'sourcerepositories' => sourceRepositoriesAsArray($project),
'releases' => releasesAsArray($project),
'children' => projectsAsArray($project->getChildren())
);
}
function sourceRepositoriesAsArray($project) {
$repositories = array();
foreach($project->getSourceRepositories() as $repository) {
$repositories[] = $repository->getPath();
}
return $repositories;
}
function releasesAsArray($project) {
$releases = array();
foreach($project->getReleases() as $release) {
$releases[] = releaseAsArray($release);
}
return $releases;
}
function releaseAsArray($release) {
$values = array();
$values['name'] = $release->getName();
$values['date'] = date('Y-m-d', $release->getDate());
$values['noteworthy'] = $release->getNoteworthyUrl();
$values['planurl'] = $release->getPlan();
addPlanItems($values, $release->getPlan());
return $values;
}
function addPlanItems(&$values, $planUrl) {
if (!$planUrl) return;
if (!preg_match('/\.xml$/', $planUrl)) return;
$file = dirname(__FILE__) . '/../../' . $planUrl;
//$xml = simplexml_load_file($file, 'SimpleXMLElement', null, 'http://www.eclipse.org/project/plan');
$xml = simplexml_load_file($file);
if (!$xml) return;
addPlanItem($values, 'introduction', $xml->introduction);
addPlanItem($values, 'deliverables', $xml->release_deliverables);
addPlanItem($values, 'milestones', $xml->release_milestones);
addPlanItem($values, 'environment', $xml->target_environments);
addPlanItem($values, 'internationalization', $xml->target_environments->internationalization);
addPlanItem($values, 'compatibility', $xml->compatibility_with_previous_releases);
addThemes($values, $xml->themes_and_priorities);
}
function addPlanItem(&$values, $name, $xml) {
if (!$xml) return;
$value = flattenHTML($xml);
if (!$value) return;
$values[$name] = $value;
}
function addThemes(&$values, &$xml) {
$themes = array();
foreach($xml->theme as $theme) {
$value = array();
$value['name'] = (string)$theme['name'];
$value['description'] = flattenHTML($theme->description);
$themes[] = $value;
}
if ($themes) $values['themes'] = $themes;
}
function flattenHTML($xml) {
if (!$xml) return;
$text = '';
foreach($xml->getNamespaces(true) as $namespace => $url) {
if (!preg_match('/html/', $url)) continue; // Ignore non-HTML namespaces
$value = $xml->children($namespace, true)->asXML();
$value = preg_replace('/(<\/?)\w+:/','$1',$value);
$text .= $value;
}
return $text;
}
?>