<?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
 *******************************************************************************/

require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
$App = new App();

/**
 * @deprecated Use getActiveProjectsForOrganization() in Project.class.php
 * @param int $orgId
 * @return string[]
 */
function get_projects_this_company_is_active_on( $orgId ) {
	global $App;
	
	$sql = "select distinct project from ProjectCompanyActivity where orgId=$orgId";
	$result = $App->dashboard_sql($sql);
	
	$projects = array();
	while ($row = mysql_fetch_assoc($result)) {
		$projects[] = $row['project'];
	}
	return $projects;
}
?>
