/**
 * Update cart item meta
 * @access public
 *
 * @deprecated since 3.8.13
 */
function wpsc_update_cartmeta($cart_item_id, $meta_key, $meta_value)
{
    _wpsc_deprecated_function(__FUNCTION__, '3.8.13', 'wpsc_update_cart_item_meta');
    return wpsc_update_cart_item_meta($cart_item_id, $meta_key, $meta_value);
}
 /**
  * process_gateway_notification method, receives data from the payment gateway
  * @access public
  */
 function process_gateway_notification()
 {
     $status = false;
     switch (strtolower($this->paypal_ipn_values['payment_status'])) {
         case 'pending':
             $status = 2;
             break;
         case 'completed':
             $status = 3;
             break;
         case 'denied':
             $status = 6;
             break;
     }
     do_action('wpsc_paypal_pro_ipn', $this->paypal_ipn_values, $this);
     // Compare the received store owner email address to the set one
     if (strtolower($this->paypal_ipn_values['receiver_email']) == strtolower(get_option('paypal_multiple_business'))) {
         switch ($this->paypal_ipn_values['txn_type']) {
             case 'cart':
             case 'express_checkout':
                 if ($status) {
                     $this->set_transaction_details($this->paypal_ipn_values['txn_id'], $status);
                 }
                 if (in_array($status, array(2, 3))) {
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 break;
             case 'subscr_signup':
             case 'subscr_payment':
                 if (in_array($status, array(2, 3))) {
                     $this->set_transaction_details($this->paypal_ipn_values['subscr_id'], $status);
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 foreach ($this->cart_items as $cart_row) {
                     if ($cart_row['is_recurring'] == true) {
                         do_action('wpsc_activate_subscription', $cart_row['cart_item_id'], $this->paypal_ipn_values['subscr_id']);
                         do_action('wpsc_activated_subscription', $cart_row['cart_item_id'], $this);
                     }
                 }
                 break;
             case 'subscr_cancel':
             case 'subscr_eot':
             case 'subscr_failed':
                 foreach ($this->cart_items as $cart_row) {
                     $altered_count = 0;
                     if ((bool) $cart_row['is_recurring'] == true) {
                         $altered_count++;
                         wpsc_update_cart_item_meta($cart_row['cart_item_id'], 'is_subscribed', 0);
                     }
                 }
                 break;
             default:
                 break;
         }
     }
     $message = "\n\t\t{$this->paypal_ipn_values['receiver_email']} => " . get_option('paypal_multiple_business') . "\n\t\t{$this->paypal_ipn_values['txn_type']}\n\t\t{$this->paypal_ipn_values['mc_gross']} => {$this->cart_data['total_price']}\n\t\t{$this->paypal_ipn_values['txn_id']}\n\n\t\t" . print_r($this->cart_items, true) . "\n\t\t{$altered_count}\n\t\t";
 }
 /**
  * process_gateway_notification method, receives data from the payment gateway
  * @access public
  */
 function process_gateway_notification()
 {
     global $wpdb;
     $status = 1;
     switch (strtolower($this->paypal_ipn_values['payment_status'])) {
         case 'pending':
             $status = 2;
             break;
         case 'completed':
             $status = 3;
             break;
         case 'denied':
             $status = 6;
             break;
     }
     do_action('wpsc_paypal_standard_ipn', $this->paypal_ipn_values, $this);
     $paypal_email = strtolower(get_option('paypal_multiple_business'));
     if (!$this->is_valid_ipn_response()) {
         return;
     }
     // Compare the received store owner email address to the set one
     if (strtolower($this->paypal_ipn_values['receiver_email']) == $paypal_email || strtolower($this->paypal_ipn_values['business']) == $paypal_email) {
         switch ($this->paypal_ipn_values['txn_type']) {
             case 'cart':
             case 'express_checkout':
             case 'web_accept':
                 // import shipping & billing details if this is from "Buy Now" button
                 if (isset($this->paypal_ipn_values['custom']) && $this->paypal_ipn_values['custom'] == 'buy_now') {
                     $this->import_ipn_data();
                 }
                 if ($status > 1) {
                     $this->set_transaction_details($this->paypal_ipn_values['txn_id'], $status);
                 }
                 if (in_array($status, array(2, 3))) {
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 break;
             case 'subscr_signup':
             case 'subscr_payment':
                 if (in_array($status, array(2, 3))) {
                     $this->set_transaction_details($this->paypal_ipn_values['subscr_id'], $status);
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 foreach ($this->cart_items as $cart_row) {
                     if ($cart_row['is_recurring'] == true) {
                         do_action('wpsc_activate_subscription', $cart_row['cart_item_id'], $this->paypal_ipn_values['subscr_id']);
                         do_action('wpsc_activated_subscription', $cart_row['cart_item_id'], $this);
                     }
                 }
                 break;
             case 'subscr_cancel':
                 do_action('wpsc_paypal_standard_deactivate_subscription', $this->paypal_ipn_values['subscr_id'], $this);
                 break;
             case 'subscr_eot':
             case 'subscr_failed':
                 foreach ($this->cart_items as $cart_row) {
                     $altered_count = 0;
                     if ((bool) $cart_row['is_recurring'] == true) {
                         $altered_count++;
                         wpsc_update_cart_item_meta($cart_row['cart_item_id'], 'is_subscribed', 0);
                     }
                 }
                 break;
             default:
                 break;
         }
     }
 }