Copyright (c) 2004 DevosC.com
Copyright (c) 2006 Dipl.-Ing.(TH) Winfried Kaiser (w.kaiser@fortune.de) -- Port to OL-Commerce

Released under the GNU General Public License
*/
include DIR_WS_CLASSES . 'order.php';
$order = new order($HTTP_GET_VARS['oID']);
require_once PAYPAL_IPN_DIR . 'Admin/languages/' . $language . '/paypal.lng.php';
require_once PAYPAL_IPN_DIR . 'Classes/TransactionDetails/TransactionDetails.class.php';
$paypal = new PayPal_TransactionDetails(TABLE_PAYPAL, $order->info['payment_id']);
if ($HTTP_GET_VARS['digest'] != $paypal->digest()) {
    $messageStack->add_session(ERROR_UNAUTHORIZED_REQUEST);
} elseif ($paypal->info['payment_status'] === 'Completed' && $order->info['orders_status'] === MODULE_PAYMENT_PAYPAL_ORDER_ONHOLD_STATUS_ID) {
    include PAYPAL_IPN_DIR . 'Functions/addressbook.func.php';
    include PAYPAL_IPN_DIR . 'Classes/osC/Order.class.php';
    $PayPal_osC_Order = new PayPal_osC_Order();
    $PayPal_osC_Order->setOrderID($HTTP_GET_VARS['oID']);
    $PayPal_osC_Order->loadOrdersSessionInfo();
    //$currency = $PayPal_osC_Order->currency;
    $PayPal_osC_Order->setAccountHistoryInfoURL(olc_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $PayPal_osC_Order->orderID, 'SSL', false));
    $PayPal_osC_Order->setCheckoutProcessLanguageFile(DIR_FS_CATALOG_LANGUAGES . $PayPal_osC_Order->language . '/' . 'checkout_process.php');
    $PayPal_osC_Order->updateProducts($order, $currencies);
    $PayPal_osC_Order->notifyCustomer($order);
    $affiliate_ref = $PayPal_osC_Order->affiliate_id;
    $affiliate_clickthroughs_id = $PayPal_osC_Order->affiliate_clickthroughs_id;
    $affiliate_clientdate = $PayPal_osC_Order->affiliate_date;
    $affiliate_clientbrowser = $PayPal_osC_Order->affiliate_browser;
    $affiliate_clientip = $PayPal_osC_Order->affiliate_ipaddress;
    if (olc_not_null($affiliate_ref) && $affiliate_ref != '0') {
        define('MODULE_PAYMENT_PAYPAL_SHOPPING_IPN_AFFILIATE', TRUE_STRING_S);
        $insert_id = $PayPal_osC_Order->orderID;
// make a connection to the database... now
olc_db_connect() or die('Unable to connect to database server!');
// set the application parameters
$configuration_query = olc_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
while ($configuration = olc_db_fetch_array($configuration_query)) {
    define($configuration['cfgKey'], $configuration['cfgValue']);
}
// define general functions used application-wide
require DIR_WS_FUNCTIONS . 'general.php';
require DIR_WS_FUNCTIONS . 'html_output.php';
// some code to solve compatibility issues
require DIR_WS_FUNCTIONS . 'compatibility.php';
// define how the session functions will be used
require DIR_WS_FUNCTIONS . 'sessions.php';
// include currencies class and create an instance
require DIR_WS_CLASSES . 'currencies.php';
$currencies = new currencies();
// include the mail classes
require DIR_WS_CLASSES . 'mime.php';
require DIR_WS_CLASSES . 'email.php';
include PAYPAL_IPN_DIR . 'Classes/osC/Order.class.php';
$PayPal_osC_Order = new PayPal_osC_Order();
$PayPal_osC_Order->loadTransactionSessionInfo($_POST['custom']);
if (isset($PayPal_osC_Order->language)) {
    // include the language translations
    $language = $PayPal_osC_Order->language;
    include DIR_WS_LANGUAGES . $language . PHP;
} else {
    //later on change to Store Default
    include PAYPAL_IPN_DIR . 'languages/' . SESSION_LANGUAGE . PHP;
}