| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 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://www.eclipse.org/legal/epl-v10.html | |
| * | |
| * Contributors: | |
| * Christopher Guindon (Eclipse Foundation)- initial API and implementation | |
| *******************************************************************************/ | |
| require_once(realpath(dirname(__FILE__) . "/../../system/session.class.php")); | |
| require_once("/home/data/httpd/eclipse-php8-classes/system/ldapconnection.class.php"); | |
| require_once("friend.class.php"); | |
| require_once("contribution.class.php"); | |
| /** | |
| * This class represent an donor. It holds the values from | |
| * the friends_process table or from IPN payload. | |
| * | |
| * @author chrisguindon | |
| */ | |
| class Donor { | |
| /** | |
| * Contributions() object | |
| */ | |
| public $Contribution = NULL; | |
| /** | |
| * Email address of donor | |
| */ | |
| public $donor_email = ""; | |
| /** | |
| * First name of donor | |
| */ | |
| public $donor_first_name = ""; | |
| /** | |
| * Last name of donor | |
| */ | |
| public $donor_last_name = ""; | |
| /** | |
| * Paypal e-mail address | |
| */ | |
| public $donor_paypal_email = ""; | |
| /** | |
| * LDAP uid of donor | |
| */ | |
| public $donor_uid = ""; | |
| /** | |
| * LDAP UID | |
| * @var unknown | |
| */ | |
| public $donor_ldap_uid = ""; | |
| /** | |
| * LDAP First name | |
| * @var unknown | |
| */ | |
| public $donor_ldap_first_name = ""; | |
| /** | |
| * LDAP Last name | |
| * @var unknown | |
| */ | |
| public $donor_ldap_last_name = ""; | |
| /** | |
| * Friend() object | |
| */ | |
| public $Friend = NULL; | |
| public function __construct() { | |
| $Session = New Session(); | |
| $Friend = $Session->getFriend(); | |
| $fid = $Friend->getFriendID(); | |
| $this->Friend = new Friend(); | |
| $this->Contribution = new Contribution(); | |
| if ($fid != 0 && !empty($fid)) { | |
| $this->Friend = $Friend; | |
| $this->Contribution->setFriendID($fid); | |
| $this->set_donor_email($Friend->getEmail()); | |
| $this->set_donor_first_name($Friend->getFirstName()); | |
| $this->set_donor_last_name($Friend->getLastName()); | |
| $this->set_donor_uid($Friend->getLDAPUID()); | |
| // If there is a valid eclipse id, the first and last name | |
| // will be from LDAP. | |
| $this->Friend->setFirstName($this->get_donor_first_name()); | |
| $this->Friend->setLastName($this->get_donor_last_name()); | |
| } | |
| } | |
| /** | |
| * Helper function to select active e-mail if possible | |
| * @param unknown $Friend | |
| */ | |
| public function get_active_email() { | |
| if (!empty($this->donor_email)) { | |
| return $this->donor_email; | |
| } | |
| if (!empty($this->donor_paypal_email)) { | |
| return $this->donor_paypal_email; | |
| } | |
| $friend_email = $this->Friend->getEmail(); | |
| if (!empty($friend_email)) { | |
| $this->set_donor_email($friend_email); | |
| return $this->donor_paypal_email; | |
| } | |
| return ''; | |
| } | |
| /** | |
| * Set donor email | |
| */ | |
| public function get_donor_email() { | |
| return $this->donor_email; | |
| } | |
| /** | |
| * Get donor first name | |
| */ | |
| public function get_donor_first_name() { | |
| return ucwords(strtolower($this->donor_first_name)); | |
| } | |
| /** | |
| * Get the full name of the donor | |
| */ | |
| public function get_donor_full_name() { | |
| if ($this->donor_first_name != '' || $this->donor_last_name != "") { | |
| return $this->get_donor_first_name(). ' ' . $this->get_donor_last_name(); | |
| } | |
| return ''; | |
| } | |
| /** | |
| * Get donor last name | |
| */ | |
| public function get_donor_last_name() { | |
| return ucwords(strtolower($this->donor_last_name)); | |
| } | |
| /** | |
| * Get paypal e-mail address | |
| */ | |
| public function get_donor_paypal_email(){ | |
| return $this->donor_paypal_email; | |
| } | |
| /** | |
| * Get donor LDAP uid | |
| * @return string | |
| */ | |
| public function get_donor_uid() { | |
| $this->set_donor_uid(); | |
| return $this->donor_uid; | |
| } | |
| function get_friend_id_from_uid() { | |
| $fid = $this->Friend->selectFriendID('uid', $this->get_donor_uid()); | |
| $this->Friend->setFriendID($fid); | |
| $this->Friend->setFirstName($this->get_donor_first_name()); | |
| $this->Friend->setLastName($this->get_donor_last_name()); | |
| $this->Friend->setLDAPUID($this->get_donor_uid()); | |
| $bugzilla_id = $this->Friend->getBugzillaIDFromEmail($this->get_active_email()); | |
| $this->Friend->setBugzillaID($bugzilla_id); | |
| $this->Contribution->setFriendID($fid); | |
| return $fid; | |
| } | |
| /** | |
| * Get donor email | |
| * @param unknown $_email | |
| */ | |
| public function set_donor_email($email = "") { | |
| if (empty($email) && empty($this->donor_email)) { | |
| // Handle Logged in User Session | |
| $Session = new Session(); | |
| $Friend = $Session->getFriend(); | |
| $email = $Friend->getEmail(); | |
| } | |
| if (filter_var($email, FILTER_VALIDATE_EMAIL)) { | |
| $this->donor_email = strtolower($email); | |
| $this->set_donor_uid(); | |
| } | |
| } | |
| /** | |
| * Set donor first name | |
| * | |
| * @param unknown $name | |
| */ | |
| public function set_donor_first_name($name) { | |
| $name = filter_var($name, FILTER_SANITIZE_STRING); | |
| $name = ucwords(strtolower($name)); | |
| if ($name != "") { | |
| $this->donor_first_name = $name; | |
| } | |
| // Always use LDAP first name if possible | |
| if (!empty($this->donor_ldap_first_name)) { | |
| $this->donor_first_name = $this->donor_ldap_first_name; | |
| } | |
| } | |
| /** | |
| * Set donor last name | |
| * | |
| * @param unknown $name | |
| */ | |
| public function set_donor_last_name($name) { | |
| $name = filter_var($name, FILTER_SANITIZE_STRING); | |
| $name = ucwords(strtolower($name)); | |
| if ($name != "") { | |
| $this->donor_last_name = $name; | |
| } | |
| // Always use LDAP first name if possible | |
| if (!empty($this->donor_ldap_last_name)) { | |
| $this->donor_last_name = $this->donor_ldap_last_name; | |
| } | |
| } | |
| /** | |
| * Set paypal e-mail address | |
| */ | |
| public function set_donor_paypal_email($email) { | |
| $email = filter_var($email, FILTER_SANITIZE_STRING); | |
| $email = strtolower($email); | |
| if (filter_var($email, FILTER_VALIDATE_EMAIL)) { | |
| $this->donor_paypal_email = $email; | |
| $this->set_donor_uid(); | |
| } | |
| if (empty($this->donor_email)) { | |
| $this->set_donor_email($email); | |
| } | |
| } | |
| /** | |
| * Set donor LDAP uid | |
| */ | |
| public function set_donor_uid($uid = '') { | |
| $uid = filter_var($uid, FILTER_SANITIZE_STRING); | |
| $active_email = $this->get_active_email(); | |
| if (!empty($uid)){ | |
| $this->_set_donor_uid($uid); | |
| } | |
| // if uid is empty, let's try to find one. | |
| if (empty($this->donor_uid) && !empty($active_email)) { | |
| $uid = $this->get_LDAP_uid_from_email($active_email); | |
| $this->_set_donor_uid($uid); | |
| } | |
| if (empty($this->donor_uid) && $this->Friend->getLDAPUID() != "") { | |
| $this->_set_donor_uid($this->Friend->getLDAPUID()); | |
| } | |
| } | |
| /** | |
| * Set donor uid if it exists in LDAP | |
| * | |
| * This function will also override the first and last name | |
| * of the donor with information from ldap if a uid exist in LDAP. | |
| * | |
| * @param string $uid | |
| */ | |
| public function _set_donor_uid($uid = "") { | |
| $LDAP = new LDAPConnection(); | |
| if ($dn = $LDAP->getDNFromUID($uid)) { | |
| if ($this->donor_uid != $uid) { | |
| $this->donor_uid = $uid; | |
| } | |
| else { | |
| return FALSE; | |
| } | |
| } | |
| else { | |
| return FALSE; | |
| } | |
| $this->donor_ldap_uid = $uid; | |
| $this->donor_ldap_first_name = $LDAP->getLDAPAttribute($dn, 'givenName'); | |
| $this->donor_ldap_last_name = $LDAP->getLDAPAttribute($dn, 'sn'); | |
| $this->set_donor_first_name($this->donor_ldap_first_name); | |
| $this->set_donor_last_name($this->donor_ldap_last_name); | |
| $this->get_friend_id_from_uid(); | |
| return TRUE; | |
| } | |
| /** | |
| * Shortcut for setting the donation transaction id | |
| * | |
| * For paypal, this is the txn_id. | |
| * | |
| * @param string $txn_id | |
| */ | |
| public function set_donor_contribution_with_txn_id($txn_id = "") { | |
| $this->Contribution->selectContributionWithTransaction($txn_id); | |
| } | |
| /** | |
| * Helper function for getting the LDAP uid from e-mail | |
| * | |
| * @param unknown $_email | |
| */ | |
| public function get_LDAP_uid_from_email($_email) { | |
| if (!filter_var($_email, FILTER_VALIDATE_EMAIL)) { | |
| return ''; | |
| } | |
| $LDAP = new LDAPConnection(); | |
| if ($response = $LDAP->getUIDFromMail($_email)) { | |
| return $response; | |
| } | |
| return ''; | |
| } | |
| } |