Version Description
Download this release
Release Info
Developer | clavaque |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 221028 |
Comparing to | |
See all releases |
Code changes from version 220925 to 221028
- readme.txt +100 -44
- s2member.php +35 -4
- src/includes/classes/paypal-notify-in.inc.php +10 -0
- src/includes/classes/paypal-return-in.inc.php +7 -0
- src/includes/hooks.inc.php +2 -1
- src/includes/menu-pages/menu-pages.css +3 -0
- src/includes/translations/s2member.pot +8 -8
- src/vendor/autoload.php +1 -1
- src/vendor/composer/autoload_real.php +7 -7
- src/vendor/composer/autoload_static.php +2 -2
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
=== s2Member – Membership Plugin for All Kinds of Memberships, Content Restriction & Member
|
2 |
|
3 |
Plugin Name: s2Member Framework
|
4 |
Plugin URI: https://s2member.com/
|
5 |
-
Tags: membership, member, members only, memberships, content restriction, paid access, sell downloads, paypal, paid subscriptions, paid registration, custom login
|
6 |
-
Version:
|
7 |
-
Stable tag:
|
8 |
-
Tested up to: 6.1-
|
9 |
Requires at least: 4.2
|
10 |
Requires PHP: 5.6.2
|
11 |
Tested up to PHP: 8.1
|
@@ -26,55 +26,101 @@ PayPal Pro Integration: https://s2member.com/r/pp-account-types/
|
|
26 |
Text Domain: s2member
|
27 |
Domain Path: /src/includes/translations
|
28 |
|
29 |
-
❤️
|
30 |
|
31 |
== Description ==
|
32 |
|
33 |
-
|
34 |
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
https://youtu.be/qlKn-I-0W6U
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
= Some reasons to get s2Member Pro =
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
-
|
67 |
-
|
68 |
-
|
69 |
-
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
== Installation ==
|
80 |
|
@@ -130,6 +176,16 @@ Please see: <http://s2member.com/r/translations/>
|
|
130 |
|
131 |
== Changelog ==
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
= v220925 =
|
134 |
|
135 |
- (Pro) **UI Enhancement**: In ClickBank Options admin page, added note about keeping IPN encryption disabled.
|
1 |
+
=== s2Member – Best Membership Plugin for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions ===
|
2 |
|
3 |
Plugin Name: s2Member Framework
|
4 |
Plugin URI: https://s2member.com/
|
5 |
+
Tags: membership, member, members only, memberships, paywall, content restriction, paid access, sell downloads, paypal, paid subscriptions, paid registration, custom login
|
6 |
+
Version: 221028
|
7 |
+
Stable tag: 221028
|
8 |
+
Tested up to: 6.1-RC4-54709
|
9 |
Requires at least: 4.2
|
10 |
Requires PHP: 5.6.2
|
11 |
Tested up to PHP: 8.1
|
26 |
Text Domain: s2member
|
27 |
Domain Path: /src/includes/translations
|
28 |
|
29 |
+
❤️ The best membership plugin! Easy and quick to use. Monetize your site selling unlimited memberships, single payment or recurring paid subscriptions. Protect your content in a moment, and a moment later be ready to get payments for access. Simple and flexible. Protect the whole site, or just parts, even files for download.
|
30 |
|
31 |
== Description ==
|
32 |
|
33 |
+
❤️ The **best membership plugin!** Over 11 years of experience, development, releases... Still going and growing!
|
34 |
|
35 |
+
**Start your membership profits!** Build your tribe, gather your followers, enroll your students, bring in your clients!
|
36 |
+
|
37 |
+
💵 Enjoy the benefits of getting paid repeatedly for access to your site!
|
38 |
+
|
39 |
+
> ⭐⭐⭐⭐⭐ **Brilliant** "So glad I found this. It works brilliantly for our needs... love the seamless integration with PayPal. Everything we need. Thank you so much for creating this!" _-[zarverk2000](https://wordpress.org/support/topic/brilliant-1268/)_
|
40 |
+
|
41 |
+
= The best way to make money from your WordPress site! =
|
42 |
+
|
43 |
+
🤩 Sell **unlimited memberships**, turn free subscribers into members (subscriber to member → s. 2 member → s2Member), with a single payment or recurring payments subscriptions.
|
44 |
+
|
45 |
+
**Easy and quick to use.** Protect your membership content in a moment, and a moment later be ready to get payments for member access!
|
46 |
+
|
47 |
+
**Easy to configure and very flexible.** Protect the whole site, nothing, or just parts, even member files for paid downloads!
|
48 |
+
|
49 |
+
👉 Install s2Member now and **make money!** 😀
|
50 |
|
51 |
https://youtu.be/qlKn-I-0W6U
|
52 |
|
53 |
+
> ⭐⭐⭐⭐⭐ **So much capacity & great support** "I’m a novice and was able to quickly figure it out. When I got stuck I go to the support forum and Cristian is there with a quick answer to get me going again." _-[blueruck](https://wordpress.org/support/topic/so-much-capacity-great-support/)_
|
54 |
+
|
55 |
+
> ⭐⭐⭐⭐⭐ **The very best plugin and support service** "Great plugin, neat, easy to configure, and with interesting security features. A special mention to Cristian whose support is awesome, fast, clear even to free members like myself" _-[aflorarte](https://wordpress.org/support/topic/the-very-best-plugin-and-support-service/)_
|
56 |
+
|
57 |
+
**Packed with features**, but not required to use them all, just those you want. Some of them:
|
58 |
+
|
59 |
+
➡️ Member user levels and custom access capabilities
|
60 |
+
➡️ Membership content protection (post, page, category, tag, etc)
|
61 |
+
➡️ Protect anything served by WP (post types, URLs)
|
62 |
+
➡️ Member file protection (sell downloads)
|
63 |
+
➡️ Prevent member account sharing (limit IPs, simultaneous logins)
|
64 |
+
➡️ Protect accounts (limit failed login attempts)
|
65 |
+
➡️ Cool security/trust badge with your domain
|
66 |
+
➡️ PayPal Standard buttons for membership payments (more in Pro)
|
67 |
+
➡️ Automatic member access demotion at end of paid access time
|
68 |
+
➡️ Tracking software integration (affiliates, etc)
|
69 |
+
➡️ Email list services (Mailchimp, etc)
|
70 |
+
➡️ Notifications (signups, payments, etc)
|
71 |
+
➡️ Integrate with bbPress, BuddyPress for member communities
|
72 |
+
➡️ Compatible with any well coded theme (Elementor, Divi, etc)
|
73 |
+
➡️ Customize the WP login/registration look
|
74 |
+
➡️ Custom redirection after member login
|
75 |
+
➡️ Create custom profile fields for member accounts
|
76 |
+
➡️ Customize the user welcome email
|
77 |
+
➡️ And more!
|
78 |
+
|
79 |
+
👉 Install and start using s2Member now! 🤩
|
80 |
+
|
81 |
+
> ⭐⭐⭐⭐⭐ **Very Powerful Membership Plugin** "This membership plugin does a lot and has many, many configuration options to achieve whatever you want... I received extremely quick and reliable support." _-[liltrucks](https://wordpress.org/support/topic/very-powerful-membership-plugin/)_
|
82 |
+
|
83 |
+
> ⭐⭐⭐⭐⭐ **Simple, Compatible, Secure, and Versatile!** "We are seriously impressed with this plugin and we highly recommend it... We have not found ANY limitations to what we are trying to accomplish... a very smooth process... straight-forward and user-friendly!... exceeded our expectations!" _-[tips4gamers](https://wordpress.org/support/topic/simple-compatible-secure-and-versatile/)_
|
84 |
+
|
85 |
+
> ⭐⭐⭐⭐⭐ **Excellent plugin** "This plugin does everything it says on the box. It does it well... the functionality is absolutely spot on. The developers/maintainers are also active and helpful. Totally recommended!" _-[richardfoley](https://wordpress.org/support/topic/excellent-plugin-5188/)_
|
86 |
+
|
87 |
+
> ⭐⭐⭐⭐⭐ **Best Membership Plugin I’ve Used** "I switched to s2 Member around 3 years ago after trying a few plugins. I found these other plugins inflexible and difficult to configure... Well worth investigating if you want a robust membership solution." _-[rnwhalley](https://wordpress.org/support/topic/best-membership-plugin-ive-used/)_
|
88 |
+
|
89 |
+
🤖 Not needed to know any PHP code or be a developer. Only code needed is copy-paste wp shortcodes, like for the paypal buttons... But is also developer-friendly to customize your installation if wanted.
|
90 |
|
91 |
= Some reasons to get s2Member Pro =
|
92 |
|
93 |
+
✅ Membership content dripping
|
94 |
+
✅ Stripe, PayPal Pro, Authorize.Net, ClickBank
|
95 |
+
✅ On-site one-step checkout with pro-forms (Stripe, PayPal, Auth.Net)
|
96 |
+
✅ Unlimited membership levels
|
97 |
+
✅ Membership renewal reminder emails
|
98 |
+
✅ Single-step member registration and payment with pro-forms
|
99 |
+
✅ Custom redirection after payment
|
100 |
+
✅ Coupon codes and gift/redemption codes
|
101 |
+
✅ Custom member offer redirections after login
|
102 |
+
✅ Pro API for new integrations
|
103 |
+
✅ Public members directory
|
104 |
+
✅ Members bulk import/update/exporter
|
105 |
+
✅ Multisite network support
|
106 |
+
✅ Login and registration forms to use in pages/posts
|
107 |
+
👉 [Click here for more](https://s2member.com/features/) 🙂
|
108 |
+
|
109 |
+
> ⭐⭐⭐⭐⭐ **The Best Membership Plugin** "I have built with most Membership plugins and literally dozens using S2 Pro and I can tell you, bar none it is the best of all of them. Extremely powerful, anything you might want to do it can do... I highly recommend you try it out." _-[antwoords](https://wordpress.org/support/topic/the-best-membership-plugin-5/)_
|
110 |
+
|
111 |
+
> ⭐⭐⭐⭐⭐ **Excellent plugin & top support** "We’ve used s2member pro on a few projects now & find it has met all our membership needs. Most impressive has been the support. Excellent communication, knowledgeable, friendly and super patient 🙂" _-[aaee6](https://wordpress.org/support/topic/excellent-plugin-top-support-3/)_
|
112 |
+
|
113 |
+
> ⭐⭐⭐⭐⭐ **Awesome Support** "I’ve been using s2Member for 9 years... Amazing support of a high-end plugin and much appreciated. This is one of the reasons I stick with s2Member. Support has always been great!" _-[graphichome](https://wordpress.org/support/topic/awesome-support-712/)_
|
114 |
+
|
115 |
+
> ⭐⭐⭐⭐⭐ **Wonderful Support** "Above and beyond. I’ve used this plugin for over ten years with various clients and whenever I need help, they’ve helped find a solution." _-[germars](https://wordpress.org/support/topic/wonderful-support-68/)_
|
116 |
+
|
117 |
+
The free s2Member Framework integrates with PayPal Website Payments Standard (also free). Sell "Buy Now" or Membership access to your site. Restrict access to Roles, Capabilities, Posts, Pages, or anything else in WordPress.
|
118 |
+
|
119 |
+
Protect your WordPress Posts, Pages, Tags, Categories, URIs, BuddyPress, bbPress, and even portions of content within Posts, Pages, themes, plugins. **Easily configurable and highly extensible.** You can even protect downloadable files and streaming audio/video. Store files locally, or use s2Member's integration with Amazon S3/CloudFront.
|
120 |
+
|
121 |
+
s2Member is powered almost entirely by WordPress shortcodes, making advanced integrations quick and easy. Sell recurring (or non-recurring) subscriptions with lots of flexibility. Or sell "Buy Now" membership access in various ways. You can also sell specific Posts/Pages, sell member access to file downloads, or sell members Custom Capabilities that provide highly configurable access to specific portions of your content.
|
122 |
+
|
123 |
+
👉 Install now s2Member and **start making money!** 😀
|
124 |
|
125 |
== Installation ==
|
126 |
|
176 |
|
177 |
== Changelog ==
|
178 |
|
179 |
+
= v221028 =
|
180 |
+
|
181 |
+
- (Framework) **Fix**: Initialized some array keys to prevent PHP warnings in PayPal notify and return files. Thanks Greg Mulhauser for your help.
|
182 |
+
|
183 |
+
- (Framework) **UI**: Widened the Logs viewer. Thanks Sim. See [thread 10064](https://f.wpsharks.com/t/10064)
|
184 |
+
|
185 |
+
- (Framework) **UI**: Framework auto-update is now allowed when Pro add-on installed.
|
186 |
+
|
187 |
+
- (Pro) **UI**: The Pro updater now shows when a newer version available, not just when required.
|
188 |
+
|
189 |
= v220925 =
|
190 |
|
191 |
- (Pro) **UI Enhancement**: In ClickBank Options admin page, added note about keeping IPN encryption disabled.
|
s2member.php
CHANGED
@@ -20,8 +20,8 @@
|
|
20 |
*/
|
21 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
22 |
|
23 |
-
Version:
|
24 |
-
Stable tag:
|
25 |
|
26 |
SSL Compatible: yes
|
27 |
bbPress Compatible: yes
|
@@ -36,7 +36,7 @@ PayPal Pro Compatible: yes w/s2Member Pro
|
|
36 |
Authorize.Net Compatible: yes w/s2Member Pro
|
37 |
ClickBank Compatible: yes w/s2Member Pro
|
38 |
|
39 |
-
Tested up to: 6.1-
|
40 |
Requires at least: 4.2
|
41 |
|
42 |
Requires PHP: 5.6.2
|
@@ -77,7 +77,7 @@ if(!defined('WPINC')) // MUST have WordPress.
|
|
77 |
*
|
78 |
* @var string
|
79 |
*/
|
80 |
-
${__FILE__}['tmp'] = '
|
81 |
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
|
82 |
define('WS_PLUGIN__S2MEMBER_VERSION', ${__FILE__}['tmp']);
|
83 |
/**
|
@@ -186,3 +186,34 @@ else if(is_admin()) // Admin compatibility errors.
|
|
186 |
}
|
187 |
}
|
188 |
unset(${__FILE__}); // Housekeeping.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
*/
|
21 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
22 |
|
23 |
+
Version: 221028
|
24 |
+
Stable tag: 221028
|
25 |
|
26 |
SSL Compatible: yes
|
27 |
bbPress Compatible: yes
|
36 |
Authorize.Net Compatible: yes w/s2Member Pro
|
37 |
ClickBank Compatible: yes w/s2Member Pro
|
38 |
|
39 |
+
Tested up to: 6.1-RC4-54709
|
40 |
Requires at least: 4.2
|
41 |
|
42 |
Requires PHP: 5.6.2
|
77 |
*
|
78 |
* @var string
|
79 |
*/
|
80 |
+
${__FILE__}['tmp'] = '221028'; //version//
|
81 |
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
|
82 |
define('WS_PLUGIN__S2MEMBER_VERSION', ${__FILE__}['tmp']);
|
83 |
/**
|
186 |
}
|
187 |
}
|
188 |
unset(${__FILE__}); // Housekeeping.
|
189 |
+
|
190 |
+
//221026 Promo boo
|
191 |
+
if (is_admin() && !defined('WS_PLUGIN__S2MEMBER_PRO_VERSION')) {
|
192 |
+
// Dismiss
|
193 |
+
add_action('admin_init', function(){
|
194 |
+
$user_id = get_current_user_id();
|
195 |
+
if (isset($_GET['s2-dismiss-boo22']))
|
196 |
+
add_user_meta($user_id, 's2_notice_dismissed_boo22_3', 'true', true);
|
197 |
+
});
|
198 |
+
// Notice
|
199 |
+
add_action('admin_notices', function(){
|
200 |
+
$user_id = get_current_user_id();
|
201 |
+
$logo_url = $GLOBALS['WS_PLUGIN__']['s2member']['c']['dir_url'].'/src/images/logo-square-big.png';
|
202 |
+
$dismiss_url = add_query_arg('s2-dismiss-boo22', '', $_SERVER['REQUEST_URI']);
|
203 |
+
$color = '#ff6000';
|
204 |
+
if (isset($_GET['s2-show-notice']) || !get_user_meta($user_id, 's2_notice_dismissed_boo22_3')) {
|
205 |
+
echo '
|
206 |
+
<div class="notice" style="position:relative; border-left-color:'.$color.'; box-shadow: 0px 0px 6px 0px '.$color.' !important;">
|
207 |
+
<table><tr>
|
208 |
+
<td><a href="https://s2member.com/" target="_blank"><img src="'.$logo_url.'" height="70" width="70" align="top" style="padding-right:1em; filter: hue-rotate(-160deg) saturate(60) brightness(150%); -webkit-filter: hue-rotate(-160deg) saturate(60) brightness(150%);" /></a></td>
|
209 |
+
<td>
|
210 |
+
<span style="font-style:italic;">I\'m very happy you\'re using s2Member! 💕 so I discounted <a href="https://s2member.com/prices" target="_blank" style="color:'.$color.' !important; font-weight:bold;">20% OFF s2Member Pro</a> for you, if you get it now...<br />
|
211 |
+
Get paid more with <a href="https://s2member.com/testimonials/" target="_blank" style="color:'.$color.' !important; font-weight:bold;">s2Member Pro!</a> with Stripe on-site payments, success redirections, reminder emails, <a href="https://s2member.com/features/" target="_blank">and more!</a></span><br />
|
212 |
+
<b><i>This is a limited offer and expires soon...</i> ➡️ <i><a href="https://s2member.com/prices/" target="_blank">Secure your lifetime license NOW at the best price!</a></i></b> ⬅️ 🙂<br />
|
213 |
+
</td>
|
214 |
+
</tr></table>
|
215 |
+
<a href="'.$dismiss_url.'" class="notice-dismiss" style="text-decoration:none;"><span class="screen-reader-text">Dismiss this notice.</span></a>
|
216 |
+
</div>';
|
217 |
+
}
|
218 |
+
});
|
219 |
+
}
|
src/includes/classes/paypal-notify-in.inc.php
CHANGED
@@ -62,11 +62,21 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in'))
|
|
62 |
c_ws_plugin__s2member_email_configs::email_config_release(); // Release s2Member Filters.
|
63 |
|
64 |
$paypal = array(); // Initialize PayPal array; we also reference this with a variable for a possible proxy handler.
|
|
|
65 |
if(!empty($_REQUEST['s2member_paypal_proxy']) && in_array($_REQUEST['s2member_paypal_proxy'], array('alipay', 'stripe', 'authnet', 'clickbank', 'ccbill', 'google'), TRUE))
|
66 |
${esc_html(trim(stripslashes($_REQUEST['s2member_paypal_proxy'])))} = & $paypal; // Internal alias by reference.
|
67 |
|
68 |
if(is_array($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_postvars()) && ($_paypal = $paypal) && ($_paypal_s = serialize($_paypal)))
|
69 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
$paypal['s2member_log'][] = 'IPN received on: '.date('D M j, Y g:i:s a T');
|
71 |
$paypal['s2member_log'][] = 's2Member POST vars verified '.((!empty($paypal['proxy_verified'])) ? 'with a Proxy Key' : 'through a POST back to PayPal.');
|
72 |
|
62 |
c_ws_plugin__s2member_email_configs::email_config_release(); // Release s2Member Filters.
|
63 |
|
64 |
$paypal = array(); // Initialize PayPal array; we also reference this with a variable for a possible proxy handler.
|
65 |
+
|
66 |
if(!empty($_REQUEST['s2member_paypal_proxy']) && in_array($_REQUEST['s2member_paypal_proxy'], array('alipay', 'stripe', 'authnet', 'clickbank', 'ccbill', 'google'), TRUE))
|
67 |
${esc_html(trim(stripslashes($_REQUEST['s2member_paypal_proxy'])))} = & $paypal; // Internal alias by reference.
|
68 |
|
69 |
if(is_array($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_postvars()) && ($_paypal = $paypal) && ($_paypal_s = serialize($_paypal)))
|
70 |
{
|
71 |
+
// Initialize a few array keys to prevent PHP warnings.
|
72 |
+
if (!isset($_REQUEST['s2member_paypal_proxy']))
|
73 |
+
$_REQUEST['s2member_paypal_proxy'] = '';
|
74 |
+
foreach (array('level', 'ccaps', 'option_name1', 'option_selection1', 'option_name2', 'option_selection2', 'invoice', 'payment_status', 'mc_currency', 's2member_paypal_proxy') as $key)
|
75 |
+
$paypal[$key] = isset($paypal[$key]) ? $paypal[$key] : '';
|
76 |
+
// Prevent list() warning when missing a value, e.g. no ccaps
|
77 |
+
if (!empty($paypal['item_number']))
|
78 |
+
$paypal['item_number'] .= ':';
|
79 |
+
|
80 |
$paypal['s2member_log'][] = 'IPN received on: '.date('D M j, Y g:i:s a T');
|
81 |
$paypal['s2member_log'][] = 's2Member POST vars verified '.((!empty($paypal['proxy_verified'])) ? 'with a Proxy Key' : 'through a POST back to PayPal.');
|
82 |
|
src/includes/classes/paypal-return-in.inc.php
CHANGED
@@ -55,6 +55,13 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
|
|
55 |
|
56 |
if (is_array($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_postvars ()) && ($_paypal = $paypal) && ($_paypal_s = serialize ($_paypal)))
|
57 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
$paypal["s2member_log"][] = "Return-Data received on: " . date ("D M j, Y g:i:s a T");
|
59 |
$paypal["s2member_log"][] = "s2Member POST vars verified " . ((!empty($paypal["proxy_verified"])) ? "with a Proxy Key" : "through a POST back to PayPal.");
|
60 |
|
55 |
|
56 |
if (is_array($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_postvars ()) && ($_paypal = $paypal) && ($_paypal_s = serialize ($_paypal)))
|
57 |
{
|
58 |
+
// Initialize a few array keys to prevent PHP warnings.
|
59 |
+
foreach (array('level', 'ccaps', 'option_name1', 'option_selection1', 'option_name2', 'option_selection2', 'invoice', 'payment_status', 'mc_currency', 's2member_paypal_proxy') as $key)
|
60 |
+
$paypal[$key] = isset($paypal[$key]) ? $paypal[$key] : '';
|
61 |
+
// Prevent list() warning when missing a value, e.g. no ccaps
|
62 |
+
if (!empty($paypal['item_number']))
|
63 |
+
$paypal['item_number'] .= ':';
|
64 |
+
|
65 |
$paypal["s2member_log"][] = "Return-Data received on: " . date ("D M j, Y g:i:s a T");
|
66 |
$paypal["s2member_log"][] = "s2Member POST vars verified " . ((!empty($paypal["proxy_verified"])) ? "with a Proxy Key" : "through a POST back to PayPal.");
|
67 |
|
src/includes/hooks.inc.php
CHANGED
@@ -213,4 +213,5 @@ Register the activation | de-activation routines.
|
|
213 |
register_activation_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::activate');
|
214 |
register_deactivation_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::deactivate');
|
215 |
register_uninstall_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::uninstall');
|
216 |
-
|
|
213 |
register_activation_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::activate');
|
214 |
register_deactivation_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::deactivate');
|
215 |
register_uninstall_hook($GLOBALS['WS_PLUGIN__']['s2member']['c']['plugin_basename'], 'c_ws_plugin__s2member_installation::uninstall');
|
216 |
+
//221024 Now that Pro add-on doesn't have to match Framework's version to remain active, it's safer to auto-update Framework.
|
217 |
+
// add_filter('auto_update_plugin', 'c_ws_plugin__s2member_installation::auto_update_filter', PHP_INT_MAX-10, 2); // Disallow s2Member update.
|
src/includes/menu-pages/menu-pages.css
CHANGED
@@ -1445,6 +1445,9 @@ div.ws-menu-page textarea {
|
|
1445 |
min-height: 5em;
|
1446 |
line-height: 1.2em !important;
|
1447 |
}
|
|
|
|
|
|
|
1448 |
|
1449 |
div.ws-menu-page select {
|
1450 |
background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55% !important;
|
1445 |
min-height: 5em;
|
1446 |
line-height: 1.2em !important;
|
1447 |
}
|
1448 |
+
#ws-plugin--s2member-log-file-viewer {
|
1449 |
+
max-width: 100% !important;
|
1450 |
+
}
|
1451 |
|
1452 |
div.ws-menu-page select {
|
1453 |
background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55% !important;
|
src/includes/translations/s2member.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version:
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
-
"POT-Creation-Date: 2022-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -4335,9 +4335,9 @@ msgstr ""
|
|
4335 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:175
|
4336 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:186
|
4337 |
#: src/includes/classes/paypal-return-in-web-accept-sp.inc.php:127
|
4338 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4339 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4340 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4341 |
msgctxt "s2member-front"
|
4342 |
msgid "Back To Home Page"
|
4343 |
msgstr ""
|
@@ -4436,17 +4436,17 @@ msgctxt "s2member-front"
|
|
4436 |
msgid "<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance."
|
4437 |
msgstr ""
|
4438 |
|
4439 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4440 |
msgctxt "s2member-front"
|
4441 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
4442 |
msgstr ""
|
4443 |
|
4444 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4445 |
msgctxt "s2member-front"
|
4446 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
4447 |
msgstr ""
|
4448 |
|
4449 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4450 |
msgctxt "s2member-front"
|
4451 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
4452 |
msgstr ""
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: 221028\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
+
"POT-Creation-Date: 2022-10-27 22:54:45+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
4335 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:175
|
4336 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:186
|
4337 |
#: src/includes/classes/paypal-return-in-web-accept-sp.inc.php:127
|
4338 |
+
#: src/includes/classes/paypal-return-in.inc.php:103
|
4339 |
+
#: src/includes/classes/paypal-return-in.inc.php:124
|
4340 |
+
#: src/includes/classes/paypal-return-in.inc.php:150
|
4341 |
msgctxt "s2member-front"
|
4342 |
msgid "Back To Home Page"
|
4343 |
msgstr ""
|
4436 |
msgid "<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance."
|
4437 |
msgstr ""
|
4438 |
|
4439 |
+
#: src/includes/classes/paypal-return-in.inc.php:102
|
4440 |
msgctxt "s2member-front"
|
4441 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
4442 |
msgstr ""
|
4443 |
|
4444 |
+
#: src/includes/classes/paypal-return-in.inc.php:123
|
4445 |
msgctxt "s2member-front"
|
4446 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
4447 |
msgstr ""
|
4448 |
|
4449 |
+
#: src/includes/classes/paypal-return-in.inc.php:149
|
4450 |
msgctxt "s2member-front"
|
4451 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
4452 |
msgstr ""
|
src/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit6d82bbede45e400be5d087d6543b416a::getLoader();
|
src/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInite64497be01e7d367bbe45cae35bacb5d
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
-
spl_autoload_unregister(array('
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
require_once __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
-
call_user_func(\Composer\Autoload\
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
@@ -51,19 +51,19 @@ class ComposerAutoloaderInite64497be01e7d367bbe45cae35bacb5d
|
|
51 |
$loader->register(true);
|
52 |
|
53 |
if ($useStaticLoader) {
|
54 |
-
$includeFiles = Composer\Autoload\
|
55 |
} else {
|
56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
57 |
}
|
58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
59 |
-
|
60 |
}
|
61 |
|
62 |
return $loader;
|
63 |
}
|
64 |
}
|
65 |
|
66 |
-
function
|
67 |
{
|
68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
69 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit6d82bbede45e400be5d087d6543b416a
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
+
spl_autoload_register(array('ComposerAutoloaderInit6d82bbede45e400be5d087d6543b416a', 'loadClassLoader'), true, true);
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit6d82bbede45e400be5d087d6543b416a', 'loadClassLoader'));
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
require_once __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit6d82bbede45e400be5d087d6543b416a::getInitializer($loader));
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
51 |
$loader->register(true);
|
52 |
|
53 |
if ($useStaticLoader) {
|
54 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit6d82bbede45e400be5d087d6543b416a::$files;
|
55 |
} else {
|
56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
57 |
}
|
58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
59 |
+
composerRequire6d82bbede45e400be5d087d6543b416a($fileIdentifier, $file);
|
60 |
}
|
61 |
|
62 |
return $loader;
|
63 |
}
|
64 |
}
|
65 |
|
66 |
+
function composerRequire6d82bbede45e400be5d087d6543b416a($fileIdentifier, $file)
|
67 |
{
|
68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
69 |
require $file;
|
src/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
|
@@ -30,7 +30,7 @@ class ComposerStaticInite64497be01e7d367bbe45cae35bacb5d
|
|
30 |
public static function getInitializer(ClassLoader $loader)
|
31 |
{
|
32 |
return \Closure::bind(function () use ($loader) {
|
33 |
-
$loader->classMap =
|
34 |
|
35 |
}, null, ClassLoader::class);
|
36 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit6d82bbede45e400be5d087d6543b416a
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
|
30 |
public static function getInitializer(ClassLoader $loader)
|
31 |
{
|
32 |
return \Closure::bind(function () use ($loader) {
|
33 |
+
$loader->classMap = ComposerStaticInit6d82bbede45e400be5d087d6543b416a::$classMap;
|
34 |
|
35 |
}, null, ClassLoader::class);
|
36 |
}
|