blob: c2cf5bbe5b31d974205ed258784b6e37595530f4 [file] [log] [blame]
<?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' => normalizeHttpUrl($project->getProjectUrl()),
'description' => preg_replace('/\s+/', ' ', $project->getDescription()),
'scope' => preg_replace('/\s+/', ' ', $project->getScope()),
'licenses' => $project->getLicenses(),
'phase' => $project->getProjectPhase(),
'planurl' => normalizeHttpUrl($project->getPlanUrl()),
'bugzillaproduct' => $project->getBugzillaProduct(),
'proposalurl' => ($proposal = $project->getProposal()) ? $proposal->getProposalUrl() : null,
'wikiurl' => $project->getWikiUrl(),
'documentationurl' => normalizeHttpUrl($project->getDocumentationUrl()),
'downloadsurl' => normalizeHttpUrl($project->getDownloadsUrl()),
'gettingstartedurl' => normalizeHttpUrl($project->getGettingStartedUrl()),
'sourcerepositories' => sourceRepositoriesAsArray($project),
'mailinglists' => getMailingListsAsArray($project),
'forums' => getForumsAsArray($project),
'releases' => releasesAsArray($project),
'reviews' => reviewsAsArray($project),
'children' => projectsAsArray($project->getChildren())
);
}
function getMailingListsAsArray(&$project) {
$main = null;
$lists = array();
foreach($project->getMailingLists() as $list) {
if (!$list->getName()) continue;
$item = array(
'email' => $list->getName(),
'description' => $list->getDescription(),
'type' => $list->getType()
);
if (($list->getType() == 'main') && empty($main))
$main = $item;
else
$lists[] = $item;
}
if (empty($main) && count($lists)) {
$main = $lists[0];
unset($lists[0]);
}
return array(
'devlist' => $main,
'other' => $lists
);
}
function getForumsAsArray(Project &$project) {
$main = null;
$forums = array();
foreach($project->getNewsgroups() as $group) {
if (!$group->getName()) continue;
$forums[] = array(
'name' => $group->getName(),
'description' => $group->getDescription(),
'type' => $group->getType(),
'url' => 'http://www.eclipse.org/forums/' . $group->getName()
);
}
return $forums;
}
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'] = normalizeHttpUrl($release->getNoteworthyUrl());
$values['planurl'] = normalizeHttpUrl($release->getPlan());
addPlanItems($values, $release->getPlan());
return $values;
}
function reviewsAsArray($project) {
$reviews = array();
foreach($project->getReviews() as $review) {
$reviews[] = reviewAsArray($review);
}
return $reviews;
}
/**
*
* @param Review $review
* @return multitype:string
*/
function reviewAsArray($review) {
$values = array();
$values['name'] = $review->getReviewName();
$values['date'] = date('Y-m-d', $review->getReviewDate());
$values['slides'] = normalizeHttpUrl($review->getSlidesUrl());
$values['iplog'] = normalizeHttpUrl($review->getIplogUrl());
$values['bug'] = $review->getBugNumber();
$values['creation'] = $review->isCreation();
$values['release'] = $review->isRelease();
$values['graduation'] = $review->isGraduation();
$values['restructure'] = $review->isRestructure();
$values['termination'] = $review->isTermination();
$values['successful'] = $review->isSuccessful();
$values['unsuccessful'] = $review->isUnsuccessful();
$values['withdrawn'] = $review->isWithdrawn();
return $values;
}
function addPlanItems(&$values, $planUrl) {
if (!$planUrl) return;
if (!preg_match('/\.xml$/', $planUrl)) return;
require_once(dirname(__FILE__).'/project-plan-parser.inc');
$plan = ProjectPlanParser::getPlanFromFile(dirname(__FILE__) . '/../../' . $planUrl);
if ($plan) $values['plan'] = $plan;
}
?>