| <?php |
| /* Copyright (c) 2006-2009 Eclipse Foundation, made available under EPL v1.0 |
| * Contributors Ward Cunningham, Bjorn Freeman-Benson, Karl Matthias |
| * |
| * The REST web-api for retrieving active committer summaries from the database. |
| * |
| * top=name |
| * project=name |
| * year=yyyy |
| * month=yyyymm |
| * day=yyyymmdd |
| * login=name |
| * file=name |
| * type=name |
| * change=nnnn |
| * message=nnnn |
| * company=name |
| * |
| * queries={logins,1day,1wk,1mo,3mo,6mo,9mo,12mo,year,all} |
| * fields=field1,field2,field3 where fieldN is one of top, project, year, ... |
| * |
| * Defaults: |
| * At least one WHERE clause constaint must be set (or query will time out); error message is shown instead to minimize server churn. |
| * If no value of queries is set, 5 queries will be returned: logins,1mo,3mo,6mo,9mo |
| * If not specified, year (in the "year" query) will be set to the current year. |
| * If not specified, fields will be set to LOGIN. |
| * |
| * Examples: |
| * http://dash.eclipse.org/dash/commits/web-api/commit-active-committers.php?company=BEA |
| * http://dash.eclipse.org/dash/commits/web-api/commit-active-committers.php?project=technology.dash |
| * http://dash.eclipse.org/dash/commits/web-api/commit-active-committers.php?company=Zend%25&queries=logins,year |
| * |
| */ |
| header("Content-type: text/plain"); |
| require_once "commit-common.inc.php"; |
| $fields = getFields("LOGIN"); |
| $year = isset($_GET["year"]) ? $_GET["year"] : date("Y"); |
| list( , , $where) = getXYWHERE(); |
| |
| if (!isset($_SERVER["QUERY_STRING"]) || !$_SERVER["QUERY_STRING"]) |
| { |
| print "# Must specify at least one of the following values: top=, project=, company=, queries=, fields=, ...\n"; |
| print "# Example: http://dash.eclipse.org/dash/commits/web-api/commit-active-committers.php?project=technology.dash\n"; |
| print "# Example: http://dash.eclipse.org/dash/commits/web-api/commit-active-committers.php?company=Zend%25&queries=logins,year\n"; |
| exit; |
| } |
| |
| $fmt = "Ymd"; |
| $validQueries = array( |
| "logins" => "select DISTINCT " . ($fields ? $fields : "") . " FROM commits" . ($where ? " WHERE " . $where : "") . " ORDER BY LOGIN", |
| |
| "1day"=> "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-1 day")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "1wk" => "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-1 week")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "1mo" => "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-1 month")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "3mo" => "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-3 month")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "6mo" => "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-6 month")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "9mo" => "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-9 month")) . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| "12mo"=> "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEARMONTHDAY >= " . date($fmt, strtotime("-12 month")). ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| |
| "year"=> "select " . ($fields ? $fields . ", " : "") . " SUM(CHANGE_SIZE) AS NUM_LOC FROM commits WHERE YEAR = " . $year . ($where ? " AND " . $where : "") . " GROUP BY LOGIN", |
| ); |
| |
| $queries = getQueries(array("logins", "1mo", "3mo", "6mo", "9mo")); |
| if (in_array("all", $queries)) |
| { |
| foreach ($validQueries as $queryname => $query) |
| { |
| displayQuery($query); |
| } |
| } |
| else |
| { |
| foreach ($queries as $queryname) |
| { |
| if (isset($validQueries[$queryname])) |
| { |
| displayQuery($validQueries[$queryname]); |
| } |
| } |
| } |
| ?> |