PageRenderTime 39ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://gitlab.com/Gashler/dp
PHP | 143 lines | 93 code | 18 blank | 32 comment | 40 complexity | e076d69050430ba4f1a3d843bc7008e2 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 (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
  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. * @return array|bool The original ``$paypal`` array passed in (extracted) from ``$vars``, or false when conditions do NOT apply.
  37. *
  38. * @todo Optimize with ``empty()`` and ``isset()``.
  39. */
  40. public static function /* Conditional phase for ``c_ws_plugin__s2member_paypal_notify_in::paypal_notify()``. */ cp ($vars = array ())
  41. {
  42. extract /* Extract all vars passed in from: ``c_ws_plugin__s2member_paypal_notify_in::paypal_notify()``. */($vars);
  43. if ((!empty ($paypal["txn_type"]) && preg_match ("/^web_accept$/i", $paypal["txn_type"]))
  44. && (!empty ($paypal["item_number"]) && preg_match ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["sp_access_item_number_regex"], $paypal["item_number"]))
  45. && (empty ($paypal["payment_status"]) || empty ($payment_status_issues) || !preg_match ($payment_status_issues, $paypal["payment_status"]))
  46. && (!empty ($paypal["txn_id"])))
  47. {
  48. foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
  49. do_action ("ws_plugin__s2member_during_paypal_return_before_sp_access", get_defined_vars ());
  50. unset /* Unset defined __refs, __v. */ ($__refs, $__v);
  51. if (!get_transient ($transient_rtn = "s2m_rtn_" . md5 ("s2member_transient_" . $_paypal_s)) && set_transient ($transient_rtn, time (), 31556926 * 10))
  52. {
  53. $paypal["s2member_log"][] = "s2Member `txn_type` identified as ( `web_accept` ) for Specific Post/Page Access.";
  54. list (, $paypal["sp_ids"], $paypal["hours"]) = preg_split ("/\:/", $paypal["item_number"], 3);
  55. $paypal["ip"] = (preg_match ("/ip address/i", $paypal["option_name2"]) && $paypal["option_selection2"]) ? $paypal["option_selection2"] : "";
  56. $paypal["ip"] = (!$paypal["ip"] && preg_match ("/^[a-z0-9]+~[0-9\.]+$/i", $paypal["invoice"])) ? preg_replace ("/^[a-z0-9]+~/i", "", $paypal["invoice"]) : $paypal["ip"];
  57. $paypal["ip"] = (!$paypal["ip"] && $_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $paypal["ip"];
  58. if (($sp_access_url = c_ws_plugin__s2member_sp_access::sp_access_link_gen ($paypal["sp_ids"], $paypal["hours"], false)))
  59. {
  60. $processing = $during = /* Yes, we ARE processing this. */ true;
  61. 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);
  62. $paypal["s2member_log"][] = "Transient Tracking Cookie set on ( `web_accept` ) for Specific Post/Page Access.";
  63. if ($processing && ($code = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sp_tracking_codes"]) && is_array ($cv = preg_split ("/\|/", $paypal["custom"])))
  64. {
  65. if (($code = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $code)) && ($code = preg_replace ("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["mc_gross"]), $code)) && ($code = preg_replace ("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["txn_id"]), $code)))
  66. if (($code = preg_replace ("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["item_number"]), $code)) && ($code = preg_replace ("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["item_name"]), $code)))
  67. if (($code = preg_replace ("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["first_name"]), $code)) && ($code = preg_replace ("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["last_name"]), $code)))
  68. if (($code = preg_replace ("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (trim ($paypal["first_name"] . " " . $paypal["last_name"])), $code)))
  69. if (($code = preg_replace ("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["payer_email"]), $code)))
  70. if (($code = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($paypal["ip"]), $code)))
  71. if (($code = trim (preg_replace ("/%%(.+?)%%/i", "", $code)))) // This gets stored into a Transient Queue.
  72. {
  73. $paypal["s2member_log"][] = "Storing Specific Post/Page Tracking Codes into a Transient Queue. These will be processed on-site.";
  74. set_transient ("s2m_" . md5 ("s2member_transient_sp_tracking_codes_" . $paypal["txn_id"]), $code, 43200);
  75. }
  76. }
  77. foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
  78. do_action ("ws_plugin__s2member_during_paypal_return_during_sp_access", get_defined_vars ());
  79. unset /* Unset defined __refs, __v. */ ($__refs, $__v);
  80. if (apply_filters ("ws_plugin__s2member_immediate_sp_access_redirection", false, get_defined_vars ()))
  81. {
  82. $paypal["s2member_log"][] = "Redirecting Customer immediately to the Specific Post/Page.";
  83. wp_redirect /* Immediate redirection to Specific Post/Page. */($sp_access_url);
  84. }
  85. else if /* Using a custom success redirection URL? */ ($custom_success_redirection)
  86. {
  87. $paypal["s2member_log"][] = "Redirecting Customer to a custom URL on success: " . $custom_success_redirection;
  88. wp_redirect($custom_success_redirection);
  89. }
  90. else // Else use the default return URL in this scenario, which is the Specific Post/Page.
  91. {
  92. $paypal["s2member_log"][] = "Redirecting Customer to the Specific Post/Page (after displaying a thank-you message).";
  93. echo c_ws_plugin__s2member_return_templates::return_template ($paypal["subscr_gateway"],
  94. _x ('<strong>Thank You! Your transaction has been approved.</strong>', "s2member-front", "s2member"),
  95. _x ("Continue (Click Here)", "s2member-front", "s2member"), $sp_access_url);
  96. }
  97. }
  98. else // Otherwise, the ID must have been invalid. Or the Post/Page was deleted.
  99. {
  100. $paypal["s2member_log"][] = "Unable to generate Specific Post/Page Access Link. Does your Leading Post/Page still exist?";
  101. $paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after displaying an error message).";
  102. echo c_ws_plugin__s2member_return_templates::return_template ($paypal["subscr_gateway"],
  103. _x ('<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance.', "s2member-front", "s2member"),
  104. _x ("Back To Home Page", "s2member-front", "s2member"), home_url ("/"));
  105. }
  106. }
  107. else // Page Expired. Duplicate Return-Data.
  108. {
  109. $paypal["s2member_log"][] = "Page Expired. Duplicate Return-Data.";
  110. $paypal["s2member_log"][] = "s2Member `txn_type` identified as ( `web_accept` ) for Specific Post/Page Access.";
  111. $paypal["s2member_log"][] = "Page Expired. Redirecting Customer to the Home Page (after displaying an error message).";
  112. echo c_ws_plugin__s2member_return_templates::return_template ($paypal["subscr_gateway"],
  113. _x ('<strong>Page Expired:</strong> Duplicate Return-Data.<br />Please contact Support if you need any assistance.', "s2member-front", "s2member"),
  114. _x ("Back To Home Page", "s2member-front", "s2member"), home_url ("/"));
  115. }
  116. foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
  117. do_action ("ws_plugin__s2member_during_paypal_return_after_sp_access", get_defined_vars ());
  118. unset /* Unset defined __refs, __v. */ ($__refs, $__v);
  119. return apply_filters ("c_ws_plugin__s2member_paypal_return_in_web_accept_sp", $paypal, get_defined_vars ());
  120. }
  121. else return apply_filters ("c_ws_plugin__s2member_paypal_return_in_web_accept_sp", false, get_defined_vars ());
  122. }
  123. }
  124. }
  125. ?>