Version Description
- Framework updated to support a special %%modification%% Replacement Code in proxy IPN Return URLs; used by the s2Member Pro Module.
Download this release
Release Info
Developer | PriMoThemes |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 3.0.8 |
Comparing to | |
See all releases |
Code changes from version 3.0.6 to 3.0.8
- includes/functions/paypal-notify.inc.php +88 -55
- includes/functions/register-access.inc.php +37 -25
- includes/menu-pages/api-ops.inc.php +70 -70
- includes/menu-pages/paypal-ops.inc.php +32 -32
- includes/menu-pages/trk-ops.inc.php +26 -26
- readme.txt +9 -3
- s2member.php +3 -3
includes/functions/paypal-notify.inc.php
CHANGED
@@ -12,7 +12,7 @@ If not, see: <http://www.gnu.org/licenses/>.
|
|
12 |
Direct access denial.
|
13 |
*/
|
14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
15 |
-
exit("Do not access this file directly.");
|
16 |
/*
|
17 |
Handles PayPal® IPN URL processing.
|
18 |
These same routines also handle s2Member Pro/PayPal® Pro operations;
|
@@ -54,7 +54,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
54 |
/*
|
55 |
Custom conditionals can be applied by filters.
|
56 |
*/
|
57 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
58 |
if (!apply_filters ("ws_plugin__s2member_during_paypal_notify_conditionals", false, get_defined_vars ()))
|
59 |
{
|
60 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
@@ -67,7 +67,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
67 |
if (/**/preg_match ("/^express_checkout$/i", $paypal["txn_type"])/**/
|
68 |
&& $paypal["item_number"] && $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
69 |
{
|
70 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
71 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_express_checkout", get_defined_vars ());
|
72 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
73 |
/**/
|
@@ -78,11 +78,11 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
78 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
79 |
$paypal["s2member_log"][] = "s2Member Pro handles Express Checkout events on-site, with an IPN proxy.";
|
80 |
/**/
|
81 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
82 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_express_checkout", get_defined_vars ());
|
83 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
84 |
/**/
|
85 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
86 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_express_checkout", get_defined_vars ());
|
87 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
88 |
}
|
@@ -95,7 +95,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
95 |
else if (/**/preg_match ("/^cart$/i", $paypal["txn_type"])/**/
|
96 |
&& $paypal["item_number1"] && $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
97 |
{
|
98 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
99 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_cart", get_defined_vars ());
|
100 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
101 |
/**/
|
@@ -106,11 +106,11 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
106 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
107 |
$paypal["s2member_log"][] = "s2Member Pro handles Cart events on-site, with an IPN proxy.";
|
108 |
/**/
|
109 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
110 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_cart", get_defined_vars ());
|
111 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
112 |
/**/
|
113 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
114 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_cart", get_defined_vars ());
|
115 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
116 |
}
|
@@ -121,7 +121,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
121 |
&& preg_match ("/^sp\:[0-9,]+\:[0-9]+$/", $paypal["item_number"])/**/
|
122 |
&& $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
123 |
{
|
124 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
125 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_sp_access", get_defined_vars ());
|
126 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
127 |
/**/
|
@@ -173,11 +173,27 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
173 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
174 |
/**/
|
175 |
if (($url = trim ($url))) /* Empty? */
|
176 |
-
ws_plugin__s2member_remote($url);
|
177 |
/**/
|
178 |
$paypal["s2member_log"][] = "Specific Post/Page Access Notification URLs have been processed.";
|
179 |
}
|
180 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
if ($processing && ($code = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sp_tracking_codes"]))
|
182 |
{
|
183 |
if (($code = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $code)) && ($code = preg_replace ("/%%amount%%/i", ws_plugin__s2member_esc_ds ($paypal["mc_gross"]), $code)) && ($code = preg_replace ("/%%txn_id%%/i", ws_plugin__s2member_esc_ds ($paypal["txn_id"]), $code)))
|
@@ -193,7 +209,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
193 |
}
|
194 |
}
|
195 |
/**/
|
196 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
197 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_sp_access", get_defined_vars ());
|
198 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
199 |
}
|
@@ -202,7 +218,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
202 |
$paypal["s2member_log"][] = "Unable to generate Access Link for Specific Post/Page Access. Does your Leading Post/Page still exist?";
|
203 |
}
|
204 |
/**/
|
205 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
206 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_sp_access", get_defined_vars ());
|
207 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
208 |
}
|
@@ -216,7 +232,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
216 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/
|
217 |
&& $paypal["payer_email"]/**/)
|
218 |
{
|
219 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
220 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup", get_defined_vars ());
|
221 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
222 |
/**/
|
@@ -242,7 +258,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
242 |
/* This advanced method is required whenever a Subscription that is already completed, or was never setup to recur in the first place needs to be modified. PayPal will not allow the
|
243 |
modify=1|2 parameter to be used in those scenarios, because technically there is nothing to update. The only thing that actually needs to be updated is the account. */
|
244 |
{
|
245 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
246 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup_w_update_vars", get_defined_vars ());
|
247 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
248 |
/**/
|
@@ -253,7 +269,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
253 |
{
|
254 |
if (!ws_plugin__s2member_user_has_wp_role ($user)) /* Non WP Roles. */
|
255 |
{
|
256 |
-
$processing = $during = true; /* Yes, we ARE processing this. */
|
257 |
/**/
|
258 |
$user->set_role ("s2member_level" . $paypal["level"]);
|
259 |
update_usermeta ($user_id, "s2member_subscr_id", $paypal["subscr_id"]);
|
@@ -283,7 +299,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
283 |
/**/
|
284 |
$paypal["s2member_log"][] = "Modification Confirmation Email sent to Customer, with a URL that provides them with a way to log back in.";
|
285 |
/**/
|
286 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
287 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_signup_w_update_vars", get_defined_vars ());
|
288 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
289 |
}
|
@@ -297,7 +313,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
297 |
$paypal["s2member_log"][] = "Unable to modify Subscription. Could not get the existing User ID from the DB. Please check the on0 and os0 variables in your Button Code.";
|
298 |
}
|
299 |
/**/
|
300 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
301 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup_w_update_vars", get_defined_vars ());
|
302 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
303 |
}
|
@@ -306,7 +322,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
306 |
*/
|
307 |
else /* Else this is a normal Subscription signup, we are not updating anything. */
|
308 |
{
|
309 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
310 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup_wo_update_vars", get_defined_vars ());
|
311 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
312 |
/**/
|
@@ -359,7 +375,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
359 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
360 |
/**/
|
361 |
if (($url = trim ($url))) /* Empty? */
|
362 |
-
ws_plugin__s2member_remote($url);
|
363 |
/**/
|
364 |
$paypal["s2member_log"][] = "Signup Notification URLs have been processed.";
|
365 |
}
|
@@ -381,7 +397,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
381 |
}
|
382 |
}
|
383 |
/**/
|
384 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
385 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_signup_wo_update_vars", get_defined_vars ());
|
386 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
387 |
}
|
@@ -390,11 +406,28 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
390 |
$paypal["s2member_log"][] = "Unable to generate Registration URL for Membership Access. Possible data corruption within the IPN response.";
|
391 |
}
|
392 |
/**/
|
393 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
394 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup_wo_update_vars", get_defined_vars ());
|
395 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
396 |
}
|
397 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
398 |
if ($processing && preg_match ("/^web_accept$/i", $paypal["txn_type"]) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"] && is_array ($cv = preg_split ("/\|/", $paypal["custom"])))
|
399 |
{
|
400 |
foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"]) as $url)
|
@@ -407,12 +440,12 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
407 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
408 |
/**/
|
409 |
if (($url = trim ($url))) /* Empty? */
|
410 |
-
ws_plugin__s2member_remote($url);
|
411 |
/**/
|
412 |
$paypal["s2member_log"][] = "Payment Notification URLs have been processed.";
|
413 |
}
|
414 |
/**/
|
415 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
416 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup", get_defined_vars ());
|
417 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
418 |
}
|
@@ -429,7 +462,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
429 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/)
|
430 |
/* The "payer_email" is not passed in: recurring_payment_profile_created ?? */
|
431 |
{
|
432 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
433 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_recurring_payment_profile_created", get_defined_vars ());
|
434 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
435 |
/**/
|
@@ -440,11 +473,11 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
440 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
441 |
$paypal["s2member_log"][] = "s2Member Pro handles this event on-site, with an IPN proxy.";
|
442 |
/**/
|
443 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
444 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_recurring_payment_profile_created", get_defined_vars ());
|
445 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
446 |
/**/
|
447 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
448 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_recurring_payment_profile_created", get_defined_vars ());
|
449 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
450 |
}
|
@@ -455,7 +488,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
455 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/
|
456 |
&& $paypal["subscr_id"] && $paypal["payer_email"]/**/)
|
457 |
{
|
458 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
459 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_modify", get_defined_vars ());
|
460 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
461 |
/**/
|
@@ -467,7 +500,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
467 |
{
|
468 |
if (!ws_plugin__s2member_user_has_wp_role ($user)) /* Non WP Roles. */
|
469 |
{
|
470 |
-
$processing = $during = true; /* Yes, we ARE processing this. */
|
471 |
/**/
|
472 |
$user->set_role ("s2member_level" . $paypal["level"]);
|
473 |
update_usermeta ($user_id, "s2member_subscr_id", $paypal["subscr_id"]);
|
@@ -493,7 +526,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
493 |
/**/
|
494 |
$paypal["s2member_log"][] = "Modification Confirmation Email sent to Customer, with a URL that provides them with a way to log back in.";
|
495 |
/**/
|
496 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
497 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_modify", get_defined_vars ());
|
498 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
499 |
}
|
@@ -507,7 +540,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
507 |
$paypal["s2member_log"][] = "Unable to modify Subscription. Could not get the existing User ID from the DB.";
|
508 |
}
|
509 |
/**/
|
510 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
511 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_modify", get_defined_vars ());
|
512 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
513 |
}
|
@@ -522,14 +555,14 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
522 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/
|
523 |
&& $paypal["payer_email"] && $paypal["txn_id"] && $paypal["mc_gross"]/**/)
|
524 |
{
|
525 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
526 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_payment", get_defined_vars ());
|
527 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
528 |
/**/
|
529 |
$paypal["s2member_log"][] = "s2Member txn_type identified as subscr_payment|recurring_payment.";
|
530 |
$paypal["s2member_log"][] = "Sleeping for 2 seconds. Waiting for a possible subscr_signup|subscr_modify|recurring_payment_profile_created.";
|
531 |
-
sleep(2); /* Sleep here for a moment. PayPal® sometimes sends a subscr_payment before the subscr_signup, subscr_modify.
|
532 |
-
|
533 |
$paypal["s2member_log"][] = "Awake. It's " . date ("D M j, Y g:i:s a T") . ". s2Member txn_type identified as subscr_payment|recurring_payment.";
|
534 |
/**/
|
535 |
list ($paypal["level"], $paypal["ccaps"]) = preg_split ("/\:/", $paypal["item_number"], 2);
|
@@ -554,12 +587,12 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
554 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
555 |
/**/
|
556 |
if (($url = trim ($url))) /* Empty? */
|
557 |
-
ws_plugin__s2member_remote($url);
|
558 |
/**/
|
559 |
$paypal["s2member_log"][] = "Payment Notification URLs have been processed.";
|
560 |
}
|
561 |
/**/
|
562 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
563 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_payment", get_defined_vars ());
|
564 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
565 |
}
|
@@ -570,7 +603,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
570 |
set_transient (md5 ("s2member_transient_ipn_subscr_payment_" . $paypal["subscr_id"]), $_POST, 43200);
|
571 |
}
|
572 |
/**/
|
573 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
574 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_payment", get_defined_vars ());
|
575 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
576 |
}
|
@@ -587,7 +620,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
587 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/
|
588 |
&& $paypal["payer_email"]/**/)
|
589 |
{
|
590 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
591 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_failed", get_defined_vars ());
|
592 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
593 |
/**/
|
@@ -599,11 +632,11 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
599 |
$paypal["s2member_log"][] = "s2Member does NOT respond to individual failed payments, only multiple consecutive failed payments.";
|
600 |
$paypal["s2member_log"][] = "When multiple consecutive payments fail, a special IPN response will be triggered.";
|
601 |
/**/
|
602 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
603 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_failed", get_defined_vars ());
|
604 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
605 |
/**/
|
606 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
607 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_failed", get_defined_vars ());
|
608 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
609 |
}
|
@@ -622,7 +655,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
622 |
&& ($paypal["period3"] || ($paypal["period3"] = ws_plugin__s2member_paypal_pro_period3 ($paypal)))/**/
|
623 |
&& $paypal["payer_email"]/**/)
|
624 |
{
|
625 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
626 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_cancel", get_defined_vars ());
|
627 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
628 |
/**/
|
@@ -642,7 +675,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
642 |
/**/
|
643 |
$paypal["s2member_log"][] = "Auto-EOT Time for this account: " . date ("D M j, Y g:i a T", $auto_eot_time);
|
644 |
/**/
|
645 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
646 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_cancel", get_defined_vars ());
|
647 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
648 |
}
|
@@ -656,7 +689,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
656 |
$paypal["s2member_log"][] = "Unable to handle Cancellation. Could not get the existing User ID from the DB.";
|
657 |
}
|
658 |
/**/
|
659 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
660 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_cancel", get_defined_vars ());
|
661 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
662 |
}
|
@@ -672,7 +705,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
672 |
&& ($paypal["item_number"] || ($paypal["item_number"] = ws_plugin__s2member_paypal_pro_item_number ($paypal)))/**/
|
673 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/)
|
674 |
{
|
675 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
676 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_eot", get_defined_vars ());
|
677 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
678 |
/**/
|
@@ -719,12 +752,12 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
719 |
if (($url = preg_replace ("/%%user_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($user->user_email)), $url)))
|
720 |
/**/
|
721 |
if (($url = trim ($url))) /* Empty? */
|
722 |
-
ws_plugin__s2member_remote($url);
|
723 |
/**/
|
724 |
$paypal["s2member_log"][] = "EOT/Deletion Notification URLs have been processed.";
|
725 |
}
|
726 |
/**/
|
727 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
728 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_demote", get_defined_vars ());
|
729 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
730 |
}
|
@@ -732,19 +765,19 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
732 |
{
|
733 |
$processing = $during = true; /* Yes, we ARE processing this. */
|
734 |
/**/
|
735 |
-
wp_delete_user($user_id); /* Triggers: `ws_plugin__s2member_handle_user_deletions()` */
|
736 |
/* `ws_plugin__s2member_handle_user_deletions()` triggers `eot_del_notification_urls` */
|
737 |
/**/
|
738 |
$paypal["s2member_log"][] = "The Member's account has been deleted completely.";
|
739 |
/**/
|
740 |
$paypal["s2member_log"][] = "EOT/Deletion Notification URLs have been processed.";
|
741 |
/**/
|
742 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
743 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_delete", get_defined_vars ());
|
744 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
745 |
}
|
746 |
/**/
|
747 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
748 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot", get_defined_vars ());
|
749 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
750 |
}
|
@@ -758,7 +791,7 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
758 |
$paypal["s2member_log"][] = "Auto-EOT is currently disabled. Skipping immediate EOT (demote|delete), for now.";
|
759 |
$paypal["s2member_log"][] = "Recording the Auto-EOT Time for this Member's account: " . date ("D M j, Y g:i a T", $auto_eot_time);
|
760 |
/**/
|
761 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
762 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_disabled", get_defined_vars ());
|
763 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
764 |
}
|
@@ -797,17 +830,17 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
797 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
798 |
/**/
|
799 |
if (($url = trim ($url))) /* Empty? */
|
800 |
-
ws_plugin__s2member_remote($url);
|
801 |
/**/
|
802 |
$paypal["s2member_log"][] = "Refund/Reversal Notification URLs have been processed.";
|
803 |
}
|
804 |
/**/
|
805 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
806 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_refund_reversal", get_defined_vars ());
|
807 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
808 |
}
|
809 |
/**/
|
810 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
811 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_eot", get_defined_vars ());
|
812 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
813 |
}
|
@@ -864,14 +897,14 @@ if (!function_exists ("ws_plugin__s2member_paypal_notify"))
|
|
864 |
if (is_writable ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
|
865 |
file_put_contents ($logs_dir . "/paypal-ipn.log", var_export ($paypal, true) . "\n\n", FILE_APPEND);
|
866 |
/**/
|
867 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
868 |
do_action ("ws_plugin__s2member_during_paypal_notify", get_defined_vars ());
|
869 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
870 |
/**/
|
871 |
-
exit ();
|
872 |
}
|
873 |
/**/
|
874 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
875 |
do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());
|
876 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
877 |
}
|
12 |
Direct access denial.
|
13 |
*/
|
14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
15 |
+
exit ("Do not access this file directly.");
|
16 |
/*
|
17 |
Handles PayPal® IPN URL processing.
|
18 |
These same routines also handle s2Member Pro/PayPal® Pro operations;
|
54 |
/*
|
55 |
Custom conditionals can be applied by filters.
|
56 |
*/
|
57 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
58 |
if (!apply_filters ("ws_plugin__s2member_during_paypal_notify_conditionals", false, get_defined_vars ()))
|
59 |
{
|
60 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
67 |
if (/**/preg_match ("/^express_checkout$/i", $paypal["txn_type"])/**/
|
68 |
&& $paypal["item_number"] && $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
69 |
{
|
70 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
71 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_express_checkout", get_defined_vars ());
|
72 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
73 |
/**/
|
78 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
79 |
$paypal["s2member_log"][] = "s2Member Pro handles Express Checkout events on-site, with an IPN proxy.";
|
80 |
/**/
|
81 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
82 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_express_checkout", get_defined_vars ());
|
83 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
84 |
/**/
|
85 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
86 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_express_checkout", get_defined_vars ());
|
87 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
88 |
}
|
95 |
else if (/**/preg_match ("/^cart$/i", $paypal["txn_type"])/**/
|
96 |
&& $paypal["item_number1"] && $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
97 |
{
|
98 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
99 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_cart", get_defined_vars ());
|
100 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
101 |
/**/
|
106 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
107 |
$paypal["s2member_log"][] = "s2Member Pro handles Cart events on-site, with an IPN proxy.";
|
108 |
/**/
|
109 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
110 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_cart", get_defined_vars ());
|
111 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
112 |
/**/
|
113 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
114 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_cart", get_defined_vars ());
|
115 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
116 |
}
|
121 |
&& preg_match ("/^sp\:[0-9,]+\:[0-9]+$/", $paypal["item_number"])/**/
|
122 |
&& $paypal["payer_email"] && $paypal["txn_id"]/**/)
|
123 |
{
|
124 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
125 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_sp_access", get_defined_vars ());
|
126 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
127 |
/**/
|
173 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
174 |
/**/
|
175 |
if (($url = trim ($url))) /* Empty? */
|
176 |
+
ws_plugin__s2member_remote ($url);
|
177 |
/**/
|
178 |
$paypal["s2member_log"][] = "Specific Post/Page Access Notification URLs have been processed.";
|
179 |
}
|
180 |
/**/
|
181 |
+
if ($processing && ($url = $paypal["proxy_return_url"])) /* A proxy is requesting a return URL for this transaction? */
|
182 |
+
{
|
183 |
+
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace ("/%%sp_access_url%%/i", ws_plugin__s2member_esc_ds (rawurlencode ($sp_access_url)), $url)))
|
184 |
+
if (($url = preg_replace ("/%%sp_access_exp%%/i", ws_plugin__s2member_esc_ds (urlencode (ws_plugin__s2member_approx_time_difference (time (), strtotime ("+" . $paypal["hours"] . " hours")))), $url)))
|
185 |
+
if (($url = preg_replace ("/%%amount%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["mc_gross"])), $url)) && ($url = preg_replace ("/%%txn_id%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["txn_id"])), $url)))
|
186 |
+
if (($url = preg_replace ("/%%item_number%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["item_number"])), $url)) && ($url = preg_replace ("/%%item_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["item_name"])), $url)))
|
187 |
+
if (($url = preg_replace ("/%%first_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["first_name"])), $url)) && ($url = preg_replace ("/%%last_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["last_name"])), $url)))
|
188 |
+
if (($url = preg_replace ("/%%full_name%%/i", ws_plugin__s2member_esc_ds (urlencode (trim ($paypal["first_name"] . " " . $paypal["last_name"]))), $url)))
|
189 |
+
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
190 |
+
/**/
|
191 |
+
if (($url = trim ($url))) /* Empty? */
|
192 |
+
$paypal["proxy_return_url"] = $url;
|
193 |
+
/**/
|
194 |
+
$paypal["s2member_log"][] = "Specific Post/Page Return, a Proxy Return URL is ready.";
|
195 |
+
}
|
196 |
+
/**/
|
197 |
if ($processing && ($code = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sp_tracking_codes"]))
|
198 |
{
|
199 |
if (($code = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $code)) && ($code = preg_replace ("/%%amount%%/i", ws_plugin__s2member_esc_ds ($paypal["mc_gross"]), $code)) && ($code = preg_replace ("/%%txn_id%%/i", ws_plugin__s2member_esc_ds ($paypal["txn_id"]), $code)))
|
209 |
}
|
210 |
}
|
211 |
/**/
|
212 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
213 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_sp_access", get_defined_vars ());
|
214 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
215 |
}
|
218 |
$paypal["s2member_log"][] = "Unable to generate Access Link for Specific Post/Page Access. Does your Leading Post/Page still exist?";
|
219 |
}
|
220 |
/**/
|
221 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
222 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_sp_access", get_defined_vars ());
|
223 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
224 |
}
|
232 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/
|
233 |
&& $paypal["payer_email"]/**/)
|
234 |
{
|
235 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
236 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup", get_defined_vars ());
|
237 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
238 |
/**/
|
258 |
/* This advanced method is required whenever a Subscription that is already completed, or was never setup to recur in the first place needs to be modified. PayPal will not allow the
|
259 |
modify=1|2 parameter to be used in those scenarios, because technically there is nothing to update. The only thing that actually needs to be updated is the account. */
|
260 |
{
|
261 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
262 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup_w_update_vars", get_defined_vars ());
|
263 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
264 |
/**/
|
269 |
{
|
270 |
if (!ws_plugin__s2member_user_has_wp_role ($user)) /* Non WP Roles. */
|
271 |
{
|
272 |
+
$processing = $modifying = $during = true; /* Yes, we ARE processing this. */
|
273 |
/**/
|
274 |
$user->set_role ("s2member_level" . $paypal["level"]);
|
275 |
update_usermeta ($user_id, "s2member_subscr_id", $paypal["subscr_id"]);
|
299 |
/**/
|
300 |
$paypal["s2member_log"][] = "Modification Confirmation Email sent to Customer, with a URL that provides them with a way to log back in.";
|
301 |
/**/
|
302 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
303 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_signup_w_update_vars", get_defined_vars ());
|
304 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
305 |
}
|
313 |
$paypal["s2member_log"][] = "Unable to modify Subscription. Could not get the existing User ID from the DB. Please check the on0 and os0 variables in your Button Code.";
|
314 |
}
|
315 |
/**/
|
316 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
317 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup_w_update_vars", get_defined_vars ());
|
318 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
319 |
}
|
322 |
*/
|
323 |
else /* Else this is a normal Subscription signup, we are not updating anything. */
|
324 |
{
|
325 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
326 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_signup_wo_update_vars", get_defined_vars ());
|
327 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
328 |
/**/
|
375 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
376 |
/**/
|
377 |
if (($url = trim ($url))) /* Empty? */
|
378 |
+
ws_plugin__s2member_remote ($url);
|
379 |
/**/
|
380 |
$paypal["s2member_log"][] = "Signup Notification URLs have been processed.";
|
381 |
}
|
397 |
}
|
398 |
}
|
399 |
/**/
|
400 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
401 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_signup_wo_update_vars", get_defined_vars ());
|
402 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
403 |
}
|
406 |
$paypal["s2member_log"][] = "Unable to generate Registration URL for Membership Access. Possible data corruption within the IPN response.";
|
407 |
}
|
408 |
/**/
|
409 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
410 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup_wo_update_vars", get_defined_vars ());
|
411 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
412 |
}
|
413 |
/**/
|
414 |
+
if ($processing && ($url = $paypal["proxy_return_url"])) /* A proxy is requesting a return URL for this transaction? */
|
415 |
+
{
|
416 |
+
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace ("/%%subscr_id%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["subscr_id"])), $url)))
|
417 |
+
if (($url = preg_replace ("/%%initial%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["initial"])), $url)) && ($url = preg_replace ("/%%regular%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["regular"])), $url)) && ($url = preg_replace ("/%%recurring%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["recurring"])), $url)))
|
418 |
+
if (($url = preg_replace ("/%%initial_term%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["initial_term"])), $url)) && ($url = preg_replace ("/%%regular_term%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["regular_term"])), $url)))
|
419 |
+
if (($url = preg_replace ("/%%item_number%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["item_number"])), $url)) && ($url = preg_replace ("/%%item_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["item_name"])), $url)))
|
420 |
+
if (($url = preg_replace ("/%%first_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["first_name"])), $url)) && ($url = preg_replace ("/%%last_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["last_name"])), $url)))
|
421 |
+
if (($url = preg_replace ("/%%full_name%%/i", ws_plugin__s2member_esc_ds (urlencode (trim ($paypal["first_name"] . " " . $paypal["last_name"]))), $url)))
|
422 |
+
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
423 |
+
if (($url = preg_replace ("/%%modification%%/i", ws_plugin__s2member_esc_ds (urlencode ((int)$modifying)), $url)))
|
424 |
+
/* The modification variable indicates whether this was a modification, or a new signup. */
|
425 |
+
if (($url = trim ($url))) /* Empty? */
|
426 |
+
$paypal["proxy_return_url"] = $url;
|
427 |
+
/**/
|
428 |
+
$paypal["s2member_log"][] = "Subscr. Return ( modification=" . (int)$modifying . " ), a Proxy Return URL is ready.";
|
429 |
+
}
|
430 |
+
/**/
|
431 |
if ($processing && preg_match ("/^web_accept$/i", $paypal["txn_type"]) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"] && is_array ($cv = preg_split ("/\|/", $paypal["custom"])))
|
432 |
{
|
433 |
foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"]) as $url)
|
440 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
441 |
/**/
|
442 |
if (($url = trim ($url))) /* Empty? */
|
443 |
+
ws_plugin__s2member_remote ($url);
|
444 |
/**/
|
445 |
$paypal["s2member_log"][] = "Payment Notification URLs have been processed.";
|
446 |
}
|
447 |
/**/
|
448 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
449 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_signup", get_defined_vars ());
|
450 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
451 |
}
|
462 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/)
|
463 |
/* The "payer_email" is not passed in: recurring_payment_profile_created ?? */
|
464 |
{
|
465 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
466 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_recurring_payment_profile_created", get_defined_vars ());
|
467 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
468 |
/**/
|
473 |
$paypal["s2member_log"][] = "The txn_type does not require any action on the part of s2Member.";
|
474 |
$paypal["s2member_log"][] = "s2Member Pro handles this event on-site, with an IPN proxy.";
|
475 |
/**/
|
476 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
477 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_recurring_payment_profile_created", get_defined_vars ());
|
478 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
479 |
/**/
|
480 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
481 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_recurring_payment_profile_created", get_defined_vars ());
|
482 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
483 |
}
|
488 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/
|
489 |
&& $paypal["subscr_id"] && $paypal["payer_email"]/**/)
|
490 |
{
|
491 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
492 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_modify", get_defined_vars ());
|
493 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
494 |
/**/
|
500 |
{
|
501 |
if (!ws_plugin__s2member_user_has_wp_role ($user)) /* Non WP Roles. */
|
502 |
{
|
503 |
+
$processing = $modifying = $during = true; /* Yes, we ARE processing this. */
|
504 |
/**/
|
505 |
$user->set_role ("s2member_level" . $paypal["level"]);
|
506 |
update_usermeta ($user_id, "s2member_subscr_id", $paypal["subscr_id"]);
|
526 |
/**/
|
527 |
$paypal["s2member_log"][] = "Modification Confirmation Email sent to Customer, with a URL that provides them with a way to log back in.";
|
528 |
/**/
|
529 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
530 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_modify", get_defined_vars ());
|
531 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
532 |
}
|
540 |
$paypal["s2member_log"][] = "Unable to modify Subscription. Could not get the existing User ID from the DB.";
|
541 |
}
|
542 |
/**/
|
543 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
544 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_modify", get_defined_vars ());
|
545 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
546 |
}
|
555 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/
|
556 |
&& $paypal["payer_email"] && $paypal["txn_id"] && $paypal["mc_gross"]/**/)
|
557 |
{
|
558 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
559 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_payment", get_defined_vars ());
|
560 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
561 |
/**/
|
562 |
$paypal["s2member_log"][] = "s2Member txn_type identified as subscr_payment|recurring_payment.";
|
563 |
$paypal["s2member_log"][] = "Sleeping for 2 seconds. Waiting for a possible subscr_signup|subscr_modify|recurring_payment_profile_created.";
|
564 |
+
sleep (2); /* Sleep here for a moment. PayPal® sometimes sends a subscr_payment before the subscr_signup, subscr_modify.
|
565 |
+
It is NOT a big deal if they do. However, s2Member goes to sleep here, just to help keep the log files in a logical order. */
|
566 |
$paypal["s2member_log"][] = "Awake. It's " . date ("D M j, Y g:i:s a T") . ". s2Member txn_type identified as subscr_payment|recurring_payment.";
|
567 |
/**/
|
568 |
list ($paypal["level"], $paypal["ccaps"]) = preg_split ("/\:/", $paypal["item_number"], 2);
|
587 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
588 |
/**/
|
589 |
if (($url = trim ($url))) /* Empty? */
|
590 |
+
ws_plugin__s2member_remote ($url);
|
591 |
/**/
|
592 |
$paypal["s2member_log"][] = "Payment Notification URLs have been processed.";
|
593 |
}
|
594 |
/**/
|
595 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
596 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_payment", get_defined_vars ());
|
597 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
598 |
}
|
603 |
set_transient (md5 ("s2member_transient_ipn_subscr_payment_" . $paypal["subscr_id"]), $_POST, 43200);
|
604 |
}
|
605 |
/**/
|
606 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
607 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_payment", get_defined_vars ());
|
608 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
609 |
}
|
620 |
&& ($paypal["item_name"] || ($paypal["item_name"] = $paypal["product_name"]))/**/
|
621 |
&& $paypal["payer_email"]/**/)
|
622 |
{
|
623 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
624 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_failed", get_defined_vars ());
|
625 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
626 |
/**/
|
632 |
$paypal["s2member_log"][] = "s2Member does NOT respond to individual failed payments, only multiple consecutive failed payments.";
|
633 |
$paypal["s2member_log"][] = "When multiple consecutive payments fail, a special IPN response will be triggered.";
|
634 |
/**/
|
635 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
636 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_failed", get_defined_vars ());
|
637 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
638 |
/**/
|
639 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
640 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_failed", get_defined_vars ());
|
641 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
642 |
}
|
655 |
&& ($paypal["period3"] || ($paypal["period3"] = ws_plugin__s2member_paypal_pro_period3 ($paypal)))/**/
|
656 |
&& $paypal["payer_email"]/**/)
|
657 |
{
|
658 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
659 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_cancel", get_defined_vars ());
|
660 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
661 |
/**/
|
675 |
/**/
|
676 |
$paypal["s2member_log"][] = "Auto-EOT Time for this account: " . date ("D M j, Y g:i a T", $auto_eot_time);
|
677 |
/**/
|
678 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
679 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_cancel", get_defined_vars ());
|
680 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
681 |
}
|
689 |
$paypal["s2member_log"][] = "Unable to handle Cancellation. Could not get the existing User ID from the DB.";
|
690 |
}
|
691 |
/**/
|
692 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
693 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_cancel", get_defined_vars ());
|
694 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
695 |
}
|
705 |
&& ($paypal["item_number"] || ($paypal["item_number"] = ws_plugin__s2member_paypal_pro_item_number ($paypal)))/**/
|
706 |
&& preg_match ("/^[1-4](\:|$)([a-z_0-9,]+)?(\:)?([0-9]+ [A-Z])?$/", $paypal["item_number"])/**/)
|
707 |
{
|
708 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
709 |
do_action ("ws_plugin__s2member_during_paypal_notify_before_subscr_eot", get_defined_vars ());
|
710 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
711 |
/**/
|
752 |
if (($url = preg_replace ("/%%user_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($user->user_email)), $url)))
|
753 |
/**/
|
754 |
if (($url = trim ($url))) /* Empty? */
|
755 |
+
ws_plugin__s2member_remote ($url);
|
756 |
/**/
|
757 |
$paypal["s2member_log"][] = "EOT/Deletion Notification URLs have been processed.";
|
758 |
}
|
759 |
/**/
|
760 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
761 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_demote", get_defined_vars ());
|
762 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
763 |
}
|
765 |
{
|
766 |
$processing = $during = true; /* Yes, we ARE processing this. */
|
767 |
/**/
|
768 |
+
wp_delete_user ($user_id); /* Triggers: `ws_plugin__s2member_handle_user_deletions()` */
|
769 |
/* `ws_plugin__s2member_handle_user_deletions()` triggers `eot_del_notification_urls` */
|
770 |
/**/
|
771 |
$paypal["s2member_log"][] = "The Member's account has been deleted completely.";
|
772 |
/**/
|
773 |
$paypal["s2member_log"][] = "EOT/Deletion Notification URLs have been processed.";
|
774 |
/**/
|
775 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
776 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_delete", get_defined_vars ());
|
777 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
778 |
}
|
779 |
/**/
|
780 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
781 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot", get_defined_vars ());
|
782 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
783 |
}
|
791 |
$paypal["s2member_log"][] = "Auto-EOT is currently disabled. Skipping immediate EOT (demote|delete), for now.";
|
792 |
$paypal["s2member_log"][] = "Recording the Auto-EOT Time for this Member's account: " . date ("D M j, Y g:i a T", $auto_eot_time);
|
793 |
/**/
|
794 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
795 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_disabled", get_defined_vars ());
|
796 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
797 |
}
|
830 |
if (($url = preg_replace ("/%%payer_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($paypal["payer_email"])), $url)))
|
831 |
/**/
|
832 |
if (($url = trim ($url))) /* Empty? */
|
833 |
+
ws_plugin__s2member_remote ($url);
|
834 |
/**/
|
835 |
$paypal["s2member_log"][] = "Refund/Reversal Notification URLs have been processed.";
|
836 |
}
|
837 |
/**/
|
838 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
839 |
do_action ("ws_plugin__s2member_during_paypal_notify_during_subscr_eot_refund_reversal", get_defined_vars ());
|
840 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
841 |
}
|
842 |
/**/
|
843 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
844 |
do_action ("ws_plugin__s2member_during_paypal_notify_after_subscr_eot", get_defined_vars ());
|
845 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
846 |
}
|
897 |
if (is_writable ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
|
898 |
file_put_contents ($logs_dir . "/paypal-ipn.log", var_export ($paypal, true) . "\n\n", FILE_APPEND);
|
899 |
/**/
|
900 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
901 |
do_action ("ws_plugin__s2member_during_paypal_notify", get_defined_vars ());
|
902 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
903 |
/**/
|
904 |
+
exit ($paypal["proxy_return_url"]); /* Return, if/when applicable. */
|
905 |
}
|
906 |
/**/
|
907 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
908 |
do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());
|
909 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
910 |
}
|
includes/functions/register-access.inc.php
CHANGED
@@ -12,7 +12,7 @@ If not, see: <http://www.gnu.org/licenses/>.
|
|
12 |
Direct access denial.
|
13 |
*/
|
14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
15 |
-
exit
|
16 |
/*
|
17 |
Forces a default Role for new registrations not tied to an incoming payment.
|
18 |
Attach to: add_filter("pre_option_default_role");
|
@@ -95,13 +95,13 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
95 |
/**/
|
96 |
$tabindex = 20; /* Incremented tabindex starting with 20. */
|
97 |
/**/
|
98 |
-
eval
|
99 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before", get_defined_vars ());
|
100 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
101 |
/**/
|
102 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && function_exists ("ws_plugin__s2member_generate_password"))
|
103 |
{
|
104 |
-
eval
|
105 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_user_pass", get_defined_vars ());
|
106 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
107 |
/**/
|
@@ -112,12 +112,12 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
112 |
echo '</label>' . "\n";
|
113 |
echo '</p>';
|
114 |
/**/
|
115 |
-
eval
|
116 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_user_pass", get_defined_vars ());
|
117 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
118 |
}
|
119 |
/**/
|
120 |
-
eval
|
121 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_first_name", get_defined_vars ());
|
122 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
123 |
/**/
|
@@ -128,11 +128,11 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
128 |
echo '</label>' . "\n";
|
129 |
echo '</p>';
|
130 |
/**/
|
131 |
-
eval
|
132 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_first_name", get_defined_vars ());
|
133 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
134 |
/**/
|
135 |
-
eval
|
136 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_last_name", get_defined_vars ());
|
137 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
138 |
/**/
|
@@ -143,7 +143,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
143 |
echo '</label>' . "\n";
|
144 |
echo '</p>';
|
145 |
/**/
|
146 |
-
eval
|
147 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_last_name", get_defined_vars ());
|
148 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
149 |
/**/
|
@@ -154,7 +154,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
154 |
/**/
|
155 |
if ($field = trim ($field, "* \t\n\r\0\x0B")) /* Don't process empty fields. */
|
156 |
{
|
157 |
-
eval
|
158 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_custom_fields", get_defined_vars ());
|
159 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
160 |
/**/
|
@@ -168,7 +168,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
168 |
echo '</label>' . "\n";
|
169 |
echo '</p>';
|
170 |
/**/
|
171 |
-
eval
|
172 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_custom_fields", get_defined_vars ());
|
173 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
174 |
}
|
@@ -176,7 +176,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
176 |
/**/
|
177 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && ws_plugin__s2member_list_servers_integrated ())
|
178 |
{
|
179 |
-
eval
|
180 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_opt_in", get_defined_vars ());
|
181 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
182 |
/**/
|
@@ -187,16 +187,16 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
|
|
187 |
echo '</label>' . "\n";
|
188 |
echo '</p>';
|
189 |
/**/
|
190 |
-
eval
|
191 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_opt_in", get_defined_vars ());
|
192 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
193 |
}
|
194 |
/**/
|
195 |
-
eval
|
196 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after", get_defined_vars ());
|
197 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
198 |
/**/
|
199 |
-
eval
|
200 |
do_action ("ws_plugin__s2member_after_custom_registration_fields", get_defined_vars ());
|
201 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
202 |
/**/
|
@@ -243,7 +243,7 @@ if (!function_exists ("ws_plugin__s2member_register_link_gen"))
|
|
243 |
{
|
244 |
function ws_plugin__s2member_register_link_gen ($subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
245 |
{
|
246 |
-
eval
|
247 |
do_action ("ws_plugin__s2member_before_register_link_gen", get_defined_vars ());
|
248 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
249 |
/**/
|
@@ -311,7 +311,7 @@ if (!function_exists ("ws_plugin__s2member_configure_user_registration"))
|
|
311 |
global $wpdb; /* Global database object may be required for this routine. */
|
312 |
static $processed; /* Prevents duplicate processing. */
|
313 |
/**/
|
314 |
-
eval
|
315 |
do_action ("ws_plugin__s2member_before_configure_user_registration", get_defined_vars ());
|
316 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
317 |
/**/
|
@@ -364,12 +364,12 @@ if (!function_exists ("ws_plugin__s2member_configure_user_registration"))
|
|
364 |
{
|
365 |
$proxy = array ("s2member_paypal_notify" => "1", "s2member_paypal_proxy" => "s2member_transient_ipn_subscr_payment");
|
366 |
ws_plugin__s2member_remote (add_query_arg ($proxy, get_bloginfo ("url")), stripslashes_deep ($subscr_payment));
|
367 |
-
delete_transient
|
368 |
}
|
369 |
/**/
|
370 |
setcookie ("s2member_signup_tracking", ws_plugin__s2member_encrypt ($subscr_id), time () + 31556926, "/");
|
371 |
/**/
|
372 |
-
eval
|
373 |
do_action ("ws_plugin__s2member_during_configure_user_registration_front_side", get_defined_vars ());
|
374 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
375 |
}
|
@@ -399,7 +399,7 @@ if (!function_exists ("ws_plugin__s2member_configure_user_registration"))
|
|
399 |
/**/
|
400 |
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
401 |
/**/
|
402 |
-
eval
|
403 |
do_action ("ws_plugin__s2member_during_configure_user_registration_front_side", get_defined_vars ());
|
404 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
405 |
}
|
@@ -429,7 +429,7 @@ if (!function_exists ("ws_plugin__s2member_configure_user_registration"))
|
|
429 |
/**/
|
430 |
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
431 |
/**/
|
432 |
-
eval
|
433 |
do_action ("ws_plugin__s2member_during_configure_user_registration_admin_side", get_defined_vars ());
|
434 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
435 |
}
|
@@ -470,19 +470,31 @@ if (!function_exists ("ws_plugin__s2member_configure_user_registration"))
|
|
470 |
if (($url = preg_replace ("/%%user_login%%/i", ws_plugin__s2member_esc_ds (urlencode ($login)), $url)))
|
471 |
if (($url = preg_replace ("/%%user_pass%%/i", ws_plugin__s2member_esc_ds (urlencode ($pass)), $url)))
|
472 |
if (($url = trim ($url))) /* Empty? */
|
473 |
-
ws_plugin__s2member_remote
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
474 |
/**/
|
475 |
setcookie ("s2member_subscr_id", "", time () + 31556926, "/");
|
476 |
setcookie ("s2member_custom", "", time () + 31556926, "/");
|
477 |
setcookie ("s2member_level", "", time () + 31556926, "/");
|
478 |
/**/
|
479 |
-
eval
|
480 |
do_action ("ws_plugin__s2member_during_configure_user_registration", get_defined_vars ());
|
481 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
482 |
}
|
483 |
}
|
484 |
/**/
|
485 |
-
eval
|
486 |
do_action ("ws_plugin__s2member_after_configure_user_registration", get_defined_vars ());
|
487 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
488 |
/**/
|
@@ -506,7 +518,7 @@ if (!function_exists ("wp_generate_password"))
|
|
506 |
{
|
507 |
$password = ws_plugin__s2member_random_str_gen ($length, $special_chars);
|
508 |
/**/
|
509 |
-
eval
|
510 |
do_action ("ws_plugin__s2member_before_generate_password", get_defined_vars ());
|
511 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
512 |
/**/
|
@@ -542,7 +554,7 @@ if (!function_exists ("ws_plugin__s2member_demo_hide_password_fields"))
|
|
542 |
{
|
543 |
function ws_plugin__s2member_demo_hide_password_fields ($show = TRUE, $profileuser = FALSE)
|
544 |
{
|
545 |
-
eval
|
546 |
do_action ("ws_plugin__s2member_before_demo_hide_password_fields", get_defined_vars ());
|
547 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
548 |
/**/
|
12 |
Direct access denial.
|
13 |
*/
|
14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
15 |
+
exit("Do not access this file directly.");
|
16 |
/*
|
17 |
Forces a default Role for new registrations not tied to an incoming payment.
|
18 |
Attach to: add_filter("pre_option_default_role");
|
95 |
/**/
|
96 |
$tabindex = 20; /* Incremented tabindex starting with 20. */
|
97 |
/**/
|
98 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
99 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before", get_defined_vars ());
|
100 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
101 |
/**/
|
102 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && function_exists ("ws_plugin__s2member_generate_password"))
|
103 |
{
|
104 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
105 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_user_pass", get_defined_vars ());
|
106 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
107 |
/**/
|
112 |
echo '</label>' . "\n";
|
113 |
echo '</p>';
|
114 |
/**/
|
115 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
116 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_user_pass", get_defined_vars ());
|
117 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
118 |
}
|
119 |
/**/
|
120 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
121 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_first_name", get_defined_vars ());
|
122 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
123 |
/**/
|
128 |
echo '</label>' . "\n";
|
129 |
echo '</p>';
|
130 |
/**/
|
131 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
132 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_first_name", get_defined_vars ());
|
133 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
134 |
/**/
|
135 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
136 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_last_name", get_defined_vars ());
|
137 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
138 |
/**/
|
143 |
echo '</label>' . "\n";
|
144 |
echo '</p>';
|
145 |
/**/
|
146 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
147 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_last_name", get_defined_vars ());
|
148 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
149 |
/**/
|
154 |
/**/
|
155 |
if ($field = trim ($field, "* \t\n\r\0\x0B")) /* Don't process empty fields. */
|
156 |
{
|
157 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
158 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_custom_fields", get_defined_vars ());
|
159 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
160 |
/**/
|
168 |
echo '</label>' . "\n";
|
169 |
echo '</p>';
|
170 |
/**/
|
171 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
172 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_custom_fields", get_defined_vars ());
|
173 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
174 |
}
|
176 |
/**/
|
177 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && ws_plugin__s2member_list_servers_integrated ())
|
178 |
{
|
179 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
180 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_before_opt_in", get_defined_vars ());
|
181 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
182 |
/**/
|
187 |
echo '</label>' . "\n";
|
188 |
echo '</p>';
|
189 |
/**/
|
190 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
191 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after_opt_in", get_defined_vars ());
|
192 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
193 |
}
|
194 |
/**/
|
195 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
196 |
do_action ("ws_plugin__s2member_during_custom_registration_fields_after", get_defined_vars ());
|
197 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
198 |
/**/
|
199 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
200 |
do_action ("ws_plugin__s2member_after_custom_registration_fields", get_defined_vars ());
|
201 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
202 |
/**/
|
243 |
{
|
244 |
function ws_plugin__s2member_register_link_gen ($subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
245 |
{
|
246 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
247 |
do_action ("ws_plugin__s2member_before_register_link_gen", get_defined_vars ());
|
248 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
249 |
/**/
|
311 |
global $wpdb; /* Global database object may be required for this routine. */
|
312 |
static $processed; /* Prevents duplicate processing. */
|
313 |
/**/
|
314 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
315 |
do_action ("ws_plugin__s2member_before_configure_user_registration", get_defined_vars ());
|
316 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
317 |
/**/
|
364 |
{
|
365 |
$proxy = array ("s2member_paypal_notify" => "1", "s2member_paypal_proxy" => "s2member_transient_ipn_subscr_payment");
|
366 |
ws_plugin__s2member_remote (add_query_arg ($proxy, get_bloginfo ("url")), stripslashes_deep ($subscr_payment));
|
367 |
+
delete_transient($transient);
|
368 |
}
|
369 |
/**/
|
370 |
setcookie ("s2member_signup_tracking", ws_plugin__s2member_encrypt ($subscr_id), time () + 31556926, "/");
|
371 |
/**/
|
372 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
373 |
do_action ("ws_plugin__s2member_during_configure_user_registration_front_side", get_defined_vars ());
|
374 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
375 |
}
|
399 |
/**/
|
400 |
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
401 |
/**/
|
402 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
403 |
do_action ("ws_plugin__s2member_during_configure_user_registration_front_side", get_defined_vars ());
|
404 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
405 |
}
|
429 |
/**/
|
430 |
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
431 |
/**/
|
432 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
433 |
do_action ("ws_plugin__s2member_during_configure_user_registration_admin_side", get_defined_vars ());
|
434 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
435 |
}
|
470 |
if (($url = preg_replace ("/%%user_login%%/i", ws_plugin__s2member_esc_ds (urlencode ($login)), $url)))
|
471 |
if (($url = preg_replace ("/%%user_pass%%/i", ws_plugin__s2member_esc_ds (urlencode ($pass)), $url)))
|
472 |
if (($url = trim ($url))) /* Empty? */
|
473 |
+
ws_plugin__s2member_remote($url);
|
474 |
+
/**/
|
475 |
+
if ($url = $GLOBALS["ws_plugin__s2member_registration_return_url"])
|
476 |
+
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
|
477 |
+
if (($url = preg_replace ("/%%level%%/i", ws_plugin__s2member_esc_ds (urlencode ($level)), $url)))
|
478 |
+
if (($url = preg_replace ("/%%user_first_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($fname)), $url)))
|
479 |
+
if (($url = preg_replace ("/%%user_last_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($lname)), $url)))
|
480 |
+
if (($url = preg_replace ("/%%user_full_name%%/i", ws_plugin__s2member_esc_ds (urlencode ($name)), $url)))
|
481 |
+
if (($url = preg_replace ("/%%user_email%%/i", ws_plugin__s2member_esc_ds (urlencode ($email)), $url)))
|
482 |
+
if (($url = preg_replace ("/%%user_login%%/i", ws_plugin__s2member_esc_ds (urlencode ($login)), $url)))
|
483 |
+
if (($url = preg_replace ("/%%user_pass%%/i", ws_plugin__s2member_esc_ds (urlencode ($pass)), $url)))
|
484 |
+
if (($url = trim ($url))) /* Empty? ... Otherwise, re-fill. */
|
485 |
+
$GLOBALS["ws_plugin__s2member_registration_return_url"] = $url;
|
486 |
/**/
|
487 |
setcookie ("s2member_subscr_id", "", time () + 31556926, "/");
|
488 |
setcookie ("s2member_custom", "", time () + 31556926, "/");
|
489 |
setcookie ("s2member_level", "", time () + 31556926, "/");
|
490 |
/**/
|
491 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
492 |
do_action ("ws_plugin__s2member_during_configure_user_registration", get_defined_vars ());
|
493 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
494 |
}
|
495 |
}
|
496 |
/**/
|
497 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
498 |
do_action ("ws_plugin__s2member_after_configure_user_registration", get_defined_vars ());
|
499 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
500 |
/**/
|
518 |
{
|
519 |
$password = ws_plugin__s2member_random_str_gen ($length, $special_chars);
|
520 |
/**/
|
521 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
522 |
do_action ("ws_plugin__s2member_before_generate_password", get_defined_vars ());
|
523 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
524 |
/**/
|
554 |
{
|
555 |
function ws_plugin__s2member_demo_hide_password_fields ($show = TRUE, $profileuser = FALSE)
|
556 |
{
|
557 |
+
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
558 |
do_action ("ws_plugin__s2member_before_demo_hide_password_fields", get_defined_vars ());
|
559 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
560 |
/**/
|
includes/menu-pages/api-ops.inc.php
CHANGED
@@ -64,26 +64,26 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
64 |
echo 'Signup Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a new user signs up successfully through PayPal.<br /><br />' . "\n";
|
65 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
66 |
echo '<ul>' . "\n";
|
67 |
-
echo '<li><code>%%subscr_id
|
68 |
-
echo '<li><code>%%initial
|
69 |
-
echo '<li><code>%%regular
|
70 |
-
echo '<li><code>%%recurring
|
71 |
-
echo '<li><code>%%first_name
|
72 |
-
echo '<li><code>%%last_name
|
73 |
-
echo '<li><code>%%full_name
|
74 |
-
echo '<li><code>%%payer_email
|
75 |
-
echo '<li><code>%%item_number
|
76 |
-
echo '<li><code>%%item_name
|
77 |
-
echo '<li><code>%%initial_term
|
78 |
-
echo '<li><code>%%regular_term
|
79 |
echo '</ul>' . "\n";
|
80 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
81 |
echo '<ul>' . "\n";
|
82 |
-
echo '<li><code>%%cv0
|
83 |
-
echo '<li><code>%%cv1
|
84 |
echo '</ul>' . "\n";
|
85 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
86 |
-
echo '<em>( The IP address could be referenced
|
87 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
88 |
echo '</td>' . "\n";
|
89 |
/**/
|
@@ -125,21 +125,21 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
125 |
echo 'Registration Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a new user registers a Username.<br /><br />' . "\n";
|
126 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
127 |
echo '<ul>' . "\n";
|
128 |
-
echo '<li><code>%%level
|
129 |
-
echo '<li><code>%%user_first_name
|
130 |
-
echo '<li><code>%%user_last_name
|
131 |
-
echo '<li><code>%%user_full_name
|
132 |
-
echo '<li><code>%%user_email
|
133 |
-
echo '<li><code>%%user_login
|
134 |
-
echo '<li><code>%%user_pass
|
135 |
echo '</ul>' . "\n";
|
136 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
137 |
echo '<ul>' . "\n";
|
138 |
-
echo '<li><code>%%cv0
|
139 |
-
echo '<li><code>%%cv1
|
140 |
echo '</ul>' . "\n";
|
141 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
142 |
-
echo '<em>( The IP address could be referenced
|
143 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
144 |
echo '</td>' . "\n";
|
145 |
/**/
|
@@ -183,23 +183,23 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
183 |
echo 'Payment Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time an initial and/or recurring payment occurs.<br /><br />' . "\n";
|
184 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
185 |
echo '<ul>' . "\n";
|
186 |
-
echo '<li><code>%%subscr_id
|
187 |
-
echo '<li><code>%%txn_id
|
188 |
-
echo '<li><code>%%amount
|
189 |
-
echo '<li><code>%%first_name
|
190 |
-
echo '<li><code>%%last_name
|
191 |
-
echo '<li><code>%%full_name
|
192 |
-
echo '<li><code>%%payer_email
|
193 |
-
echo '<li><code>%%item_number
|
194 |
-
echo '<li><code>%%item_name
|
195 |
echo '</ul>' . "\n";
|
196 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
197 |
echo '<ul>' . "\n";
|
198 |
-
echo '<li><code>%%cv0
|
199 |
-
echo '<li><code>%%cv1
|
200 |
echo '</ul>' . "\n";
|
201 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
202 |
-
echo '<em>( The IP address could be referenced
|
203 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
204 |
echo '</td>' . "\n";
|
205 |
/**/
|
@@ -245,19 +245,19 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
245 |
echo 'EOT/Deletion Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a Subscription hits an EOT, or is deleted.<br /><br />' . "\n";
|
246 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
247 |
echo '<ul>' . "\n";
|
248 |
-
echo '<li><code>%%subscr_id
|
249 |
-
echo '<li><code>%%user_first_name
|
250 |
-
echo '<li><code>%%user_last_name
|
251 |
-
echo '<li><code>%%user_full_name
|
252 |
-
echo '<li><code>%%user_email
|
253 |
echo '</ul>' . "\n";
|
254 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
255 |
echo '<ul>' . "\n";
|
256 |
-
echo '<li><code>%%cv0
|
257 |
-
echo '<li><code>%%cv1
|
258 |
echo '</ul>' . "\n";
|
259 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
260 |
-
echo '<em>( The IP address could be referenced
|
261 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
262 |
echo '</td>' . "\n";
|
263 |
/**/
|
@@ -302,23 +302,23 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
302 |
echo 'Refund/Reversal Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a payment is refunded through PayPal® or a chargeback occurs.<br /><br />' . "\n";
|
303 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
304 |
echo '<ul>' . "\n";
|
305 |
-
echo '<li><code>%%subscr_id
|
306 |
-
echo '<li><code>%%parent_txn_id
|
307 |
-
echo '<li><code>%%-amount
|
308 |
-
echo '<li><code>%%first_name
|
309 |
-
echo '<li><code>%%last_name
|
310 |
-
echo '<li><code>%%full_name
|
311 |
-
echo '<li><code>%%payer_email
|
312 |
-
echo '<li><code>%%item_number
|
313 |
-
echo '<li><code>%%item_name
|
314 |
echo '</ul>' . "\n";
|
315 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
316 |
echo '<ul>' . "\n";
|
317 |
-
echo '<li><code>%%cv0
|
318 |
-
echo '<li><code>%%cv1
|
319 |
echo '</ul>' . "\n";
|
320 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
321 |
-
echo '<em>( The IP address could be referenced
|
322 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
323 |
echo '</td>' . "\n";
|
324 |
/**/
|
@@ -362,24 +362,24 @@ if (apply_filters ("ws_plugin__s2member_during_api_ops_page_during_left_sections
|
|
362 |
echo 'Specific Post/Page Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a sale occurs.<br /><br />' . "\n";
|
363 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
364 |
echo '<ul>' . "\n";
|
365 |
-
echo '<li><code>%%sp_access_url
|
366 |
-
echo '<li><code>%%sp_access_exp
|
367 |
-
echo '<li><code>%%txn_id
|
368 |
-
echo '<li><code>%%amount
|
369 |
-
echo '<li><code>%%first_name
|
370 |
-
echo '<li><code>%%last_name
|
371 |
-
echo '<li><code>%%full_name
|
372 |
-
echo '<li><code>%%payer_email
|
373 |
-
echo '<li><code>%%item_number
|
374 |
-
echo '<li><code>%%item_name
|
375 |
echo '</ul>' . "\n";
|
376 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
377 |
echo '<ul>' . "\n";
|
378 |
-
echo '<li><code>%%cv0
|
379 |
-
echo '<li><code>%%cv1
|
380 |
echo '</ul>' . "\n";
|
381 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
382 |
-
echo '<em>( The IP address could be referenced
|
383 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
384 |
echo '</td>' . "\n";
|
385 |
/**/
|
64 |
echo 'Signup Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a new user signs up successfully through PayPal.<br /><br />' . "\n";
|
65 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
66 |
echo '<ul>' . "\n";
|
67 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there is only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
68 |
+
echo '<li><code>%%initial%%</code> = The Initial Fee charged during signup. If you offered a free trial, this will be <code>0</code>. [ <a href="#" onclick="alert(\'This will always represent the amount of money the Customer spent, whenever they initially signed up, no matter what. Even if that amount is 0.\\n\\nIf a Customer signs up, under the terms of a free trial period, this will be 0. So be careful using %%initial%% when you offer a free trial period, because a $0.00 sale amount could cause havoc with affiliate programs.\\n\\nIf you\\\'re offering a free trial period, and you need to track sales through affiliate programs, you can either hard-code an amount; or use `Payment Notifications` instead.\'); return false;">?</a> ]</li>' . "\n";
|
69 |
+
echo '<li><code>%%regular%%</code> = The Regular Amount of the Subscription. This value is <code>always > 0</code>, no matter what. [ <a href="#" onclick="alert(\'This is how much the Subscription costs after an initial period expires. The %%regular%% rate is always > 0. If you did not offer an initial period, %%initial%% and %%regular%% will be equal to the same thing.\'); return false;">?</a> ]</li>' . "\n";
|
70 |
+
echo '<li><code>%%recurring%%</code> = This is the amount that will be charged on a Recurring basis, or <code>0</code> if non-Recurring. [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% & %%recurring%% are usually the same value. This variable can be used in two different ways. You can use it to determine what the regular recurring rate is, or to determine whether the Subscription will recur or not. If it is going to recur, %%recurring%% will be > 0.\'); return false;">?</a> ]</li>' . "\n";
|
71 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
72 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
73 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
74 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
75 |
+
echo '<li><code>%%item_number%%</code> = The Item Number ( colon separated <code><em>level:custom_capabilities:fixed term</em></code> ) for the Membership Subscription.</li>' . "\n";
|
76 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
77 |
+
echo '<li><code>%%initial_term%%</code> = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%initial_term%% = 1 D ( this means 1 Day )\\n%%initial_term%% = 1 W ( this means 1 Week )\\n%%initial_term%% = 1 M ( this means 1 Month )\\n%%initial_term%% = 1 Y ( this means 1 Year )\\n\\nThe initial period never recurs, so this only lasts for the term length specified, then it is over. If no initial period was even offered, the value of %%initial_term%% will just be: 0 D, meaning zero days.\'); return false;">?</a> ]</li>' . "\n";
|
78 |
+
echo '<li><code>%%regular_term%%</code> = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%regular_term%% = 1 D ( this means 1 Day )\\n%%regular_term%% = 1 W ( this means 1 Week )\\n%%regular_term%% = 1 M ( this means 1 Month )\\n%%regular_term%% = 1 Y ( this means 1 Year )\\n%%regular_term%% = 1 L ( this means 1 Lifetime )\\n\\nThe regular term is usually recurring. So the regular term value represents the period ( or duration ) of each recurring period. If %%recurring%% = 0, then the regular term only applies once, because it is not recurring. So if it is not recurring, the value of %%regular_term%% simply represents how long their membership privileges are going to last after the %%initial_term%% has expired, if there was an initial term. The value of this variable ( %%regular_term%% ) will never be empty, it will always be at least: 1 D, meaning 1 day. No exceptions.\'); return false;">?</a> ]</li>' . "\n";
|
79 |
echo '</ul>' . "\n";
|
80 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
81 |
echo '<ul>' . "\n";
|
82 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
83 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
84 |
echo '</ul>' . "\n";
|
85 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
86 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
87 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
88 |
echo '</td>' . "\n";
|
89 |
/**/
|
125 |
echo 'Registration Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a new user registers a Username.<br /><br />' . "\n";
|
126 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
127 |
echo '<ul>' . "\n";
|
128 |
+
echo '<li><code>%%level%%</code> = The Level number <code>( 0, 1, 2, 3, 4 )</code>, where <code>0 = Free Subscriber</code>.</li>' . "\n";
|
129 |
+
echo '<li><code>%%user_first_name%%</code> = The First Name of the Member who registered their Username.</li>' . "\n";
|
130 |
+
echo '<li><code>%%user_last_name%%</code> = The Last Name of the Member who registered their Username.</li>' . "\n";
|
131 |
+
echo '<li><code>%%user_full_name%%</code> = The Full Name ( First & Last ) of the Member who registered their Username.</li>' . "\n";
|
132 |
+
echo '<li><code>%%user_email%%</code> = The Email Address of the Member who registered their Username.</li>' . "\n";
|
133 |
+
echo '<li><code>%%user_login%%</code> = The Username the Member selected during registration.</li>' . "\n";
|
134 |
+
echo '<li><code>%%user_pass%%</code> = The Password selected or generated during registration.</li>' . "\n";
|
135 |
echo '</ul>' . "\n";
|
136 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
137 |
echo '<ul>' . "\n";
|
138 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
139 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
140 |
echo '</ul>' . "\n";
|
141 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
142 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
143 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
144 |
echo '</td>' . "\n";
|
145 |
/**/
|
183 |
echo 'Payment Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time an initial and/or recurring payment occurs.<br /><br />' . "\n";
|
184 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
185 |
echo '<ul>' . "\n";
|
186 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the Transaction ID for the payment.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there is only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
187 |
+
echo '<li><code>%%txn_id%%</code> = The PayPal® unique Transaction ID, which is always unique for each payment received.</li>' . "\n";
|
188 |
+
echo '<li><code>%%amount%%</code> = The Amount of the payment. Most affiliate programs calculate commissions from this.</li>' . "\n";
|
189 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
190 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
191 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
192 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
193 |
+
echo '<li><code>%%item_number%%</code> = The Item Number ( colon separated <code><em>level:custom_capabilities:fixed term</em></code> ) that the payment is for.</li>' . "\n";
|
194 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
195 |
echo '</ul>' . "\n";
|
196 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
197 |
echo '<ul>' . "\n";
|
198 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
199 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
200 |
echo '</ul>' . "\n";
|
201 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
202 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
203 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
204 |
echo '</td>' . "\n";
|
205 |
/**/
|
245 |
echo 'EOT/Deletion Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a Subscription hits an EOT, or is deleted.<br /><br />' . "\n";
|
246 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
247 |
echo '<ul>' . "\n";
|
248 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remained constant throughout the lifetime of the membership. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the original Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there was only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
249 |
+
echo '<li><code>%%user_first_name%%</code> = The First Name listed on their User account. This might be different than what is on file at PayPal®.</li>' . "\n";
|
250 |
+
echo '<li><code>%%user_last_name%%</code> = The Last Name listed on their User account. This might be different than what is on file at PayPal®.</li>' . "\n";
|
251 |
+
echo '<li><code>%%user_full_name%%</code> = The Full Name listed on their User account. This might be different than what is on file at PayPal®.</li>' . "\n";
|
252 |
+
echo '<li><code>%%user_email%%</code> = The Email Address associated with their User account. This might be different than what is on file at PayPal®.</li>' . "\n";
|
253 |
echo '</ul>' . "\n";
|
254 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
255 |
echo '<ul>' . "\n";
|
256 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
257 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode. like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
258 |
echo '</ul>' . "\n";
|
259 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
260 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
261 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
262 |
echo '</td>' . "\n";
|
263 |
/**/
|
302 |
echo 'Refund/Reversal Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a payment is refunded through PayPal® or a chargeback occurs.<br /><br />' . "\n";
|
303 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
304 |
echo '<ul>' . "\n";
|
305 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remained constant throughout the lifetime of the membership. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the original Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there was only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
306 |
+
echo '<li><code>%%parent_txn_id%%</code> = The PayPal® Transaction ID, associated with the original payment that is being refunded/reversed.</li>' . "\n";
|
307 |
+
echo '<li><code>%%-amount%%</code> = The Negative Amount of the payment, that was refunded or reversed back to the Customer.</li>' . "\n";
|
308 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
309 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
310 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
311 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
312 |
+
echo '<li><code>%%item_number%%</code> = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) that the payment was for.</li>' . "\n";
|
313 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
314 |
echo '</ul>' . "\n";
|
315 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
316 |
echo '<ul>' . "\n";
|
317 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
318 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
319 |
echo '</ul>' . "\n";
|
320 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
321 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
322 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
323 |
echo '</td>' . "\n";
|
324 |
/**/
|
362 |
echo 'Specific Post/Page Notifications take place silently behind-the-scene, using an HTTP connection. Each URL will be notified every time a sale occurs.<br /><br />' . "\n";
|
363 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
364 |
echo '<ul>' . "\n";
|
365 |
+
echo '<li><code>%%sp_access_url%%</code> = The full URL ( generated by s2Member ) where the Customer can gain access.</li>' . "\n";
|
366 |
+
echo '<li><code>%%sp_access_exp%%</code> = Human readable expiration for <code>%%sp_access_url%%</code>. Ex: <em>( link expires in <code>%%sp_access_exp%%</code> )</em>.</li>' . "\n";
|
367 |
+
echo '<li><code>%%txn_id%%</code> = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</li>' . "\n";
|
368 |
+
echo '<li><code>%%amount%%</code> = The full Amount of the sale. Most affiliate programs calculate commissions from this.</li>' . "\n";
|
369 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
370 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
371 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
372 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
373 |
+
echo '<li><code>%%item_number%%</code> = The Item Number. Ex: <code><em>sp:13,24,36:72</em></code> ( translates to: <code><em>sp:comma-delimited IDs:expiration hours</em></code> ).</li>' . "\n";
|
374 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
375 |
echo '</ul>' . "\n";
|
376 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
377 |
echo '<ul>' . "\n";
|
378 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
379 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
380 |
echo '</ul>' . "\n";
|
381 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
382 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
383 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
384 |
echo '</td>' . "\n";
|
385 |
/**/
|
includes/menu-pages/paypal-ops.inc.php
CHANGED
@@ -227,30 +227,30 @@ if (apply_filters ("ws_plugin__s2member_during_paypal_ops_page_during_left_secti
|
|
227 |
echo 'Message Body used in the email sent to a Customer after a successful signup has occurred through PayPal®.<br /><br />' . "\n";
|
228 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
229 |
echo '<ul>' . "\n";
|
230 |
-
echo '<li><code>%%registration_url
|
231 |
-
echo '<li><code>%%subscr_id
|
232 |
-
echo '<li><code>%%initial
|
233 |
-
echo '<li><code>%%regular
|
234 |
-
echo '<li><code>%%recurring
|
235 |
-
echo '<li><code>%%first_name
|
236 |
-
echo '<li><code>%%last_name
|
237 |
-
echo '<li><code>%%full_name
|
238 |
-
echo '<li><code>%%payer_email
|
239 |
-
echo '<li><code>%%item_number
|
240 |
-
echo '<li><code>%%item_name
|
241 |
-
echo '<li><code>%%initial_term
|
242 |
-
echo '<li><code>%%initial_cycle
|
243 |
-
echo '<li><code>%%regular_term
|
244 |
-
echo '<li><code>%%regular_cycle
|
245 |
-
echo '<li><code>%%recurring/regular_cycle
|
246 |
echo '</ul>' . "\n";
|
247 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
248 |
echo '<ul>' . "\n";
|
249 |
-
echo '<li><code>%%cv0
|
250 |
-
echo '<li><code>%%cv1
|
251 |
echo '</ul>' . "\n";
|
252 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
253 |
-
echo '<em>( The IP address could be referenced
|
254 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
255 |
echo '</td>' . "\n";
|
256 |
/**/
|
@@ -310,24 +310,24 @@ if (apply_filters ("ws_plugin__s2member_during_paypal_ops_page_during_left_secti
|
|
310 |
echo 'Message Body used in the email sent to a Customer after a successful purchase has occurred through PayPal®, for Specific Post/Page Access.<br /><br />' . "\n";
|
311 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
312 |
echo '<ul>' . "\n";
|
313 |
-
echo '<li><code>%%sp_access_url
|
314 |
-
echo '<li><code>%%sp_access_exp
|
315 |
-
echo '<li><code>%%txn_id
|
316 |
-
echo '<li><code>%%amount
|
317 |
-
echo '<li><code>%%first_name
|
318 |
-
echo '<li><code>%%last_name
|
319 |
-
echo '<li><code>%%full_name
|
320 |
-
echo '<li><code>%%payer_email
|
321 |
-
echo '<li><code>%%item_number
|
322 |
-
echo '<li><code>%%item_name
|
323 |
echo '</ul>' . "\n";
|
324 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
325 |
echo '<ul>' . "\n";
|
326 |
-
echo '<li><code>%%cv0
|
327 |
-
echo '<li><code>%%cv1
|
328 |
echo '</ul>' . "\n";
|
329 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
330 |
-
echo '<em>( The IP address could be referenced
|
331 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
332 |
echo '</td>' . "\n";
|
333 |
/**/
|
227 |
echo 'Message Body used in the email sent to a Customer after a successful signup has occurred through PayPal®.<br /><br />' . "\n";
|
228 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
229 |
echo '<ul>' . "\n";
|
230 |
+
echo '<li><code>%%registration_url%%</code> = The full URL ( generated by s2Member ) where the Customer can get registered.</li>' . "\n";
|
231 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there is only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
232 |
+
echo '<li><code>%%initial%%</code> = The Initial Fee charged during signup. If you offered a free trial, this will be <code>0</code>. [ <a href="#" onclick="alert(\'This will always represent the amount of money the Customer spent, whenever they initially signed up, no matter what. If a Customer signs up, under the terms of a free trial period, this will be 0.\'); return false;">?</a> ]</li>' . "\n";
|
233 |
+
echo '<li><code>%%regular%%</code> = The Regular Amount of the Subscription. This value is <code>always > 0</code>, no matter what. [ <a href="#" onclick="alert(\'This is how much the Subscription costs after an initial period expires. The %%regular%% rate is always > 0. If you did not offer an initial period, %%initial%% and %%regular%% will be equal to the same thing.\'); return false;">?</a> ]</li>' . "\n";
|
234 |
+
echo '<li><code>%%recurring%%</code> = This is the amount that will be charged on a Recurring basis, or <code>0</code> if non-Recurring. [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% & %%recurring%% are usually the same value. This variable can be used in two different ways. You can use it to determine what the regular recurring rate is, or to determine whether the Subscription will recur or not. If it is going to recur, %%recurring%% will be > 0.\'); return false;">?</a> ]</li>' . "\n";
|
235 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
236 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
237 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
238 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
239 |
+
echo '<li><code>%%item_number%%</code> = The Item Number ( colon separated <code><em>level:custom_capabilities:fixed term</em></code> ) that the Subscription is for.</li>' . "\n";
|
240 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
241 |
+
echo '<li><code>%%initial_term%%</code> = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%initial_term%% = 1 D ( this means 1 Day )\\n%%initial_term%% = 1 W ( this means 1 Week )\\n%%initial_term%% = 1 M ( this means 1 Month )\\n%%initial_term%% = 1 Y ( this means 1 Year )\\n\\nThe initial period never recurs, so this only lasts for the term length specified, then it is over. If no initial period was even offered, the value of %%initial_term%% will just be: 0 D, meaning zero days.\'); return false;">?</a> ]</li>' . "\n";
|
242 |
+
echo '<li><code>%%initial_cycle%%</code> = This is the <code>%%initial_term%%</code> from above, converted ( and reduced ) to just a cycle representation, of: <code><em>Daily, Weekly, Monthly, or Yearly</em></code>.</li>' . "\n";
|
243 |
+
echo '<li><code>%%regular_term%%</code> = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%regular_term%% = 1 D ( this means 1 Day )\\n%%regular_term%% = 1 W ( this means 1 Week )\\n%%regular_term%% = 1 M ( this means 1 Month )\\n%%regular_term%% = 1 Y ( this means 1 Year )\\n%%regular_term%% = 1 L ( this means 1 Lifetime )\\n\\nThe regular term is usually recurring. So the regular term value represents the period ( or duration ) of each recurring period. If %%recurring%% = 0, then the regular term only applies once, because it is not recurring. So if it is not recurring, the value of %%regular_term%% simply represents how long their membership privileges are going to last after the %%initial_term%% has expired, if there was an initial term. The value of this variable ( %%regular_term%% ) will never be empty, it will always be at least: 1 D, meaning 1 day. No exceptions.\'); return false;">?</a> ]</li>' . "\n";
|
244 |
+
echo '<li><code>%%regular_cycle%%</code> = This is the <code>%%regular_term%%</code> from above, converted ( and reduced ) to just a cycle representation, of: <code><em>Daily, Weekly, Monthly, Yearly, or Lifetime</em></code>.</li>' . "\n";
|
245 |
+
echo '<li><code>%%recurring/regular_cycle%%</code> = Example ( <code>14.95 / Monthly</code> ), or ... ( <code>0 / non-recurring</code> ); depending on the value of <code>%%recurring%%</code>.</li>' . "\n";
|
246 |
echo '</ul>' . "\n";
|
247 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
248 |
echo '<ul>' . "\n";
|
249 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
250 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
251 |
echo '</ul>' . "\n";
|
252 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
253 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
254 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
255 |
echo '</td>' . "\n";
|
256 |
/**/
|
310 |
echo 'Message Body used in the email sent to a Customer after a successful purchase has occurred through PayPal®, for Specific Post/Page Access.<br /><br />' . "\n";
|
311 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
312 |
echo '<ul>' . "\n";
|
313 |
+
echo '<li><code>%%sp_access_url%%</code> = The full URL ( generated by s2Member ) where the Customer can gain access.</li>' . "\n";
|
314 |
+
echo '<li><code>%%sp_access_exp%%</code> = Human readable expiration for <code>%%sp_access_url%%</code>. Ex: <em>( link expires in <code>%%sp_access_exp%%</code> )</em>.</li>' . "\n";
|
315 |
+
echo '<li><code>%%txn_id%%</code> = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</li>' . "\n";
|
316 |
+
echo '<li><code>%%amount%%</code> = The full Amount that you charged for Specific Post/Page Access. This value will <code>always be > 0</code>.</li>' . "\n";
|
317 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
318 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
319 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
320 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
321 |
+
echo '<li><code>%%item_number%%</code> = The Item Number. Ex: <code><em>sp:13,24,36:72</em></code> ( translates to: <code><em>sp:comma-delimited IDs:expiration hours</em></code> ).</li>' . "\n";
|
322 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
323 |
echo '</ul>' . "\n";
|
324 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
325 |
echo '<ul>' . "\n";
|
326 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
327 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
328 |
echo '</ul>' . "\n";
|
329 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
330 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
331 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
332 |
echo '</td>' . "\n";
|
333 |
/**/
|
includes/menu-pages/trk-ops.inc.php
CHANGED
@@ -64,26 +64,26 @@ if (apply_filters ("ws_plugin__s2member_during_trk_ops_page_during_left_sections
|
|
64 |
echo 'Any valid XHTML / JavaScript' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["is_multisite_farm"]) ? ' ( or even PHP )' : '') . ' code will work just fine here. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google® Analytics code works just fine, AdSense® performance tracking, as well as Yahoo® tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
65 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
66 |
echo '<ul>' . "\n";
|
67 |
-
echo '<li><code>%%subscr_id
|
68 |
-
echo '<li><code>%%initial
|
69 |
-
echo '<li><code>%%regular
|
70 |
-
echo '<li><code>%%recurring
|
71 |
-
echo '<li><code>%%first_name
|
72 |
-
echo '<li><code>%%last_name
|
73 |
-
echo '<li><code>%%full_name
|
74 |
-
echo '<li><code>%%payer_email
|
75 |
-
echo '<li><code>%%item_number
|
76 |
-
echo '<li><code>%%item_name
|
77 |
-
echo '<li><code>%%initial_term
|
78 |
-
echo '<li><code>%%regular_term
|
79 |
echo '</ul>' . "\n";
|
80 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
81 |
echo '<ul>' . "\n";
|
82 |
-
echo '<li><code>%%cv0
|
83 |
-
echo '<li><code>%%cv1
|
84 |
echo '</ul>' . "\n";
|
85 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
86 |
-
echo '<em>( The IP address could be referenced
|
87 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
88 |
echo '</td>' . "\n";
|
89 |
/**/
|
@@ -126,22 +126,22 @@ if (apply_filters ("ws_plugin__s2member_during_trk_ops_page_during_left_sections
|
|
126 |
echo 'Any valid XHTML / JavaScript' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["is_multisite_farm"]) ? ' ( or even PHP )' : '') . ' code will work just fine here. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google® Analytics code works just fine, AdSense® performance tracking, as well as Yahoo® tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
127 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
128 |
echo '<ul>' . "\n";
|
129 |
-
echo '<li><code>%%txn_id
|
130 |
-
echo '<li><code>%%amount
|
131 |
-
echo '<li><code>%%first_name
|
132 |
-
echo '<li><code>%%last_name
|
133 |
-
echo '<li><code>%%full_name
|
134 |
-
echo '<li><code>%%payer_email
|
135 |
-
echo '<li><code>%%item_number
|
136 |
-
echo '<li><code>%%item_name
|
137 |
echo '</ul>' . "\n";
|
138 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
139 |
echo '<ul>' . "\n";
|
140 |
-
echo '<li><code>%%cv0
|
141 |
-
echo '<li><code>%%cv1
|
142 |
echo '</ul>' . "\n";
|
143 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
144 |
-
echo '<em>( The IP address could be referenced
|
145 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
146 |
echo '</td>' . "\n";
|
147 |
/**/
|
64 |
echo 'Any valid XHTML / JavaScript' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["is_multisite_farm"]) ? ' ( or even PHP )' : '') . ' code will work just fine here. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google® Analytics code works just fine, AdSense® performance tracking, as well as Yahoo® tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
65 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
66 |
echo '<ul>' . "\n";
|
67 |
+
echo '<li><code>%%subscr_id%%</code> = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using Buy Now functionality; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy Now purchases. Since Lifetime & Fixed-Term Subscriptions are NOT recurring ( i.e. there is only ONE payment ), using the Transaction ID as the Subscription ID is a graceful way to deal with this minor conflict.\'); return false;">?</a> ]</li>' . "\n";
|
68 |
+
echo '<li><code>%%initial%%</code> = The Initial Fee charged during signup. If you offered a free trial, this will be <code>0</code>. [ <a href="#" onclick="alert(\'This will always represent the amount of money the Customer spent, whenever they initially signed up, no matter what. If a Customer signs up, under the terms of a free trial period, this will be 0.\'); return false;">?</a> ]</li>' . "\n";
|
69 |
+
echo '<li><code>%%regular%%</code> = The Regular Amount of the Subscription. This value is <code>always > 0</code>, no matter what. [ <a href="#" onclick="alert(\'This is how much the Subscription costs after an initial period expires. The %%regular%% rate is always > 0. If you did not offer an initial period, %%initial%% and %%regular%% will be equal to the same thing.\'); return false;">?</a> ]</li>' . "\n";
|
70 |
+
echo '<li><code>%%recurring%%</code> = This is the amount that will be charged on a Recurring basis, or <code>0</code> if non-Recurring. [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% & %%recurring%% are usually the same value. This variable can be used in two different ways. You can use it to determine what the regular recurring rate is, or to determine whether the Subscription will recur or not. If it is going to recur, %%recurring%% will be > 0.\'); return false;">?</a> ]</li>' . "\n";
|
71 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
72 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
73 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
74 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased the Membership Subscription.</li>' . "\n";
|
75 |
+
echo '<li><code>%%item_number%%</code> = The Item Number ( colon separated <code><em>level:custom_capabilities:fixed term</em></code> ) that the Subscription is for.</li>' . "\n";
|
76 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
77 |
+
echo '<li><code>%%initial_term%%</code> = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%initial_term%% = 1 D ( this means 1 Day )\\n%%initial_term%% = 1 W ( this means 1 Week )\\n%%initial_term%% = 1 M ( this means 1 Month )\\n%%initial_term%% = 1 Y ( this means 1 Year )\\n\\nThe initial period never recurs, so this only lasts for the term length specified, then it is over. If no initial period was even offered, the value of %%initial_term%% will just be: 0 D, meaning zero days.\'); return false;">?</a> ]</li>' . "\n";
|
78 |
+
echo '<li><code>%%regular_term%%</code> = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter. [ <a href="#" onclick="alert(\'Here are some examples:\\n\\n%%regular_term%% = 1 D ( this means 1 Day )\\n%%regular_term%% = 1 W ( this means 1 Week )\\n%%regular_term%% = 1 M ( this means 1 Month )\\n%%regular_term%% = 1 Y ( this means 1 Year )\\n%%regular_term%% = 1 L ( this means 1 Lifetime )\\n\\nThe regular term is usually recurring. So the regular term value represents the period ( or duration ) of each recurring period. If %%recurring%% = 0, then the regular term only applies once, because it is not recurring. So if it is not recurring, the value of %%regular_term%% simply represents how long their membership privileges are going to last after the %%initial_term%% has expired, if there was an initial term. The value of this variable ( %%regular_term%% ) will never be empty, it will always be at least: 1 D, meaning 1 day. No exceptions.\'); return false;">?</a> ]</li>' . "\n";
|
79 |
echo '</ul>' . "\n";
|
80 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
81 |
echo '<ul>' . "\n";
|
82 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
83 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
84 |
echo '</ul>' . "\n";
|
85 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
86 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
87 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
88 |
echo '</td>' . "\n";
|
89 |
/**/
|
126 |
echo 'Any valid XHTML / JavaScript' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["is_multisite_farm"]) ? ' ( or even PHP )' : '') . ' code will work just fine here. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google® Analytics code works just fine, AdSense® performance tracking, as well as Yahoo® tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
127 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
128 |
echo '<ul>' . "\n";
|
129 |
+
echo '<li><code>%%txn_id%%</code> = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</li>' . "\n";
|
130 |
+
echo '<li><code>%%amount%%</code> = The full Amount that you charged for Specific Post/Page Access. This value will <code>always be > 0</code>.</li>' . "\n";
|
131 |
+
echo '<li><code>%%first_name%%</code> = The First Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
132 |
+
echo '<li><code>%%last_name%%</code> = The Last Name of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
133 |
+
echo '<li><code>%%full_name%%</code> = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
134 |
+
echo '<li><code>%%payer_email%%</code> = The Email Address of the Customer who purchased Specific Post/Page Access.</li>' . "\n";
|
135 |
+
echo '<li><code>%%item_number%%</code> = The Item Number. Ex: <code><em>sp:13,24,36:72</em></code> ( translates to: <code><em>sp:comma-delimited IDs:expiration hours</em></code> ).</li>' . "\n";
|
136 |
+
echo '<li><code>%%item_name%%</code> = The Item Name ( as provided by the <code>desc=""</code> attribute in your Shortcode, which briefly describes the Item Number ).</li>' . "\n";
|
137 |
echo '</ul>' . "\n";
|
138 |
echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
|
139 |
echo '<ul>' . "\n";
|
140 |
+
echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
|
141 |
+
echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: <code>custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables that track IP addresses, affiliate IDs, etc. In some cases you may need to use PHP code to insert a value into the custom field dynamically. Obviously this is for advanced webmasters, but the functionality has been made available for those who need it.</li>' . "\n";
|
142 |
echo '</ul>' . "\n";
|
143 |
echo '<strong>This example uses cv1 to track a User\'s IP address:</strong><br />' . "\n";
|
144 |
+
echo '<em>( The IP address could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
|
145 |
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|<?php echo $_SERVER["REMOTE_ADDR"]; ?>"</code>' . "\n";
|
146 |
echo '</td>' . "\n";
|
147 |
/**/
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
2 |
|
3 |
-
Version: 3.0.
|
4 |
-
Stable tag: 3.0.
|
5 |
Framework: WS-P-3.0
|
6 |
|
7 |
SSL Compatible: yes
|
@@ -145,13 +145,19 @@ Not yet. This is coming soon though. It will be included in a future release of
|
|
145 |
== Upgrade Notice ==
|
146 |
|
147 |
= 3.0.6 =
|
148 |
-
* Upgrade highly recommended.
|
149 |
|
150 |
= 3.0.5 =
|
151 |
* Several bug fixes, improvements, and some new features.
|
152 |
|
153 |
== Changelog ==
|
154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
= 3.0.6 =
|
156 |
* Bug fix. The file `paypal-button.html` was renamed in s2Member v3.0.5, to `paypal-checkout-button.html`. The "missing file error" has been corrected in v3.0.6.
|
157 |
|
1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
2 |
|
3 |
+
Version: 3.0.8
|
4 |
+
Stable tag: 3.0.8
|
5 |
Framework: WS-P-3.0
|
6 |
|
7 |
SSL Compatible: yes
|
145 |
== Upgrade Notice ==
|
146 |
|
147 |
= 3.0.6 =
|
148 |
+
* Upgrade highly recommended. Fixes a bug in v3.0.5.
|
149 |
|
150 |
= 3.0.5 =
|
151 |
* Several bug fixes, improvements, and some new features.
|
152 |
|
153 |
== Changelog ==
|
154 |
|
155 |
+
= 3.0.8 =
|
156 |
+
* Framework updated to support a special %%modification%% Replacement Code in proxy IPN Return URLs; used by the s2Member Pro Module.
|
157 |
+
|
158 |
+
= 3.0.7 =
|
159 |
+
* Support for IPN Proxy Return URLs has been added to the s2Member Framework. This makes it possible for proxy IPN requests to receive variables back in a custom return URL. This is used by the s2Member Pro Module.
|
160 |
+
|
161 |
= 3.0.6 =
|
162 |
* Bug fix. The file `paypal-button.html` was renamed in s2Member v3.0.5, to `paypal-checkout-button.html`. The "missing file error" has been corrected in v3.0.6.
|
163 |
|
s2member.php
CHANGED
@@ -9,8 +9,8 @@ along with this software. In the main directory, see: /licensing/
|
|
9 |
If not, see: <http://www.gnu.org/licenses/>.
|
10 |
*/
|
11 |
/*
|
12 |
-
Version: 3.0.
|
13 |
-
Stable tag: 3.0.
|
14 |
Framework: WS-P-3.0
|
15 |
|
16 |
SSL Compatible: yes
|
@@ -46,7 +46,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
46 |
/*
|
47 |
Define versions.
|
48 |
*/
|
49 |
-
define ("WS_PLUGIN__S2MEMBER_VERSION", "3.0.
|
50 |
define ("WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION", "5.2");
|
51 |
define ("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION", "2.9.2");
|
52 |
define ("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "1.0");
|
9 |
If not, see: <http://www.gnu.org/licenses/>.
|
10 |
*/
|
11 |
/*
|
12 |
+
Version: 3.0.8
|
13 |
+
Stable tag: 3.0.8
|
14 |
Framework: WS-P-3.0
|
15 |
|
16 |
SSL Compatible: yes
|
46 |
/*
|
47 |
Define versions.
|
48 |
*/
|
49 |
+
define ("WS_PLUGIN__S2MEMBER_VERSION", "3.0.8");
|
50 |
define ("WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION", "5.2");
|
51 |
define ("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION", "2.9.2");
|
52 |
define ("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "1.0");
|