<?php

function epicException($id) {
// For a given org ID, return a list of strings of companie names to match in EPIC
	switch ($id) {
	    case 653: return array("BEA Systems"); 
		case 680: return array("CodeGear"); 
		case 671: return array("Eclipse University"); 
		case 856: return array("ObjectWeb");
		case 864: return array("Remain");
		case 876: return array("Innovations Softwaretechnologie");
		default: return array();
	}
}

function ignoreMembers() {
 // Return a string of orgid's to use in MYSQL queries of members to ignore in membership list
 // There must always be at least 0 in this list in order for the NOT IN to work.  I dunno why, just do it.
	return '1031';
//929 = Excelcior
}


function projectException($id, &$projects) {
	// CA wants the reference to cosmos removed
	if ($id == 655){
		if (array_search('technology.cosmos', $projects) !== FALSE)
		{
			unset($projects[array_search('technology.cosmos', $projects)]);
		}
	}
}
?>
