| <?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: |
| * Edouard Poitras (Eclipse Foundation) - Minor Modifications |
| *******************************************************************************/ |
| |
| if (isset($_SERVER['HTTP_REFERER']) && |
| strpos($_SERVER['HTTP_REFERER'], 'dev.eclipse.org/site_login') !== FALSE) { |
| header('Location: /donate'); |
| return; |
| } |
| |
| 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/system/session.class.php"); |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/paypal.class.php"); |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friend.class.php"); |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/smartconnection.class.php"); |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/contribution.class.php"); |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friendsContributionsList.class.php"); |
| require_once("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php"); |
| require_once("emails.php"); |
| |
| $App = new App(); |
| $Nav = new Nav(); |
| $Menu = new Menu(); |
| $LDAP = new LDAPConnection(); |
| |
| include($App->getProjectCommon()); |
| |
| // Disable Caching |
| // Date in the past |
| header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); |
| // always modified |
| header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); |
| // HTTP/1.1 |
| header("Cache-Control: no-store, no-cache, must-revalidate"); |
| header("Cache-Control: post-check=0, pre-check=0", false); |
| // HTTP/1.0 |
| header("Pragma: no-cache"); |
| |
| // Set up Paypal |
| $Paypal = new Paypal(); |
| //$Paypal->set_debug_mode(TRUE); |
| //$Paypal->set_sandbox_mode(TRUE); |
| //$Paypal->set_show_all(TRUE); |
| |
| // Handle Logged in User Session |
| $Session = new Session(); |
| $Friend = $Session->getFriend(); |
| |
| function getLDAPUIDFromEmail($_email) { |
| $LDAP = new LDAPConnection(); |
| if ($response = $LDAP->getUIDFromMail($_email)) { |
| return $response; |
| } |
| return NULL; |
| } |
| |
| function getActiveEmail($friend, $paypal) { |
| if ($_POST['login'] && $_POST['login'] != '') return $_POST['login']; // User posted Eclipse.org ID |
| else if ($friend && $friend->getEmail() != '') return $friend->getEmail(); |
| else return $paypal->get_email(); // Paypal email on first page load after redirect |
| } |
| |
| function sendEmail($data) { |
| $transaction_id = $data['transaction_id']; |
| if ($data['amount'] >= 35 && $data['email'] != "" && !isset($_COOKIE['email_sent' . $transaction_id])) { |
| // Need the UID to store in tshirt table |
| if ($data['amount'] >= 100 && !$data['uid']) return; // User should submit Eclipse Login ID to receive shirt |
| send_email($data); |
| // Ensure we don't keep sending emails after user updates |
| setcookie("email_sent" . $data['transaction_id'], TRUE, time()+600, '/', '.eclipse.org'); |
| } |
| } |
| |
| function logABTesting($paypal, $app) { |
| if (isset($_GET['cm']) && ($_GET['cm'] === 'A' || $_GET['cm'] === 'B')) { // Custom Variable (A or B) |
| $data = $paypal->get_transaction_data(); |
| $amount = $app->sqlSanitize($data['amount']); |
| $test = $app->sqlSanitize($_GET['cm']); |
| $transaction_id = $data['transaction_id']; |
| $sql = "SELECT * FROM thankyou_a_b WHERE transaction_id = '$transaction_id'"; |
| $res = $app->eclipse_sql($sql); |
| if (is_numeric($amount) && mysql_num_rows($res) === 0) { |
| $sql = "INSERT INTO thankyou_a_b VALUES (NOW(), '$test', $amount, '$transaction_id')"; |
| $app->eclipse_sql($sql); |
| } |
| } |
| } |
| |
| // PHP sends headers every print/echo statement |
| // We use ob_start so that the setcookie() function can be used to set header values without PHP complaining |
| // about headers having already been sent (through a print/echo statement somewhere else). |
| ob_start(); |
| |
| // Confirm Donation |
| $success = $Paypal->confirm_donation(); |
| if ($success) { |
| // Make sure user stops getting bothered by donation banner |
| setcookie ("thankyou_page[donation]", TRUE, time() + (3600 * 24 * 279), '/', '.eclipse.org'); |
| // A/B Testing |
| logABTesting($Paypal, $App); |
| // Sanitize Variables |
| $_POST['first_name'] = $App->sqlSanitize(filter_var($_POST['first_name'], FILTER_SANITIZE_FULL_SPECIAL_CHARS)); |
| $_POST['last_name'] = $App->sqlSanitize(filter_var($_POST['last_name'], FILTER_SANITIZE_FULL_SPECIAL_CHARS)); |
| $_POST['comment'] = $App->sqlSanitize(filter_var($_POST['comment'], FILTER_SANITIZE_FULL_SPECIAL_CHARS)); |
| $_POST['login'] = $App->sqlSanitize(filter_var($_POST['login'], FILTER_SANITIZE_EMAIL)); |
| |
| // Handle User Updating Information (anonymity, comments, etc) |
| $Paypal->set_comment($_POST['comment']); |
| $Paypal->set_email(getActiveEmail($Friend, $Paypal)); |
| if ($Friend->getFirstName()) $Paypal->set_first_name($Friend->getFirstName()); |
| else if ($_POST['first_name'] != "") $Paypal->set_first_name($_POST['first_name']); |
| if ($Friend->getLastName()) $Paypal->set_last_name($Friend->getLastName()); |
| else if ($_POST['last_name'] != "") $Paypal->set_last_name($_POST['last_name']); |
| // Anonymity |
| if (isset($_POST['save'])) { // On Save/POST |
| $Paypal->set_anonymous($_POST['os1'] === 'Private'); |
| } else { // First time always anonymous |
| $Paypal->set_anonymous(TRUE); |
| } |
| // Ready Transaction Data |
| $data = $Paypal->get_transaction_data(); |
| $data['uid'] = getLDAPUIDFromEmail(getActiveEmail($Friend, $Paypal)); |
| |
| sendEmail($data); |
| // Check to see if this transaction has already been processed. |
| $check_contribution = new Contribution(); |
| $check_transaction = $check_contribution->selectContributionExists($data['transaction_id']); |
| if ($check_transaction == FALSE) { // Contribution Doesn't Already Exist |
| //Check to see if user already exists in friends |
| $check_friends = new Friend(); |
| $ldapuid = getLDAPUIDFromEmail(getActiveEmail($Friend, $Paypal)); |
| $friend_id = $check_friends->selectFriendID("uid", $ldapuid); |
| if ($friend_id != 0) { // User Already Exist |
| // Lets Update the Friend Information |
| $new_friend = new Friend(); |
| $new_friend->selectFriend($friend_id); // Want to keep existing date_joined |
| $new_friend->setFirstName($data['firstname']); |
| $new_friend->setLastName($data['lastname']); |
| $new_friend->setIsAnonymous($data['anonymous']); |
| $new_friend->setIsBenefit($data['benefit']); |
| $new_friend->setFriendID($friend_id); |
| $new_friend->setLDAPUID($ldapuid); |
| $new_friend_id = $new_friend->insertUpdateFriend(); |
| // Friend_id does not equal 0 so we have an existing user. We need to add a new contribution |
| $insert_contribution = new Contribution(); |
| $insert_contribution->setFriendID($friend_id); |
| $insert_contribution->setAmount($data['amount']); |
| $insert_contribution->setMessage($data['comment']); |
| $insert_contribution->setTransactionID($data['transaction_id']); |
| $insert_contribution->insertContribution(); |
| //Record Inserted |
| } else { |
| // No friend_id found so add a new friend record then add the contribution record. |
| $new_friend = new Friend(); |
| $new_friend->setFirstName($data['firstname']); |
| $new_friend->setLastName($data['lastname']); |
| $new_friend->setLDAPUID($ldapuid); |
| $new_friend->setIsAnonymous($data['anonymous']); |
| $new_friend->setIsBenefit($data['benefit']); |
| $new_friend_id = $new_friend->insertUpdateFriend(); |
| $insert_contribution = new Contribution(); |
| $insert_contribution->setFriendID($new_friend_id); |
| $insert_contribution->setAmount($data['amount']); |
| $insert_contribution->setMessage($data['comment']); |
| $insert_contribution->setTransactionID($data['transaction_id']); |
| $insert_contribution->insertContribution(); |
| } |
| } |
| // User submitted an Eclipse.org ID |
| if (isset($_POST['login']) && $_POST['login'] != "") { |
| // Need to reload friend incase we're dealing with a non-logged in user |
| // Update Anonymity |
| $check_contribution->selectContributionWithTransaction($data['transaction_id']); |
| $anon_friend = new Friend(); |
| $anon_friend->selectFriend($check_contribution->getFriendID()); |
| $anon_friend->setIsAnonymous($data['anonymous']); |
| // Update Name |
| $check_friends = new Friend(); |
| $ldapuid = getLDAPUIDFromEmail($_POST['login']); |
| $friend_id = $check_friends->selectFriendID("uid", $ldapuid); |
| if (!$friend_id) { // If no friend_id found, create the friend based on ldap information |
| $dn = $LDAP->getDNFromMail($_POST['login']); |
| $firstname = $LDAP->getLDAPAttribute($dn, 'givenName'); |
| $lastname = $LDAP->getLDAPAttribute($dn, 'sn'); |
| $anon_friend->setFirstName($firstname); |
| $anon_friend->setLastName($lastname); |
| $anon_friend->setEmail($_POST['login']); |
| $anon_friend->setLDAPUID($ldapuid); |
| $data['firstname'] = $firstname; |
| $data['lastname'] = $lastname; |
| $anon_friend->insertUpdateFriend(); |
| $check_contribution->setFriendID($anon_friend->getFriendID()); |
| $check_contribution->updateContribution(); |
| } else { |
| $existing_friend = new Friend(); |
| $existing_friend->selectFriend($friend_id); |
| $existing_friend->setIsAnonymous($data['anonymous']); |
| $existing_friend->insertUpdateFriend(); |
| $data['firstname'] = $existing_friend->getFirstName(); |
| $data['lastname'] = $existing_friend->getLastName(); |
| $check_contribution->setFriendID($friend_id); |
| $check_contribution->updateContribution(); |
| } |
| } |
| |
| // Check to see if this transaction has already been processed. |
| $check_contribution = new Contribution(); |
| $check_transaction = $check_contribution->selectContributionExists($data['transaction_id']); |
| if ($check_transaction == TRUE) { // Contribution Already Exist - Check for name and message change |
| // Update contribution |
| $check_contribution->selectContributionWithTransaction($data['transaction_id']); |
| $check_contribution->setMessage($data['comment']); |
| $check_contribution->updateContribution(); |
| // Get friend from friend_id from transaction |
| $check_friends = new Friend(); |
| $check_friends->selectFriend($check_contribution->getFriendID()); |
| if ($check_friends->getFriendID() != 0) { // User Already Exist |
| // Update Anonymity |
| $check_friends->setIsAnonymous($data['anonymous']); |
| $check_friends->insertUpdateFriend(); |
| } else { |
| $ldapuid = getLDAPUIDFromEmail(getActiveEmail($Friend, $Paypal)); |
| $check_friends->setFirstName($data['firstname']); |
| $check_friends->setLastName($data['lastname']); |
| $check_friends->setIsAnonymous($data['anonymous']); |
| $check_friends->setIsBenefit($data['benefit']); |
| $check_friends->setLDAPUID($ldapuid); |
| $check_friends->insertUpdateFriend(); |
| } |
| } |
| } |
| |
| $pageTitle = "Thank You"; |
| $pageKeywords = "friends of eclipse, donation, contribution"; |
| $pageAuthor = "Edouard Poitras"; |
| |
| include('content/en_thankyou.php'); |
| $html = ob_get_clean(); |
| |
| # Generate the web page |
| $App->AddExtraHtmlHeader('<script type="text/javascript" src="/donate/functions.js"></script>'); |
| $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/donate/style.css" media="screen" />'); |
| // Don't generate the page for PayPal IPN |
| if (!isset($_GET['IPN'])) { |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| } |
| ?> |