<?php
/********************************************************************************
 * Copyright (c) 2018 The Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 ********************************************************************************/
require_once dirname ( __FILE__ ) . '/../charts.inc';
function chart_project_licenses(ChartContext $context) {
	return ChartBuilder::named ( 'project_licenses' )
		->title ( "Licenses (:date)" )
		->description ( "Licenses in use by Eclipse Projects." )
		->pieChart()
		->query ('foundation', "
			SELECT
				license, count(project) as count
			from (
				SELECT
					p.ProjectId as project,
					group_concat(
						if(LicenseId='EPL1.0','EPL-1.0',
							if(LicenseId='EPL2.0','EPL-2.0',
								if(LicenseId='EDL1.0','EDL-1.0',
									if(LicenseId='ASL2.0','Apache-2.0',
										if(LicenseId='CCBY3','CC-BY-3.0',
											if(LicenseId='GPL-2.0_CP','GPL-2.0 WITH Classpath-exception-2.0'
												LicenseId))))))
						ORDER BY LicenseId separator ' OR ') as license
				FROM ProjectLicenses as pl
				JOIN Projects as p on pl.ProjectId=p.ProjectId
					AND p.IsActive group by p.ProjectId
				) as ProjectsAndLicenses
			group by license
			order by count desc
		" )
		->substitute ( ':date', (new DateTime())->format('Y-m-d') )
		->column ( 'License', 'license', 'string')
		->column ( 'Count', 'count', 'number' );
}
?>