<?php
/*******************************************************************************
 * Copyright (c) 2011 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 ********************************************************************************/
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");

function projectsAsArray($projects) {
	$all = array();
	foreach($projects as $project) {
		$all[$project->getId()] = projectAsArray($project);
	}
	return $all;
}

function projectAsArray(Project $project) {
	return array(
		'id' => $project->getId(),
		'name' => $project->getFormalName(),
		'shortname' => $project->getShortName(),
		'projecturl' => $project->getUrl(),
		'dataurl' => $project->getDataUrl(),
		'licenses' => $project->getLicenses(),
		'phase' => $project->getProjectPhase(),
 		'children' => projectsAsArray($project->getChildren())
	);
}
?>