<?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://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Denis Roy (Eclipse Foundation) - Initial implementation
 *    Christopher Guindon (Eclipse Foundation)
 *******************************************************************************/

  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");
  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/membership/membership.class.php");

  $App = new App();
  $Nav = new Nav();
  $Menu = new Menu();
  $Membership = New Membership();
  include($App->getProjectCommon());

  # Begin: page-specific settings.  Change these.
  $pageTitle     = "Eclipse Membership";
  $pageKeywords  = "Eclipse membership";
  $pageAuthor    = "Christopher Guindon";

  $hide_membership = TRUE;
  $hide_faqs = TRUE;
  $hide_tips = TRUE;
  $show_corporate_sponsors_block = TRUE;
  $members = $Membership->fetchProfile();

	// Custom theme variables
	$variables = array();

	// Place your html content in a file called content/en_pagename.php
	ob_start();
	include("content/en_" . $App->getScriptName());
	$html = ob_get_clean();

  # Generate the web page
  $App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);