<?php
/*******************************************************************************
 * Copyright (c) Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
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();
$Nav = new Nav();
$Menu = new Menu();
include($App->getProjectCommon());

function getEfspFile($version = null) {
	if ($version) {
		$fileName = "content/efsp_v{$version}.html";
		if (file_exists($fileName)) {
			return $fileName;
		}
	}

	$files = glob("content/efsp_v*.html");
	return end($files);

}

$fileName = getEfspFile(@$_GET['version']);

$pageTitle = "Eclipse Foundation Specification Process";
$pageAuthor = "Wayne Beaton";
$pageKeywords = "EDP, Specifications";

include( '../../_commonLeftNav.php' );

ob_start();
?>

<link rel="stylesheet" href="/projects/handbook/resources/handbook.css"/>

<div id="maincontent">
	<h1>Eclipse Foundation Specification Process</h1>
	<?php include $fileName; ?>
</div>

<?php
	$html = ob_get_contents();
	ob_end_clean();
	$App->generatePage(null, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
