<?php
/*******************************************************************************
 * Copyright (c) 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
 *******************************************************************************/

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

$App 	= new App();
$Menu 	= new Menu();
$Nav = new Nav();
include($App->getProjectCommon());
include( '_commonLeftNav.php' );

require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/Project.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/debug.php");
trace_file_info(__FILE__);
?>
<html>
<head>
<title>Eclipse Project Logos</title>
<style>
.logo {float:left; text-align:center;width:130px;height:130px}
.logo img {vertical-align:middle;max-width:120px;max-height:120px}
</style>
</head>
<body>

<?php 

foreach(getActiveProjects() as $project) {
	$logo = $project->getLogoUrl();
	if (!$logo) continue;
	if (!isImageUrl($logo)) continue;
	
	$id = $project->getId();
	$name = $project->getName();
	
	echo "<div class=\"logo\"><img src=\"$logo\"/></div>";
}

function isImageUrl($url) {
	return @getimagesize(normalizeFilePathUrl($url)) ? true : false;
}
?>

</body>
</html>