s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) - Version 3.0.8

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 Icon 128x128 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 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#x2F;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#x2F;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]+#x2F;", $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])?#x2F;", $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#x2F;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])?#x2F;", $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
- 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. */
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])?#x2F;", $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#x2F;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#x2F;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]+#x2F;", $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])?#x2F;", $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#x2F;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])?#x2F;", $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])?#x2F;", $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 ("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,13 +95,13 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,12 +112,12 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,11 +128,11 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,7 +143,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,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 ('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,7 +168,7 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,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 ('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,16 +187,16 @@ if (!function_exists ("ws_plugin__s2member_custom_registration_fields"))
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,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 ('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,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 ('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,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 ($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,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 ('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,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 ('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,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 ($url);
474
/**/
475
setcookie ("s2member_subscr_id", "", time () + 31556926, "/");
476
setcookie ("s2member_custom", "", time () + 31556926, "/");
477
setcookie ("s2member_level", "", time () + 31556926, "/");
478
/**/
479
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
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 ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
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 ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
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 ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
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%% = The PayPal® Subscription ID, which remains constant throughout any &amp; all future payments.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy It Now purchases. Since Lifetime &amp; 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%% = The Initial Fee charged during signup. If you offered a free trial, this will be 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. If 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%% = The Regular Amount of the Subscription. This value is always > 0, no matter what.</code> [ <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%% = This is the amount that will be charged on a Recurring basis, or 0 if non-Recurring.</code> [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% &amp; %%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.\\n\\nThe only time this is NOT equal to the %%regular%% rate, is when recurring payments are not required; and only a one-time regular rate applies. If you have trouble, try using the %%regular%% amount, or use the `Payment` Notifications instead of the `Signup` Notifications.\'); return false;">?</a> ]</li>' . "\n";
71
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
72
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
73
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</code></li>' . "\n";
74
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
75
- echo '<li><code>%%item_number%% = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) for the Membership Subscription.</code></li>' . "\n";
76
- echo '<li><code>%%item_name%% = The Item Name ( in other words, the associated membership Level Label that briefly describes the Item Number ).</code></li>' . "\n";
77
- echo '<li><code>%%initial_term%% = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
83
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
87
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The level number ( 0, 1, 2, 3, 4 ) 0 = Free Subscriber.</code></li>' . "\n";
129
- echo '<li><code>%%user_first_name%% = The First Name of the Member who registered their Username.</code></li>' . "\n";
130
- echo '<li><code>%%user_last_name%% = The Last Name of the Member who registered their Username.</code></li>' . "\n";
131
- echo '<li><code>%%user_full_name%% = The Full Name ( First & Last ) of the Member who registered their Username</code></li>' . "\n";
132
- echo '<li><code>%%user_email%% = The Email Address of the Member who registered their Username.</code></li>' . "\n";
133
- echo '<li><code>%%user_login%% = The Username the Member selected during registration.</code></li>' . "\n";
134
- echo '<li><code>%%user_pass%% = The Password selected or generated during registration.</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
139
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
143
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The PayPal® Subscription ID, which remains constant throughout any &amp; all future payments.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; the %%subscr_id%% is actually set to the Transaction ID for the payment.\\n\\nPayPal® does not provide a specific Subscription ID for Buy It Now purchases. Since Lifetime &amp; 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%% = The PayPal® unique Transaction ID, which is always unique for each payment received.</code></li>' . "\n";
188
- echo '<li><code>%%amount%% = The Amount of the payment. Most affiliate programs calculate commissions from this.</code></li>' . "\n";
189
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
190
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
191
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</code></li>' . "\n";
192
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
193
- echo '<li><code>%%item_number%% = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) that the payment is for.</code></li>' . "\n";
194
- echo '<li><code>%%item_name%% = The Item Name ( in other words, the associated membership Level Label that briefly describes the Item Number ).</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
199
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
203
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The PayPal® Subscription ID, which remained constant throughout the lifetime of the membership.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; 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 It Now purchases. Since Lifetime &amp; 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%% = The First Name listed on their User account. This might be different than what is on file at PayPal®.</code></li>' . "\n";
250
- echo '<li><code>%%user_last_name%% = The Last Name listed on their User account. This might be different than what is on file at PayPal®.</code></li>' . "\n";
251
- echo '<li><code>%%user_full_name%% = The Full Name listed on their User account. This might be different than what is on file at PayPal®.</code></li>' . "\n";
252
- echo '<li><code>%%user_email%% = The Email Address associated with their User account. This might be different than what is on file at PayPal®.</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
257
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode. like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
261
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The PayPal® Subscription ID, which remained constant throughout the lifetime of the membership.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; 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 It Now purchases. Since Lifetime &amp; 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%% = The PayPal® Transaction ID, associated with the original payment that is being refunded/reversed.</code></li>' . "\n";
307
- echo '<li><code>%%-amount%% = The Negative Amount of the payment, that was refunded or reversed back to the Customer.</code></li>' . "\n";
308
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
309
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
310
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</code></li>' . "\n";
311
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
312
- echo '<li><code>%%item_number%% = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) that the payment was for.</code></li>' . "\n";
313
- echo '<li><code>%%item_name%% = The Item Name ( in other words, the associated membership Level Label that briefly describes the Item Number ).</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
318
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
322
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The full URL ( generated by s2Member ) where the Customer can gain access.</code></li>' . "\n";
366
- echo '<li><code>%%sp_access_exp%% = Human readable expiration for %%sp_access_url%%. Ex: <em>( link expires in %%sp_access_exp%% )</em>.</code></li>' . "\n";
367
- echo '<li><code>%%txn_id%% = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</code></li>' . "\n";
368
- echo '<li><code>%%amount%% = The full Amount of the sale. Most affiliate programs calculate commissions from this.</code></li>' . "\n";
369
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
370
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
371
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</code></li>' . "\n";
372
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
373
- echo '<li><code>%%item_number%% = The Item Number. Ex: <em>sp:13,24,36:72</em> ( translates to: <em>sp:comma-delimited IDs:expiration hours</em> ).</code></li>' . "\n";
374
- echo '<li><code>%%item_name%% = The Item Name. In other words, a brief description, detailing what this purchase was for.</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
379
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Notification URL using %%cv1%% )</em><br />' . "\n";
383
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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 &amp; 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%% &amp; %%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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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 &amp; 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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The full URL ( generated by s2Member ) where the Customer can get registered.</code></li>' . "\n";
231
- echo '<li><code>%%subscr_id%% = The PayPal® Subscription ID, which remains constant throughout any &amp; all future payments.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy It Now purchases. Since Lifetime &amp; 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%% = The Initial Fee charged during signup. If you offered a free trial, this will be 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%% = The Regular Amount of the Subscription. This value is always > 0, no matter what.</code> [ <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%% = This is the amount that will be charged on a Recurring basis, or 0 if non-Recurring.</code> [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% &amp; %%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.\\n\\nThe only time this is NOT equal to the %%regular%% rate, is when recurring payments are not required; and only a one-time regular rate applies.\'); return false;">?</a> ]</li>' . "\n";
235
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
236
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
237
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</code></li>' . "\n";
238
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
239
- echo '<li><code>%%item_number%% = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) that the Subscription is for.</code></li>' . "\n";
240
- echo '<li><code>%%item_name%% = The Item Name ( in other words, the associated membership Level Label that briefly describes the item number ).</code></li>' . "\n";
241
- echo '<li><code>%%initial_term%% = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = This is the %%initial_term%% from above, converted ( and reduced ) to just a cycle representation, of: <em>Daily, Weekly, Monthly, or Yearly</em>.</code></li>' . "\n";
243
- echo '<li><code>%%regular_term%% = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = This is the %%regular_term%% from above, converted ( and reduced ) to just a cycle representation, of: <em>Daily, Weekly, Monthly, Yearly, or Lifetime</em>.</code></li>' . "\n";
245
- echo '<li><code>%%recurring/regular_cycle%% = Example ( 14.95 / Monthly ), or ... ( 0 / non-recurring ); depending on the value of %%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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
250
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Confirmation Email using %%cv1%% )</em><br />' . "\n";
254
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The full URL ( generated by s2Member ) where the Customer can gain access.</code></li>' . "\n";
314
- echo '<li><code>%%sp_access_exp%% = Human readable expiration for %%sp_access_url%%. Ex: <em>( link expires in %%sp_access_exp%% )</em>.</code></li>' . "\n";
315
- echo '<li><code>%%txn_id%% = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</code></li>' . "\n";
316
- echo '<li><code>%%amount%% = The full Amount that you charged for Specific Post/Page Access. This value will always be > 0.</code></li>' . "\n";
317
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
318
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
319
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</code></li>' . "\n";
320
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
321
- echo '<li><code>%%item_number%% = The Item Number. Ex: <em>sp:13,24,36:72</em> ( translates to: <em>sp:comma-delimited IDs:expiration hours</em> ).</code></li>' . "\n";
322
- echo '<li><code>%%item_name%% = The Item Name. In other words, a brief description, detailing what this purchase was for.</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
327
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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 in your Confirmation Email using %%cv1%% )</em><br />' . "\n";
331
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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 &amp; 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%% &amp; %%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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The PayPal® Subscription ID, which remains constant throughout any &amp; all future payments.</code> [ <a href="#" onclick="alert(\'There is one exception. If you are selling Lifetime or Fixed-Term ( non-recurring ) access, using a Buy It Now button; the %%subscr_id%% is actually set to the Transaction ID for the purchase.\\n\\nPayPal® does not provide a specific Subscription ID for Buy It Now purchases. Since Lifetime &amp; 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%% = The Initial Fee charged during signup. If you offered a free trial, this will be 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%% = The Regular Amount of the Subscription. This value is always > 0, no matter what.</code> [ <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%% = This is the amount that will be charged on a Recurring basis, or 0 if non-Recurring.</code> [ <a href="#" onclick="alert(\'If recurring payments have not been required, this will be equal to 0. That being said, %%regular%% &amp; %%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.\\n\\nThe only time this is NOT equal to the %%regular%% rate, is when recurring payments are not required; and only a one-time regular rate applies.\'); return false;">?</a> ]</li>' . "\n";
71
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
72
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
73
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription.</code></li>' . "\n";
74
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased the Membership Subscription through PayPal®.</code></li>' . "\n";
75
- echo '<li><code>%%item_number%% = The Item Number ( colon separated <em>level:custom_capabilities:fixed term</em> ) that the Subscription is for.</code></li>' . "\n";
76
- echo '<li><code>%%item_name%% = The Item Name ( in other words, the associated membership Level Label that briefly describes the Item Number ).</code></li>' . "\n";
77
- echo '<li><code>%%initial_term%% = This is the term length of the initial period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = This is the term length of the regular period. This will be a numeric value, followed by a space, then a single letter.</code> [ <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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
83
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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.</code></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 in your Tracking Code using %%cv1%% )</em><br />' . "\n";
87
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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%% = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase.</code></li>' . "\n";
130
- echo '<li><code>%%amount%% = The full Amount that you charged for Specific Post/Page Access. This value will always be > 0.</code></li>' . "\n";
131
- echo '<li><code>%%first_name%% = The First Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
132
- echo '<li><code>%%last_name%% = The Last Name of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
133
- echo '<li><code>%%full_name%% = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access.</code></li>' . "\n";
134
- echo '<li><code>%%payer_email%% = The Email Address of the Customer who purchased Specific Post/Page Access through PayPal®.</code></li>' . "\n";
135
- echo '<li><code>%%item_number%% = The Item Number. Ex: <em>sp:13,24,36:72</em> ( translates to: <em>sp:comma-delimited IDs:expiration hours</em> ).</code></li>' . "\n";
136
- echo '<li><code>%%item_name%% = The Item Name. In other words, a brief description, detailing what this purchase was for.</code></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%% = The domain of your site, which is passed through to PayPal® using the `custom` attribute in your PayPal® Shortcode.</code></li>' . "\n";
141
- echo '<li><code>%%cv1%% = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute, inside your Shortcode, like this: custom="' . $_SERVER["HTTP_HOST"] . '|cv1|cv2|cv3". 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.</code></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 in your Tracking Code using %%cv1%% )</em><br />' . "\n";
145
echo '<code>custom="' . $_SERVER["HTTP_HOST"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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 &amp; 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 &amp; 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%% &amp; %%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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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"] . '|&lt;?php echo $_SERVER["REMOTE_ADDR"]; ?&gt;"</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.6
4
- Stable tag: 3.0.6
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.6
13
- Stable tag: 3.0.6
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.5");
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");