<?php
/*******************************************************************************
 * Copyright (c) 2010,2011 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
 *    Wayne Beaton (Eclipse Foundation) - Bug 355885.
 *******************************************************************************/

require_once(dirname(__FILE__) . '/common.inc');
mustBeEclipseFoundationCaller();

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

header("Content-type: text/plain");
$result = $App->foundation_sql("SELECT distinct People.PersonID as id, People.EMail as email, People.Comments as comment FROM People join PeopleProjects on (People.PersonID = PeopleProjects.PersonId) where relation='CM'");

while($row = mysql_fetch_assoc($result)) {
	$emails = extractEmails($row['email'], $row['comment']);
	$id = $row['id'];
	
	foreach($emails as $email) {
		echo "$email\t$id\n";
	}
}

/**
 * This function extract the email addresses from the comment and returns 
 * them--along with the provided primary email address--in an array.
 * 
 * This is a stop-gap solution for the need to represent multiple email addresses
 * for some users in some contexts. Alternative email addresses are represented in
 * the comment field in the form 'alt-email:somebody@someplace.com'. Multiple
 * alternative addresses can be provided. The tag can occur anywhere in the comment
 * and--while it is not always required--it is good practice to leave a space
 * between multiple entries.
 * 
 * WTB Bug 355885
 */
function extractEmails($primary, $comment) {
	preg_match_all('/alt-email:(\S*)/i', $comment, $matches);
	$emails = array();
	$emails[] = $primary;
	foreach($matches[1] as $email) {
		if ($primary == $email) continue;
		$emails[] = $email;
	}
	return $emails;
}
?>