| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2014 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 committer information from the Foundation database. The information | |
| * includes the name, committer id, email addresses, and project affiliations. | |
| * | |
| * e.g. http://www.eclipse.org/projects/export/committers.json.php | |
| * | |
| * 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/common.php"); | |
| require_once(dirname(__FILE__) . "/../classes/debug.php"); | |
| mustBeEclipseFoundationCaller(); | |
| $data = array(); | |
| $sql = "SELECT | |
| p.PersonId as id, p.FName, p.LName, p.Email, pe.Email as secondary, p.comments, | |
| pp.ProjectId, pp.ActiveDate, pp.InactiveDate, | |
| o.OrganizationId, o.Name1 as OrganizationName | |
| from People as p | |
| join PeopleProjects as pp on p.PersonId = pp.PersonId and pp.Relation='CM' | |
| left join PeopleEmails as pe on p.PersonId=pe.PersonId | |
| left join OrganizationContacts as oc on p.PersonId = oc.PersonId and oc.Relation='EMPLY' | |
| left join Organizations as o on oc.OrganizationId=o.OrganizationId"; | |
| $result = $App->foundation_sql($sql); | |
| function addEmail(&$committer, $email) { | |
| if (!$email) return; | |
| $email = utf8_encode($email); | |
| if (empty($committer['email'])) $committer['email'] = array(); | |
| if (in_array($email, $committer['email'])) return; | |
| $committer['email'][] = $email; | |
| } | |
| while ($row=mysql_fetch_assoc($result)) { | |
| $id = utf8_encode($row['id']); | |
| $data['committers'][$id]['id'] = $id; | |
| $data['committers'][$id]['first'] = utf8_encode($row['FName']); | |
| $data['committers'][$id]['last'] = utf8_encode($row['LName']); | |
| $data['committers'][$id]['primary'] = $row['Email']; | |
| addEmail($data['committers'][$id], $row['Email']); | |
| addEmail($data['committers'][$id], $row['secondary']); | |
| if (preg_match_all('/alt-email:(\S+)/i', $row['comments'], $matches)) { | |
| foreach($matches[1] as $email) { | |
| addEmail($data['committers'][$id], $email); | |
| } | |
| } | |
| $data['committers'][$id]['projects'][$row['ProjectId']] = array( | |
| 'active' => $row['ActiveDate'], | |
| 'inactive' => isset($row['InactiveDate']) ? $row['InactiveDate'] : null | |
| ); | |
| // TODO Include start/end time | |
| if (isset($row['OrganizationId'])) { | |
| $data['committers'][$id]['affiliations'][$row['OrganizationId']] = array( | |
| 'name' => $row['OrganizationName'], | |
| 'active' => '2000-01-01', | |
| 'inactive' => null | |
| ); | |
| $data['organizations'][$row['OrganizationId']] = $row['OrganizationName']; | |
| } | |
| } | |
| echo json_encode($data); | |
| ?> |