<?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://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation)- initial API and implementation
 *    Edouard Poitras (Eclipse Foundation)- Some additions
 *******************************************************************************/

//if name of the file requested is the same as the current file, the script will exit directly.
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])){exit();}

?>
<?php if ($data['payment_status'] == 'Completed' || $Paypal->get_show_all()) { ?>
  <div id="midcolumn">
    <?php print $Paypal->get_status_message();?>
    <?php if ($data['amount'] > 0 || $Paypal->get_show_all()) : ?>
      <?php include('tpl/en_thankyou_header.tpl.php');?>
      <?php include('tpl/en_thankyou_membership_update.tpl.php');?>
      <?php //include('tpl/en_thankyou_membership_info.tpl.php');?>
    <?php endif;?>
  <p style="float: right;"><a href="/donate/faq.php" target="_blank">Questions?</a></p>
  </div>
  <?php include('tpl/en_thankyou_sidebar.tpl.php');?>
<?php } else { ?>
  <?php include('tpl/en_thankyou_error.tpl.php');?>
<?php } ?>
