| <?php |
| /******************************************************************************* |
| * Copyright (c) 2017 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 |
| *******************************************************************************/ |
| |
| /* |
| * Export CQ information from IPZilla in CSV format. |
| * |
| * e.g. http://www.eclipse.org/projects/export/cqs.csv.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/database.inc"); |
| require_once(dirname(__FILE__) . "/../classes/common.php"); |
| require_once(dirname(__FILE__) . "/../classes/debug.php"); |
| |
| mustBeEclipseFoundationCaller(); |
| |
| $sql = " |
| select |
| b.bug_id as id, |
| c.name as project, |
| b.short_desc as description, |
| b.cf_type as type, |
| date(b.creation_ts) as created, |
| b.bug_status as status, |
| b.resolution as resolution, |
| b.bug_severity as state, |
| b.cf_license as license, |
| group_concat(kd.name) as keywords, |
| l.thetext as comment |
| from bugs as b |
| join components as c on b.component_id = c.id |
| join ( |
| select |
| bug_id, min(comment_id) as comment_id |
| from longdescs group by bug_id |
| ) as s on b.bug_id=s.bug_id |
| join longdescs as l on s.bug_id=l.bug_id and s.comment_id=l.comment_id |
| join keywords as k on b.bug_id=k.bug_id |
| join keyworddefs as kd on k.keywordid=kd.id |
| group by b.bug_id"; |
| |
| $columns = array('id','project','description','type','created','status','resolution','state','licenses','keywords','projecturl','sourceurl'); |
| |
| $fp = fopen('php://output', 'w'); |
| fputcsv($fp, $columns); |
| |
| query('ipzilla', $sql, array(), function($row) use (&$fp, &$columns) { |
| // Grab the 'comment' row and use it to compute some |
| // other values and remove it from the array to avoid it being included |
| // in the output. |
| $comment = $row['comment']; |
| unset($row['comment']); |
| |
| // The "Project URL" and "Source URL" values are represented in |
| // the text of the first comment on a CQ. |
| $row['projecturl'] = (preg_match('/^Project URL:\s*(\S+)$/m', $comment, $matches)) ? trim($matches[1]) : ''; |
| $row['sourceurl'] = (preg_match('/^Source URL:\s*(\S+)$/m', $comment, $matches)) ? trim($matches[1]) : ''; |
| |
| fputcsv($fp, $row); |
| }); |
| |
| fclose($fp); |
| |
| ?> |