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

Version Description

= v160801 =

(Maintenance Release) Upgrade immediately.

Download this release

Release Info

Developer clavaque
Plugin Icon 128x128 s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members)
Version 210208
Comparing to
See all releases

Code changes from version 201225 to 210208

readme.txt CHANGED
@@ -1,57 +1,93 @@
1
- === s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
 
3
- Version: 201225
4
- Stable tag: 201225
5
- Tested up to: 5.7
 
 
 
6
  Requires at least: 4.2
7
  Requires PHP: 5.6.2
8
  Tested up to PHP: 7.4.6
9
  License: GNU General Public License v2 or later.
10
- Contributors: WebSharks, JasWSInc, raamdev, clavaque
11
  Author: WP Sharks
12
  Author URI: http://s2member.com/
13
  Donate link: http://s2member.com/donate/
14
  Beta link: http://s2member.com/beta-testers/
 
 
 
 
 
 
 
15
  Text Domain: s2member
16
  Domain Path: /src/includes/translations
17
- Plugin Name: s2Member® Framework
18
- Plugin URI: http://s2member.com/
19
- Tags: membership, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, ecommerce, restriction
20
 
21
- s2Member®—a powerful (free) membership plugin for WordPress®. Protect members only content with roles/capabilities.
22
 
23
  == Description ==
24
 
25
- The s2Member® Framework (free) 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.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
- Protect your WordPress Posts, Pages, Tags, Categories, URIs, BuddyPress/bbPress, and even portions of content within Posts, Pages, themes, plugins. Easily configurable & highly extensible. You can even protect downloadable files and streaming audio/video. Store files locally, or use s2Member's integration with Amazon® S3/CloudFront.
28
 
29
- s2Member is powered almost entirely by WordPress shortcodes, making complex integrations quick & easy. Sell recurring (or non-recurring) subscriptions with lots of flexibility. Or sell "Buy Now" access in various ways. You can also sell specific Posts/Pages, sell access to file downloads, or sell Custom Capabilities that provide highly configurable access to specific portions of your content.
30
 
31
- You can learn more at [s2Member.com](http://s2member.com/).
32
 
33
- = Reasons to upgrade to "s2Member® Pro" =
34
 
35
- - Stripe™ integration via Pro-Forms (one-step checkout).
36
- - PayPal Pro™ integration via Pro-Forms (one-step checkout).
37
- - Authorize.Net™ integration via Pro-Forms (one-step checkout).
38
- - Plus ClickBank™, Unlimited Membership Levels, Coupon Codes, Gift/Redemption Codes, Pro API, and more!
39
 
40
- With 1000's of customers, an intelligent open-community, comprehensive documentation, video tutorials, APIs, the s2Member Codex, KB articles, and over 50,000 forum posts; s2Member just can't be beat!
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
- Secure WordPress content and offer users/members a secure checkout solution that integrates seamlessly with WordPress Roles/Capabilities. It's like a cash machine. s2Member puts money back in your pocket with every customer you acquire. You can learn more at [s2Member.com](http://s2member.com/).
 
 
43
 
44
  == Installation ==
45
 
46
- **NOTICE:** If you are an s2Member Pro customer in need of support, please use [our support center at s2Member.com](http://s2member.com/support/).
47
 
48
  ---
49
 
50
- = s2Member® is Very Easy to Install =
 
 
51
 
52
- 1. Upload the `/s2member` folder to your `/wp-content/plugins/` directory.
53
- 2. Activate the plugin through the **Plugins** menu in WordPress®.
54
- 3. Navigate to the **s2Member® Options** panel for configuration details.
 
 
55
 
56
  = See Also (s2Member.com) =
57
 
@@ -59,7 +95,7 @@ Secure WordPress content and offer users/members a secure checkout solution that
59
 
60
  = Is s2Member compatible with Multisite Networking? =
61
 
62
- Yes. s2Member and s2Member Pro, are also both compatible with Multisite Networking. After you enable Multisite Networking, install the s2Member plugin. Then navigate to `s2Member → Multisite (Config)` in the Dashboard on your Main Site.
63
 
64
  == Screenshots ==
65
 
@@ -73,62 +109,28 @@ Yes. s2Member and s2Member Pro, are also both compatible with Multisite Networki
73
 
74
  == Frequently Asked Questions ==
75
 
76
- **NOTICE:** If you are an s2Member Pro customer in need of support, please use [our support center at s2Member.com](http://s2member.com/support/).
77
 
78
  ---
79
 
80
- = Please Check the Following s2Member® Resources =
81
 
82
- * s2Member® FAQs: <http://s2member.com/faqs/>
83
  * Knowledge Base: <http://s2member.com/kb/>
84
  * Video Tutorials: <http://s2member.com/videos/>
85
  * Community: <http://s2member.com/r/forum/>
86
  * Codex: <http://s2member.com/codex/>
87
 
88
- = Translating s2Member® =
89
 
90
  Please see: <http://s2member.com/r/translations/>
91
 
92
  == License ==
93
 
94
- Copyright: © 2013 [WP Sharks](http://www.wpsharks.com/) (coded in the USA)
95
 
96
  Released under the terms of the [GNU General Public License](http://www.gnu.org/licenses/gpl-2.0.html).
97
 
98
- = Credits / Additional Acknowledgments =
99
-
100
- * Software designed for WordPress®.
101
- - GPL License <http://codex.wordpress.org/GPL>
102
- - WordPress® <http://wordpress.org>
103
- * JavaScript extensions require jQuery.
104
- - GPL License <http://jquery.org/license>
105
- - jQuery <http://jquery.com/>
106
- * Readme parsing routines, powered (in part) by PHP Markdown.
107
- - BSD / GPL Compatible License <http://michelf.com/projects/php-markdown/license/>
108
- - PHP Markdown <http://michelf.com/projects/php-markdown/>
109
- * Administration panel (tools icon) was provided by Everaldo.com.
110
- - LGPL License <http://www.everaldo.com/crystal/?action=license>
111
- - Everaldo <http://www.everaldo.com/crystal/?action=downloads>
112
- * Administration panel (videos icon) was provided by David Vignoni.
113
- - LGPL License <http://www.iconfinder.com/search/?q=iconset%3Anuvola2>
114
- - David Vignoni <http://www.icon-king.com/>
115
- * PayPal® and its associated API, buttons & services have been integrated into this software via external hyperlinks.
116
- The files/services provided by PayPal® are not distributed with this software. They have their own terms & conditions.
117
- - PayPal®, a 3rd party service, is powered by eBay, Inc. <http://www.paypal.com/>
118
- - PayPal® is a trademark of eBay, Inc. <http://www.ebay.com/>
119
- * The W3C® and its associated validator & services have been integrated into this software via external hyperlinks.
120
- The files/services provided by the W3C® are not distributed with this software. They have their own terms & conditions.
121
- - The W3C®, a 3rd party service, is powered by the World Wide Web Consortium <http://validator.w3.org/>
122
- - W3C® is a trademark of the World Wide Web Consortium. <http://www.w3.org/>
123
- * The MailChimp® services have been integrated into this software through a GPL compatible API & hyperlinks.
124
- The services provided by MailChimp® are not distributed with this software. They have their own terms & conditions.
125
- - MailChimp®, a 3rd party service, is powered by The Rocket Science Group, LLC <http://www.mailchimp.com/>
126
- - MailChimp® is a trademark of The Rocket Science Group, LLC. <http://www.mailchimp.com/terms-policies/terms-of-use/>
127
- * The AWeber® services have been integrated into this software through hyperlinks & email commands.
128
- The services provided by AWeber® are not distributed with this software. They have their own terms & conditions.
129
- - AWeber®, a 3rd party service, is powered by AWeber Communications <http://www.aweber.com/about.htm>
130
- - AWeber® is a trademark of AWeber Communications. <http://www.aweber.com/service-agreement.htm>
131
-
132
  == Upgrade Notice ==
133
 
134
  = v160801 =
@@ -137,6 +139,24 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/
137
 
138
  == Changelog ==
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  = v201225 =
141
 
142
  - (s2Member Framework) **Bug Fix**: View Password icon WP's login page was not displaying correctly. Kudos to Beee4life for reporting it. See [issue #1187](https://github.com/wpsharks/s2member/issues/1187)
1
+ === s2Member® Framework (Membership, Member Level Roles, Access Capabilities, PayPal Members) ===
2
 
3
+ Plugin Name: s2Member® Framework
4
+ Plugin URI: http://s2member.com/
5
+ Tags: membership, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, ecommerce, restriction
6
+ Version: 210208
7
+ Stable tag: 210208
8
+ Tested up to: 5.7-alpha
9
  Requires at least: 4.2
10
  Requires PHP: 5.6.2
11
  Tested up to PHP: 7.4.6
12
  License: GNU General Public License v2 or later.
13
+ Contributors: WebSharks, JasWSInc, raamdev, clavaque, eduan
14
  Author: WP Sharks
15
  Author URI: http://s2member.com/
16
  Donate link: http://s2member.com/donate/
17
  Beta link: http://s2member.com/beta-testers/
18
+ Forum URI: http://s2member.com/r/forum/
19
+ Privacy URI: http://s2member.com/privacy-policy/
20
+ Changelog URI: http://s2member.com/changelog/
21
+ Video Tutorials: http://s2member.com/r/s2member-videos/
22
+ Knowledge Base: http://s2member.com/kb/
23
+ Newsletter: http://s2member.com/r/subscribe/
24
+ PayPal Pro Integration: http://s2member.com/r/pp-account-types/
25
  Text Domain: s2member
26
  Domain Path: /src/includes/translations
 
 
 
27
 
28
+ s2Member® is a powerful free membership plugin for WordPress. Protect members only content with Member Level Roles and Access Capabilities.
29
 
30
  == Description ==
31
 
32
+ The free s2Member® Framework lets you protect WordPress content and offer users a secure checkout solution to get access.
33
+
34
+ Easy to configure and highly extensible.
35
+
36
+ You can protect the whole site, certain areas, or even just parts of pages.
37
+
38
+ Sell recurring (or non-recurring) subscriptions with lots of flexibility. Or sell "Buy Now" access in various ways.
39
+
40
+ Protect your WordPress posts, pages, tags, categories, URIs, BuddyPress/bbPress, and even portions of them.
41
+
42
+ Provide highly configurable access to specific portions of your content with Levels or Access Capabilities.
43
+
44
+ You can also protect downloadable files and streaming audio/video. Store files locally, or use s2Member's integration with Amazon S3 and CloudFront CDN.
45
+
46
+ Sell specific Posts/Pages, File Downloads, or Access Capabilities.
47
 
48
+ Sell access to your site's content with single "buy now" payments or recurring payments subscription Memberships.
49
 
50
+ Integrates with PayPal's Website Payments Standard (also free).
51
 
52
+ Like a cash machine, s2Member puts money back in your pocket. Monetize your website now with s2Member.
53
 
54
+ Add now s2Member Framework to your site and start making money with it!
55
 
56
+ = Some reasons to upgrade to "s2Member Pro" =
 
 
 
57
 
58
+ - Unlimited Membership Levels.
59
+ - Renewal reminder emails.
60
+ - Content dripping.
61
+ - Single-step registration and payment with s2Member Pro-forms.
62
+ - Stripe, PayPal Pro and Authorize.Net integration via Pro-forms.
63
+ - Pro-form Coupon Codes and Gift/Redemption Codes.
64
+ - ClickBank buttons integration.
65
+ - Pro API for new integrations.
66
+ - Public Members Directory.
67
+ - User bulk Import/Update/Exporter tools.
68
+ - Multisite Network support.
69
+ - Login and registration forms to include in your pages or posts.
70
+ - ... and more!
71
 
72
+ With thousands of customers, an intelligent open community, comprehensive documentation, video tutorials, APIs, the s2Member Codex, KB articles, and thousands of forum posts; s2Member just can't be beat!
73
+
74
+ [-> Click Here for more details](http://s2member.com/)
75
 
76
  == Installation ==
77
 
78
+ **NOTICE:** If you are an s2Member Pro customer in need of support, please use [our forum at s2Member.com](http://s2member.com/r/forum/).
79
 
80
  ---
81
 
82
+ = s2Member is Very Easy to Install =
83
+
84
+ Just like any other normal plugin:
85
 
86
+ - From the WP Admin's [Plugins Add New Screen](https://wordpress.org/support/article/plugins-add-new-screen/).
87
+ - Or via FTP upload the `s2member` folder from the zip to your `/wp-content/plugins/` directory.
88
+ - Activate it from **Plugins** page in your WordPress Admin.
89
+
90
+ Here's a [quick-start video](https://www.youtube.com/watch?v=qlKn-I-0W6U) for a simple basic setup to get you started.
91
 
92
  = See Also (s2Member.com) =
93
 
95
 
96
  = Is s2Member compatible with Multisite Networking? =
97
 
98
+ Yes, s2Member Pro for Unlimited Sites is compatible with Multisite Networking. After you enable Multisite Networking, with s2Member Framework and Pro enabled, navigate to `s2Member → Multisite (Config)` in the Dashboard on your Main Site.
99
 
100
  == Screenshots ==
101
 
109
 
110
  == Frequently Asked Questions ==
111
 
112
+ **NOTICE:** If you are an s2Member Pro customer in need of support, please use [our forum at s2Member.com](http://s2member.com/r/forum/).
113
 
114
  ---
115
 
116
+ = Please Check the Following s2Member Resources =
117
 
118
+ * s2Member FAQs: <http://s2member.com/faqs/>
119
  * Knowledge Base: <http://s2member.com/kb/>
120
  * Video Tutorials: <http://s2member.com/videos/>
121
  * Community: <http://s2member.com/r/forum/>
122
  * Codex: <http://s2member.com/codex/>
123
 
124
+ = Translating s2Member =
125
 
126
  Please see: <http://s2member.com/r/translations/>
127
 
128
  == License ==
129
 
130
+ Copyright: © 2013 [WP Sharks](https://www.wpsharks.com/) (coded in the USA)
131
 
132
  Released under the terms of the [GNU General Public License](http://www.gnu.org/licenses/gpl-2.0.html).
133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  == Upgrade Notice ==
135
 
136
  = v160801 =
139
 
140
  == Changelog ==
141
 
142
+ = v210208 =
143
+
144
+ - (s2Member Pro) **Enhancement**: In the Stripe integration, cancelling a subscription in the last minutes of a period, may cause the invoice for the new period to remain there and still be charged later. Now s2Member Pro attempts to find a draft or open invoice for the subscription being cancelled, and void it. Thanks Alan for reporting it. See [post 8386](https://f.wpsharks.com/t/8098).
145
+
146
+ - (s2Member Pro) **UI Enhancement**: Improved Stripe pro-form error message when trying to create a subscription with a bad card. Thanks everyone that reported it. See [issue #1184](https://github.com/wpsharks/s2member/issues/1184), [post 6043](https://f.wpsharks.com/t/6043), and [post 8386](https://f.wpsharks.com/t/8386).
147
+
148
+ - (s2Member Pro) **Enhancement**: Added the new action hooks `ws_plugin__s2member_pro_before_stripe_notify_event_switch` and `ws_plugin__s2member_pro_after_stripe_notify_event_switch` in the Stripe endpoint to allow customizations, e.g. new event handlers.
149
+
150
+ - (s2Member Pro) **UI Fix**: Removed some leftover mentions of Bitcoin support in Stripe's options.
151
+
152
+ - (s2Member Pro) **UI Fix**: Removed a couple of deprecated shortcode attributes from the documentation for Stripe's pro-form, leftovers from the old integration. Kudos to Debbie for bringing my attention to them. See [post 8053](https://f.wpsharks.com/t/8053).
153
+
154
+ - (s2Member Framework) **UI Fix**: Fixed some broken links and video players in the admin pages.
155
+
156
+ - (s2Member Framework) **Bug Fix**: Resolved a warning given when changing users role in bulk from the WP Admin > Users page.
157
+
158
+ - (s2Member Server Scanner) **Bug Fix**: Updated the [Server Scanner](https://s2member.com/kb-article/server-scanner/) to remove some outdated warnings.
159
+
160
  = v201225 =
161
 
162
  - (s2Member Framework) **Bug Fix**: View Password icon WP's login page was not displaying correctly. Kudos to Beee4life for reporting it. See [issue #1187](https://github.com/wpsharks/s2member/issues/1187)
s2member.php CHANGED
@@ -20,8 +20,8 @@
20
  */
21
  /* -- This section for WordPress parsing. ------------------------------------------------------------------------------
22
 
23
- Version: 201225
24
- Stable tag: 201225
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: 5.7
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'] = '201225'; //version//
81
  if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
82
  define('WS_PLUGIN__S2MEMBER_VERSION', ${__FILE__}['tmp']);
83
  /**
@@ -110,7 +110,7 @@ if(!defined('WS_PLUGIN__S2MEMBER_MIN_WP_VERSION'))
110
  *
111
  * @var string
112
  */
113
- ${__FILE__}['tmp'] = '201225'; //version//
114
  if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
115
  define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', ${__FILE__}['tmp']);
116
  /*
20
  */
21
  /* -- This section for WordPress parsing. ------------------------------------------------------------------------------
22
 
23
+ Version: 210208
24
+ Stable tag: 210208
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: 5.7-alpha
40
  Requires at least: 4.2
41
 
42
  Requires PHP: 5.6.2
77
  *
78
  * @var string
79
  */
80
+ ${__FILE__}['tmp'] = '210208'; //version//
81
  if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
82
  define('WS_PLUGIN__S2MEMBER_VERSION', ${__FILE__}['tmp']);
83
  /**
110
  *
111
  * @var string
112
  */
113
+ ${__FILE__}['tmp'] = '210208'; //version//
114
  if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
115
  define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', ${__FILE__}['tmp']);
116
  /*
src/includes/classes/registration-times.inc.php CHANGED
@@ -50,6 +50,9 @@ if(!class_exists("c_ws_plugin__s2member_registration_times"))
50
  if($user_id && is_object($user = new WP_User ($user_id)) && !empty($user->ID) && ($level = c_ws_plugin__s2member_user_access::user_access_level($user)) > 0)
51
  {
52
  $pr_times = get_user_option("s2member_paid_registration_times", $user_id);
 
 
 
53
  $pr_times["level"] = (empty($pr_times["level"])) ? time() : $pr_times["level"];
54
  $pr_times["level".$level] = (empty($pr_times["level".$level])) ? time() : $pr_times["level".$level];
55
  update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
50
  if($user_id && is_object($user = new WP_User ($user_id)) && !empty($user->ID) && ($level = c_ws_plugin__s2member_user_access::user_access_level($user)) > 0)
51
  {
52
  $pr_times = get_user_option("s2member_paid_registration_times", $user_id);
53
+ if (is_string($pr_times)) {
54
+ $pr_times = array();
55
+ }
56
  $pr_times["level"] = (empty($pr_times["level"])) ? time() : $pr_times["level"];
57
  $pr_times["level".$level] = (empty($pr_times["level".$level])) ? time() : $pr_times["level".$level];
58
  update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
src/includes/menu-pages/down-ops.inc.php CHANGED
@@ -254,7 +254,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
254
 
255
  echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-s3-section">'."\n";
256
  echo '<h3>Amazon S3/CDN Storage &amp; Delivery (optional)</h3>'."\n";
257
- echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/Gr87ZBJQE0I" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
258
  echo '<a href="http://s2member.com/r/amazon-s3/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/src/images/amazon-logo.png" class="ws-menu-page-right" style="width:250px; height:100px; border:0;" alt="." /></a>'."\n";
259
  echo '<p>Please note, all of this is optional. s2Member can be configured here to ONLY use Amazon S3 <em>(i.e., without Amazon CloudFront)</em>. Or, s2Member can be configured to use BOTH Amazon S3 and Amazon CloudFront together. If you want to use Amazon S3 Storage, but you don\'t care about Amazon CloudFront, feel free to leave the entire Amazon CloudFront section empty. The configuration options in the Amazon CloudFront section are ONLY required if you are planning to use both Amazon S3 and Amazon CloudFront together.</p>'."\n";
260
  echo '<p>Amazon Simple Storage Service (<a href="http://s2member.com/r/amazon-s3/" target="_blank" rel="external">Amazon S3</a>). Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers. Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives developers access to the same highly scalable, reliable, secure, fast, inexpensive infrastructure that Amazon uses to run its own global network of web sites. s2Member has been integrated with Amazon S3, so that <em>(if you wish)</em>, instead of using the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory, you can store all of your protected files inside an Amazon S3 Bucket.</p>'."\n";
@@ -370,7 +370,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
370
 
371
  echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-cf-section">'."\n";
372
  echo '<h3>Amazon S3/CloudFront CDN Storage &amp; Delivery (optional)</h3>'."\n";
373
- echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/Gr87ZBJQE0I" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
374
  echo '<a href="http://s2member.com/r/amazon-cloudfront/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/src/images/amazon-logo.png" class="ws-menu-page-right" style="width:250px; height:100px; border:0;" alt="." /></a>'."\n";
375
  echo '<p>Please note, all of this is optional. s2Member can be configured to ONLY use Amazon S3 <em>(i.e., without Amazon CloudFront)</em>. Or, s2Member can be configured to use BOTH Amazon S3 and Amazon CloudFront together. If you don\'t want to use Amazon CloudFront, please leave this entire section empty. The configuration options in this section are ONLY required if you are planning to use both Amazon S3 and Amazon CloudFront together.</p>'."\n";
376
  echo '<p>Amazon Simple Storage Service (<a href="http://s2member.com/r/amazon-s3/" target="_blank" rel="external">Amazon S3</a>) combined with <a href="http://s2member.com/r/amazon-cloudfront/" target="_blank" rel="external">Amazon CloudFront</a>. Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services <em>(i.e., Amazon S3 Storage)</em> to give developers and businesses an easy way to distribute content to end users with low latency, and with high data transfer speeds. Amazon CloudFront delivers your static and streaming content using a global network of edge locations. Requests for your Amazon S3 Bucket Objects <em>(i.e., your protected files)</em> are automatically routed to the nearest edge location, so content is delivered with the best possible performance. s2Member has been integrated with both Amazon S3 and with Amazon CloudFront. So <em>(if you wish)</em>, instead of using the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory, you can store all of your protected files inside an Amazon S3 Bucket and serve them via Amazon CloudFront. But again, please understand, the configuration options in this section are ONLY required if you\'re going to use both Amazon S3 &amp; CloudFront together.</p>'."\n";
@@ -650,7 +650,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
650
 
651
  echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
652
  echo '<h3>JW Player v7 &amp; RTMP Protocol Examples</h3>'."\n";
653
- echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/ZTopRQQAELw" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
654
  echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Forum</a> for tips/tricks if you like.</p>'."\n";
655
  echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
656
  echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
254
 
255
  echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-s3-section">'."\n";
256
  echo '<h3>Amazon S3/CDN Storage &amp; Delivery (optional)</h3>'."\n";
257
+ echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/_x_KkSn803M" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
258
  echo '<a href="http://s2member.com/r/amazon-s3/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/src/images/amazon-logo.png" class="ws-menu-page-right" style="width:250px; height:100px; border:0;" alt="." /></a>'."\n";
259
  echo '<p>Please note, all of this is optional. s2Member can be configured here to ONLY use Amazon S3 <em>(i.e., without Amazon CloudFront)</em>. Or, s2Member can be configured to use BOTH Amazon S3 and Amazon CloudFront together. If you want to use Amazon S3 Storage, but you don\'t care about Amazon CloudFront, feel free to leave the entire Amazon CloudFront section empty. The configuration options in the Amazon CloudFront section are ONLY required if you are planning to use both Amazon S3 and Amazon CloudFront together.</p>'."\n";
260
  echo '<p>Amazon Simple Storage Service (<a href="http://s2member.com/r/amazon-s3/" target="_blank" rel="external">Amazon S3</a>). Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers. Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives developers access to the same highly scalable, reliable, secure, fast, inexpensive infrastructure that Amazon uses to run its own global network of web sites. s2Member has been integrated with Amazon S3, so that <em>(if you wish)</em>, instead of using the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory, you can store all of your protected files inside an Amazon S3 Bucket.</p>'."\n";
370
 
371
  echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-cf-section">'."\n";
372
  echo '<h3>Amazon S3/CloudFront CDN Storage &amp; Delivery (optional)</h3>'."\n";
373
+ echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/_x_KkSn803M" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
374
  echo '<a href="http://s2member.com/r/amazon-cloudfront/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/src/images/amazon-logo.png" class="ws-menu-page-right" style="width:250px; height:100px; border:0;" alt="." /></a>'."\n";
375
  echo '<p>Please note, all of this is optional. s2Member can be configured to ONLY use Amazon S3 <em>(i.e., without Amazon CloudFront)</em>. Or, s2Member can be configured to use BOTH Amazon S3 and Amazon CloudFront together. If you don\'t want to use Amazon CloudFront, please leave this entire section empty. The configuration options in this section are ONLY required if you are planning to use both Amazon S3 and Amazon CloudFront together.</p>'."\n";
376
  echo '<p>Amazon Simple Storage Service (<a href="http://s2member.com/r/amazon-s3/" target="_blank" rel="external">Amazon S3</a>) combined with <a href="http://s2member.com/r/amazon-cloudfront/" target="_blank" rel="external">Amazon CloudFront</a>. Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services <em>(i.e., Amazon S3 Storage)</em> to give developers and businesses an easy way to distribute content to end users with low latency, and with high data transfer speeds. Amazon CloudFront delivers your static and streaming content using a global network of edge locations. Requests for your Amazon S3 Bucket Objects <em>(i.e., your protected files)</em> are automatically routed to the nearest edge location, so content is delivered with the best possible performance. s2Member has been integrated with both Amazon S3 and with Amazon CloudFront. So <em>(if you wish)</em>, instead of using the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory, you can store all of your protected files inside an Amazon S3 Bucket and serve them via Amazon CloudFront. But again, please understand, the configuration options in this section are ONLY required if you\'re going to use both Amazon S3 &amp; CloudFront together.</p>'."\n";
650
 
651
  echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
652
  echo '<h3>JW Player v7 &amp; RTMP Protocol Examples</h3>'."\n";
653
+ //echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/ZTopRQQAELw" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>'."\n";
654
  echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Forum</a> for tips/tricks if you like.</p>'."\n";
655
  echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
656
  echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
src/includes/menu-pages/help.inc.php CHANGED
@@ -109,7 +109,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_help"))
109
  echo '<div class="ws-menu-page-group" title="Upgrading to s2Member Pro<em>!</em>" default-state="open">' . "\n";
110
 
111
  echo '<div class="ws-menu-page-section ws-plugin--s2member-pro">' . "\n";
112
- echo '<p>Among many other features/enhancements, <a href="http://s2member.com/" target="_blank" rel="external">s2Member Pro</a> comes pre-integrated with additional payment gateways that work with s2Member Pro-Forms (a powerful s2Member Pro feature). For instance, Stripe (most popular; also supports Bitcoin), PayPal Payments Pro, and Authorize.Net. Each of these payment gateways allow you to accept most major credit cards on-site; i.e., customers never leave your site! s2Member Pro-Forms also support PayPal Express Checkout (if you integrate with PayPal Pro); for customers who actually prefer to pay with PayPal.</p>' . "\n";
113
  echo '<p><strong>Learn more here:</strong> <a href="http://s2member.com/features/" target="_blank" rel="external">s2Member Pro Features</a></p>'."\n";
114
  do_action("ws_plugin__s2member_during_help_page_during_left_sections_during_pro", get_defined_vars ());
115
  echo '</div>' . "\n";
109
  echo '<div class="ws-menu-page-group" title="Upgrading to s2Member Pro<em>!</em>" default-state="open">' . "\n";
110
 
111
  echo '<div class="ws-menu-page-section ws-plugin--s2member-pro">' . "\n";
112
+ echo '<p>Among many other features/enhancements, <a href="http://s2member.com/" target="_blank" rel="external">s2Member Pro</a> comes pre-integrated with additional payment gateways that work with s2Member Pro-Forms (a powerful s2Member Pro feature). For instance, Stripe (most popular), PayPal Payments Pro, and Authorize.Net. Each of these payment gateways allow you to accept most major credit cards on-site; i.e., customers never leave your site! s2Member Pro-Forms also support PayPal Express Checkout (if you integrate with PayPal Pro); for customers who actually prefer to pay with PayPal.</p>' . "\n";
113
  echo '<p><strong>Learn more here:</strong> <a href="http://s2member.com/features/" target="_blank" rel="external">s2Member Pro Features</a></p>'."\n";
114
  do_action("ws_plugin__s2member_during_help_page_during_left_sections_during_pro", get_defined_vars ());
115
  echo '</div>' . "\n";
src/includes/menu-pages/scripting.inc.php CHANGED
@@ -366,7 +366,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
366
 
367
  echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-capabilities-section">' . "\n";
368
  echo '<h3>Packaging Together Custom Capabilities w/ Membership</h3>' . "\n";
369
- echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/_F91xzrmq-Q" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>' . "\n";
370
  echo '<p>Using one of s2Member\'s Payment Button and/or Form Generators, you can add Custom Capabilities in comma-delimited format. s2Member builds upon existing functionality offered by <a href="http://s2member.com/r/wordpress-rolescaps/" target="_blank" rel="external">WordPress Roles/Capabilities</a>. s2Member supports Free Subscribers <em>(at Level #0)</em>, and several Primary Roles created by the s2Member plugin <em>(i.e., s2Member Levels 1-4, or up to the number of configured Levels)</em>. Each s2Member Level <em>(aka: s2Member Role)</em> provides the Capability <code>current_user_can("access_s2member_level0"), 1, 2, 3, 4</code>, where <code>access_s2member_level[0-4]</code> is the Capability associated with each Role; and Membership Levels provide incremental access <em>(i.e., Level #4 Members can also access content at Levels 0, 1, 2, and 3 beneath them)</em>. In short, these Level-based permissions are the default Capabilities that come with each Membership Level being sold on your site.</p>' . "\n";
371
  echo '<p>Now, if you\'d like to package together some variations of each Membership Level that you\'re selling, you can! All you do is add <strong>Custom Capabilities</strong> whenever you create your Payment Button and/or Form Shortcode (<em>there is a field in the Button &amp; Form Generators where you can enter Custom Capabilities</em>). You can sell Membership Packages that come with Custom Capabilities, and even with custom prices.</p>' . "\n";
372
  echo '<p>Custom Capabilities are an extension to a feature that already exists in WordPress. The <code>current_user_can()</code> function, can be used to test for these additional Capabilities that you allow. Whenever a Member completes the checkout process, after having purchased a Membership from you (one that included Custom Capabilities), s2Member will add those Custom Capabilities to the account for that specific Member.</p>' . "\n";
366
 
367
  echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-capabilities-section">' . "\n";
368
  echo '<h3>Packaging Together Custom Capabilities w/ Membership</h3>' . "\n";
369
+ echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLA2C07377CF60025E" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>' . "\n";
370
  echo '<p>Using one of s2Member\'s Payment Button and/or Form Generators, you can add Custom Capabilities in comma-delimited format. s2Member builds upon existing functionality offered by <a href="http://s2member.com/r/wordpress-rolescaps/" target="_blank" rel="external">WordPress Roles/Capabilities</a>. s2Member supports Free Subscribers <em>(at Level #0)</em>, and several Primary Roles created by the s2Member plugin <em>(i.e., s2Member Levels 1-4, or up to the number of configured Levels)</em>. Each s2Member Level <em>(aka: s2Member Role)</em> provides the Capability <code>current_user_can("access_s2member_level0"), 1, 2, 3, 4</code>, where <code>access_s2member_level[0-4]</code> is the Capability associated with each Role; and Membership Levels provide incremental access <em>(i.e., Level #4 Members can also access content at Levels 0, 1, 2, and 3 beneath them)</em>. In short, these Level-based permissions are the default Capabilities that come with each Membership Level being sold on your site.</p>' . "\n";
371
  echo '<p>Now, if you\'d like to package together some variations of each Membership Level that you\'re selling, you can! All you do is add <strong>Custom Capabilities</strong> whenever you create your Payment Button and/or Form Shortcode (<em>there is a field in the Button &amp; Form Generators where you can enter Custom Capabilities</em>). You can sell Membership Packages that come with Custom Capabilities, and even with custom prices.</p>' . "\n";
372
  echo '<p>Custom Capabilities are an extension to a feature that already exists in WordPress. The <code>current_user_can()</code> function, can be used to test for these additional Capabilities that you allow. Whenever a Member completes the checkout process, after having purchased a Membership from you (one that included Custom Capabilities), s2Member will add those Custom Capabilities to the account for that specific Member.</p>' . "\n";
src/includes/translations/s2member.pot CHANGED
@@ -1,14 +1,14 @@
1
- # Copyright (C) 2020
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: 201225\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
- "POT-Creation-Date: 2020-12-25 21:31: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"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
@@ -20,7 +20,7 @@ msgstr ""
20
  #: pro/src/includes/classes/coupons.inc.php:241
21
  #: pro/src/includes/classes/gateways/authnet/authnet-utilities.inc.php:692
22
  #: pro/src/includes/classes/gateways/paypal/paypal-utilities.inc.php:312
23
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:983
24
  msgctxt "s2member-front percentage-symbol"
25
  msgid "%"
26
  msgstr ""
@@ -1571,48 +1571,48 @@ msgctxt "s2member-front"
1571
  msgid "Error: <strong>prepaid</strong> cards not accepted at this time. Please use a different card and try again."
1572
  msgstr ""
1573
 
1574
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:756
1575
  msgctxt "s2member-front"
1576
  msgid "Error code: <code>%1$s</code>. %2$s."
1577
  msgstr ""
1578
 
1579
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:759
1580
  msgctxt "s2member-front"
1581
  msgid "Invalid parameters to Stripe; please contact the site owner."
1582
  msgstr ""
1583
 
1584
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:762
1585
  msgctxt "s2member-front"
1586
  msgid "Invalid Stripe API keys; please contact the site owner."
1587
  msgstr ""
1588
 
1589
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:765
1590
  msgctxt "s2member-front"
1591
  msgid "Network communication failure with Stripe; please try again."
1592
  msgstr ""
1593
 
1594
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:768
1595
  msgctxt "s2member-front"
1596
  msgid "Stripe API error; please try again."
1597
  msgstr ""
1598
 
1599
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:770
1600
  msgctxt "s2member-front"
1601
  msgid "Stripe error; please try again."
1602
  msgstr ""
1603
 
1604
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1361
1605
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1410
1606
  msgctxt "s2member-front"
1607
  msgid "Action required: 3D Secure authorization."
1608
  msgstr ""
1609
 
1610
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1366
1611
  msgctxt "s2member-front"
1612
  msgid "Please try again with a different card."
1613
  msgstr ""
1614
 
1615
- #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1415
1616
  msgctxt "s2member-front"
1617
  msgid "The payment failed, please try again with a different card."
1618
  msgstr ""
1
+ # Copyright (C) 2021
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: 210208\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
+ "POT-Creation-Date: 2021-02-08 19:31:13+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2021-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
20
  #: pro/src/includes/classes/coupons.inc.php:241
21
  #: pro/src/includes/classes/gateways/authnet/authnet-utilities.inc.php:692
22
  #: pro/src/includes/classes/gateways/paypal/paypal-utilities.inc.php:312
23
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:995
24
  msgctxt "s2member-front percentage-symbol"
25
  msgid "%"
26
  msgstr ""
1571
  msgid "Error: <strong>prepaid</strong> cards not accepted at this time. Please use a different card and try again."
1572
  msgstr ""
1573
 
1574
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:768
1575
  msgctxt "s2member-front"
1576
  msgid "Error code: <code>%1$s</code>. %2$s."
1577
  msgstr ""
1578
 
1579
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:771
1580
  msgctxt "s2member-front"
1581
  msgid "Invalid parameters to Stripe; please contact the site owner."
1582
  msgstr ""
1583
 
1584
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:774
1585
  msgctxt "s2member-front"
1586
  msgid "Invalid Stripe API keys; please contact the site owner."
1587
  msgstr ""
1588
 
1589
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:777
1590
  msgctxt "s2member-front"
1591
  msgid "Network communication failure with Stripe; please try again."
1592
  msgstr ""
1593
 
1594
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:780
1595
  msgctxt "s2member-front"
1596
  msgid "Stripe API error; please try again."
1597
  msgstr ""
1598
 
1599
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:782
1600
  msgctxt "s2member-front"
1601
  msgid "Stripe error; please try again."
1602
  msgstr ""
1603
 
1604
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1373
1605
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1422
1606
  msgctxt "s2member-front"
1607
  msgid "Action required: 3D Secure authorization."
1608
  msgstr ""
1609
 
1610
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1378
1611
  msgctxt "s2member-front"
1612
  msgid "Please try again with a different card."
1613
  msgstr ""
1614
 
1615
+ #: pro/src/includes/classes/gateways/stripe/stripe-utilities.inc.php:1427
1616
  msgctxt "s2member-front"
1617
  msgid "The payment failed, please try again with a different card."
1618
  msgstr ""
src/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit1860e4a353d6520807d498a864305f09::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit8e33ba4249ec1a9d09b4e4fdd20f7055::getLoader();
src/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit1860e4a353d6520807d498a864305f09
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit1860e4a353d6520807d498a864305f09
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit1860e4a353d6520807d498a864305f09', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit1860e4a353d6520807d498a864305f09', '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\ComposerStaticInit1860e4a353d6520807d498a864305f09::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit1860e4a353d6520807d498a864305f09
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInit1860e4a353d6520807d498a864305f09::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequire1860e4a353d6520807d498a864305f09($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequire1860e4a353d6520807d498a864305f09($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit8e33ba4249ec1a9d09b4e4fdd20f7055
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit8e33ba4249ec1a9d09b4e4fdd20f7055', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit8e33ba4249ec1a9d09b4e4fdd20f7055', '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\ComposerStaticInit8e33ba4249ec1a9d09b4e4fdd20f7055::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\ComposerStaticInit8e33ba4249ec1a9d09b4e4fdd20f7055::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequire8e33ba4249ec1a9d09b4e4fdd20f7055($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequire8e33ba4249ec1a9d09b4e4fdd20f7055($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 ComposerStaticInit1860e4a353d6520807d498a864305f09
8
  {
9
  public static $files = array (
10
  '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
@@ -30,7 +30,7 @@ class ComposerStaticInit1860e4a353d6520807d498a864305f09
30
  public static function getInitializer(ClassLoader $loader)
31
  {
32
  return \Closure::bind(function () use ($loader) {
33
- $loader->classMap = ComposerStaticInit1860e4a353d6520807d498a864305f09::$classMap;
34
 
35
  }, null, ClassLoader::class);
36
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit8e33ba4249ec1a9d09b4e4fdd20f7055
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 = ComposerStaticInit8e33ba4249ec1a9d09b4e4fdd20f7055::$classMap;
34
 
35
  }, null, ClassLoader::class);
36
  }