PageRenderTime 38ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/s2member/includes/classes/paypal-return-in-web-accept-sp.inc.php

https://gitlab.com/Gashler/sg
PHP | 148 lines | 98 code | 19 blank | 31 comment | 45 complexity | 1c37834c576b96c4f4e8621c475294e5 MD5 | raw file
  1. <?php
  2. /**
  3. * s2Member's PayPal Auto-Return/PDT handler (inner processing routine).
  4. *
  5. * Copyright: © 2009-2011
  6. * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
  7. * (coded in the USA)
  8. *
  9. * Released under the terms of the GNU General Public License.
  10. * You should have received a copy of the GNU General Public License,
  11. * along with this software. In the main directory, see: /licensing/
  12. * If not, see: {@link http://www.gnu.org/licenses/}.
  13. *
  14. * @package s2Member\PayPal
  15. * @since 110720
  16. */
  17. if(!defined('WPINC')) // MUST have WordPress.
  18. exit('Do not access this file directly.');
  19. if(!class_exists('c_ws_plugin__s2member_paypal_return_in_web_accept_sp'))
  20. {
  21. /**
  22. * s2Member's PayPal Auto-Return/PDT handler (inner processing routine).
  23. *
  24. * @package s2Member\PayPal
  25. * @since 110720
  26. */
  27. class c_ws_plugin__s2member_paypal_return_in_web_accept_sp
  28. {
  29. /**
  30. * s2Member's PayPal Auto-Return/PDT handler (inner processing routine).
  31. *
  32. * @package s2Member\PayPal
  33. * @since 110720
  34. *
  35. * @param array $vars Required. An array of defined variables passed by {@link s2Member\PayPal\c_ws_plugin__s2member_paypal_return_in::paypal_return()}.
  36. *
  37. * @return array|bool The original ``$paypal`` array passed in (extracted) from ``$vars``, or false when conditions do NOT apply.
  38. */
  39. public static function cp($vars = array() /* Conditional phase for ``c_ws_plugin__s2member_paypal_notify_in::paypal_notify()``. */)
  40. {
  41. extract($vars, EXTR_OVERWRITE | EXTR_REFS /* Extract all vars passed in from: ``c_ws_plugin__s2member_paypal_notify_in::paypal_notify()``. */);
  42. if((!empty($paypal['txn_type']) && preg_match('/^web_accept$/i', $paypal['txn_type']))
  43. && (!empty($paypal['item_number']) && preg_match($GLOBALS['WS_PLUGIN__']['s2member']['c']['sp_access_item_number_regex'], $paypal['item_number']))
  44. && (empty($paypal['payment_status']) || empty($payment_status_issues) || !preg_match($payment_status_issues, $paypal['payment_status']))
  45. && (!empty($paypal['txn_id'])) && (!empty($paypal['txn_baid']) || ($paypal['txn_baid'] = $paypal['txn_id']))
  46. && (!empty($paypal['txn_cid']) || ($paypal['txn_cid'] = $paypal['txn_id']))
  47. )
  48. {
  49. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  50. do_action('ws_plugin__s2member_during_paypal_return_before_sp_access', get_defined_vars());
  51. unset($__refs, $__v);
  52. if(!get_transient($transient_rtn = 's2m_rtn_'.md5('s2member_transient_'.$_paypal_s)) && set_transient($transient_rtn, time(), 31556926 * 10))
  53. {
  54. $paypal['s2member_log'][] = 's2Member `txn_type` identified as ( `web_accept` ) for Specific Post/Page Access.';
  55. list (, $paypal['sp_ids'], $paypal['hours']) = preg_split('/\:/', $paypal['item_number'], 3);
  56. $paypal['ip'] = (preg_match('/ip address/i', $paypal['option_name2']) && $paypal['option_selection2']) ? $paypal['option_selection2'] : '';
  57. $paypal['ip'] = (!$paypal['ip'] && preg_match('/^[a-z0-9]+~[0-9\.]+$/i', $paypal['invoice'])) ? preg_replace('/^[a-z0-9]+~/i', '', $paypal['invoice']) : $paypal['ip'];
  58. $paypal['ip'] = (!$paypal['ip'] && $_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $paypal['ip'];
  59. $paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
  60. $paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
  61. if(($sp_access_url = c_ws_plugin__s2member_sp_access::sp_access_link_gen($paypal['sp_ids'], $paypal['hours'], FALSE)))
  62. {
  63. $processing = $during = TRUE; // Yes, we ARE processing this.
  64. setcookie('s2member_sp_tracking', ($s2member_sp_tracking = c_ws_plugin__s2member_utils_encryption::encrypt($paypal['txn_id'])), time() + 31556926, COOKIEPATH, COOKIE_DOMAIN).setcookie('s2member_sp_tracking', $s2member_sp_tracking, time() + 31556926, SITECOOKIEPATH, COOKIE_DOMAIN).($_COOKIE['s2member_sp_tracking'] = $s2member_sp_tracking);
  65. $paypal['s2member_log'][] = 'Transient Tracking Cookie set on ( `web_accept` ) for Specific Post/Page Access.';
  66. if($processing && ($code = $GLOBALS['WS_PLUGIN__']['s2member']['o']['sp_tracking_codes']) && is_array($cv = preg_split('/\|/', $paypal['custom'])))
  67. {
  68. if(($code = preg_replace('/%%cv([0-9]+)%%/ei', 'trim(@$cv[$1])', $code)) && ($code = preg_replace('/%%amount%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['mc_gross']), $code)) && ($code = preg_replace('/%%txn_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_id']), $code)))
  69. if(($code = preg_replace('/%%txn_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_baid']), $code)) && ($code = preg_replace('/%%txn_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_cid']), $code)))
  70. if(($code = preg_replace('/%%currency%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['currency']), $code)) && ($code = preg_replace('/%%currency_symbol%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['currency_symbol']), $code)))
  71. if(($code = preg_replace('/%%item_number%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['item_number']), $code)) && ($code = preg_replace('/%%item_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['item_name']), $code)))
  72. if(($code = preg_replace('/%%first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['first_name']), $code)) && ($code = preg_replace('/%%last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['last_name']), $code)))
  73. if(($code = preg_replace('/%%full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($paypal['first_name'].' '.$paypal['last_name'])), $code)))
  74. if(($code = preg_replace('/%%payer_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['payer_email']), $code)))
  75. if(($code = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['ip']), $code)))
  76. if(($code = trim(preg_replace('/%%(.+?)%%/i', '', $code)))) // This gets stored into a Transient Queue.
  77. {
  78. $paypal['s2member_log'][] = 'Storing Specific Post/Page Tracking Codes into a Transient Queue. These will be processed on-site.';
  79. set_transient('s2m_'.md5('s2member_transient_sp_tracking_codes_'.$paypal['txn_id']), $code, 43200);
  80. }
  81. }
  82. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  83. do_action('ws_plugin__s2member_during_paypal_return_during_sp_access', get_defined_vars());
  84. unset($__refs, $__v);
  85. if(apply_filters('ws_plugin__s2member_immediate_sp_access_redirection', FALSE, get_defined_vars()))
  86. {
  87. $paypal['s2member_log'][] = 'Redirecting Customer immediately to the Specific Post/Page.';
  88. wp_redirect($sp_access_url); // Immediate redirection to Specific Post/Page.
  89. }
  90. else if($custom_success_redirection) // Using a custom success redirection URL?
  91. {
  92. $paypal['s2member_log'][] = 'Redirecting Customer to a custom URL on success: '.$custom_success_redirection;
  93. wp_redirect($custom_success_redirection);
  94. }
  95. else // Else use the default return URL in this scenario, which is the Specific Post/Page.
  96. {
  97. $paypal['s2member_log'][] = 'Redirecting Customer to the Specific Post/Page (after displaying a thank-you message).';
  98. echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'],
  99. _x('<strong>Thank You! Your transaction has been approved.</strong>', 's2member-front', 's2member'),
  100. _x('Continue (Click Here)', 's2member-front', 's2member'), $sp_access_url);
  101. }
  102. }
  103. else // Otherwise, the ID must have been invalid. Or the Post/Page was deleted.
  104. {
  105. $paypal['s2member_log'][] = 'Unable to generate Specific Post/Page Access Link. Does your Leading Post/Page still exist?';
  106. $paypal['s2member_log'][] = 'Redirecting Customer to the Home Page (after displaying an error message).';
  107. echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'],
  108. _x('<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance.', 's2member-front', 's2member'),
  109. _x('Back To Home Page', 's2member-front', 's2member'), home_url('/'));
  110. }
  111. }
  112. else // Page Expired. Duplicate Return-Data.
  113. {
  114. $paypal['s2member_log'][] = 'Page Expired. Duplicate Return-Data.';
  115. $paypal['s2member_log'][] = 's2Member `txn_type` identified as ( `web_accept` ) for Specific Post/Page Access.';
  116. $paypal['s2member_log'][] = 'Page Expired. Instructing customer to check their email for further details about how to obtain access to what they purchased.';
  117. echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'],
  118. '<strong>'._x('Thank you! Please check your email for further details regarding your purchase.', 's2member-front', 's2member').'</strong>',
  119. _x('Return to Home Page', 's2member-front', 's2member'), home_url('/'));
  120. }
  121. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  122. do_action('ws_plugin__s2member_during_paypal_return_after_sp_access', get_defined_vars());
  123. unset($__refs, $__v);
  124. return apply_filters('c_ws_plugin__s2member_paypal_return_in_web_accept_sp', $paypal, get_defined_vars());
  125. }
  126. else return apply_filters('c_ws_plugin__s2member_paypal_return_in_web_accept_sp', FALSE, get_defined_vars());
  127. }
  128. }
  129. }