| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2017 Eclipse Foundation | |
| * | |
| * This program and the accompanying materials are made available under | |
| * the terms of the Eclipse Public License v2.0 which is available at | |
| * http://www.eclipse.org/legal/epl-2.0 | |
| *******************************************************************************/ | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . '/projects/classes/database.inc'); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . '/projects/classes/common.php'); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . '/projects/classes/debug.php'); | |
| mustBeEclipseFoundationCaller(); | |
| $comments = isset($_GET['comments']) && $_GET['comments']=='true'; | |
| $App = new App(); | |
| $sql = " | |
| select | |
| p.PersonId as id, | |
| p.FName as first, | |
| p.LName as last, | |
| p.Email as email, | |
| sd.Description as document, | |
| EffectiveDate as start, | |
| ExpirationDate as end, | |
| ScannedDocumentBLOB as json | |
| from People as p | |
| join PeopleDocuments as pd on p.PersonId=pd.PersonId | |
| join SYS_Documents as sd on pd.DocumentId=sd.DocumentId | |
| where sd.description in ('Eclipse Contributor Agreement', 'Contributor License Agreement') | |
| and pd.ScannedDocumentMime = 'application/json' | |
| "; | |
| $fp = fopen('php://output', 'w'); | |
| fputcsv($fp, array('id', 'first', 'last', 'email', 'document', 'start', 'end', 'legal', 'public', 'employer', 'email2')); | |
| query('foundation', $sql, array(), function($row) use (&$fp) { | |
| $cla = json_decode($row['json'], true); | |
| // It looks like some content is not being encoded properly and | |
| // json_decode is failing on newlines embedded in, e.g. the address | |
| // field. If decoding fails the first time, clean up whitespace | |
| // and try again. | |
| if (!$cla) $cla = json_decode(preg_replace('/[\r|\n]+/','\n',$row['json']), true); | |
| if ($cla) { | |
| fputcsv($fp, array( | |
| $row['id'], | |
| $row['first'], | |
| $row['last'], | |
| $row['email'], | |
| $row['document'], | |
| $row['start'], | |
| $row['end'], | |
| $cla['legal_name'], | |
| $cla['public_name'], | |
| $cla['employer'], | |
| $cla['email'] | |
| )); | |
| } else { | |
| if ($comments) { | |
| fwrite($fp, "# Cannot decode ECA for {$row['id']} ({$row['start']})."); | |
| } | |
| } | |
| }); | |
| fclose($fp); |