<?php
/*******************************************************************************
 * Copyright (c) 2014-2015 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:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
  header('Content-Type: text/html; charset=utf-8');
  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/users/siteLogin.class.php");

  $App   = new App();
  $Nav  = new Nav();
  $Menu   = new Menu();
  $Sitelogin = new Sitelogin();

  $App->preventCaching();

  include("_projectCommon.php");

  header("Content-type: text/html; charset=utf-8");
  $pageTitle = "Log out";
  $pageKeywords = "eclipse, friends, logout ,account, signon, sign-on";
  $pageAuthor  = "Eclipse Foundation, Inc.";

  $var_logout = $Sitelogin->getVariables('logout');

  $redirect = $Sitelogin->logout();

  if ($var_logout['password_update']) {
    $Sitelogin->password_update();
    $redirect = 'https://dev.eclipse.org/site_login/';
  }

  // Place your html content in a file called content/en_pagename.php
  ob_start();
  include("content/en_" . $App->getScriptName());
  $html = ob_get_clean();


  $App->AddExtraHtmlHeader('<meta http-equiv="refresh" content="4;url=' . $redirect . '"> ');
  $App->setGoogleAnalyticsTrackingCode(NULL);
  $App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
