blob: 1ca2159787d8c9ebb41ac77ca854e08126596a12 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2012 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
*******************************************************************************/
/*
* Export the release information for a single project, specified
* via the "id" parameter.
*
* e.g. http://www.eclipse.org/projects/export/releases.json.php?id=technology.woolsey
*
* INTERNAL USE ONLY: restricted to callers within the Eclipse Foundation.
*/
require_once(dirname(__FILE__) . "/../../eclipse.org-common/system/app.class.php");
$App = new App();
require_once(dirname(__FILE__) . "/../classes/Committer.class.php");
require_once(dirname(__FILE__) . "/../classes/common.php");
require_once(dirname(__FILE__) . "/../classes/debug.php");
mustBeEclipseFoundationCaller();
$people = array();
foreach (getCommitters() as $committer) {
if ($id = utf8_encode($committer->id)) {
if ($id == 'glyn') continue; // TODO Need better solution to prune bogus entries.
$people[$id]['first'] = utf8_encode($committer->firstName);
$people[$id]['last'] = utf8_encode($committer->lastName);
$people[$id]['email'] = utf8_encode($committer->email);
if ($organization = $committer->getOrganization())
$people[$id]['company'] = $organization->getSugarId();
foreach($committer->projectRelations as $role) {
$people[$id]['projects'][] = array(
'project' => $role->projectId,
'relation' => $role->relation,
'active' => date('Y-m-d', $role->activeDate),
'inactive' => $role->inactiveDate ? date('Y-m-d', $role->inactiveDate) : NULL
);
}
foreach($committer->getAltEmails() as $email) {
$people[$id]['alt-emails'][] = $email;
}
$people[$id]['addresses'] = $committer->getAllAddresses();
}
}
$sql = "SELECT
p.PersonId as id,
pd.DocumentId as docId, pd.Version as docVersion, pd.Comments as comments,
pd.EffectiveDate as docEffectiveDate, pd.ExpirationDate as docExpiryDate,
pd.ScannedDocumentBytes as docBytes,
sd.Type as type, sd.Description as description
FROM People as p
LEFT JOIN PeopleDocuments as pd on p.PersonId=pd.PersonId
JOIN SYS_Documents as sd on pd.DocumentId = sd.DocumentId";
$result = $App->foundation_sql($sql);
while ($row=mysql_fetch_assoc($result)) {
$people[utf8_encode($row['id'])]['documents'][$row['docId']] = array(
'id' => $row['docId'],
'type' => $row['type'],
'description' => $row['description'],
'effective' => normalizeDate($row['docEffectiveDate']),
'expiry' => normalizeDate($row['docExpiryDate']),
'comments' => utf8_encode($row['comments']),
'url' => getDocUrl($row)
);
}
$sql = "SELECT
p.PersonId as id, r.Relation as relation, r.EntryDate as date
FROM People as p
JOIN PeopleRelations as r on (p.PersonId = r.PersonId)";
$result = $App->foundation_sql($sql);
while ($row=mysql_fetch_assoc($result)) {
$people[utf8_encode($row['id'])]['projects'][] = array(
'project' => null,
'relation' => $row['relation'],
'active' => $row['date'],
'inactive' => NULL
);
}
function normalizeDate($date) {
if (!$date) return null;
if ($date == '0000-00-00') return null;
return date('Y-m-d', strtotime($date));
}
function getDocUrl($document) {
if (!$document['docBytes']) return null;
$personId = $document['id'];
$docId = $document['docId'];
$version = $document['docVersion'];
return "https://foundation.eclipse.org/sys/show_document.php?type=I&PersonID=$personId&DocumentID=$docId&Version=$version";
}
$count = $_GET['count'];
if (isset($count)) {
$people = array_slice($people, 0, $count);
}
echo json_encode($people);
?>