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

Version Description

= v160303 =

(Maintenance Release) Upgrade immediately.

Download this release

Release Info

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

Code changes from version 160120 to 160303

changelog.md CHANGED
@@ -1,3 +1,21 @@
1
= v160120 =
2
3
- (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
1
+ = v160303 =
2
+
3
+ - (s2Member/s2Member Pro) **Comet Cache Compat.:** This release improves compatibility with Comet Cache (formerly ZenCache), whenever you have it configured to cache logged-in users. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/888). Props @KTS915 for reporting!
4
+
5
+ - (s2Member Pro) **ClickBank IPN v6 Compat.:** Version 6 of the ClickBank IPN system was recently updated in a way that causes it to return `transactionType = CANCEL-TEST-REBILL` in test mode, instead of the previous value, which was: `TEST_CANCEL-REBILL`. s2Member Pro has been updated to understand either/or. See also [this GitHub issue](https://github.com/websharks/s2member/issues/882) for further details.
6
+
7
+ - (s2Member Pro) **Stripe Bug Fix:** This release corrects a bug caused by typos in the source code that were preventing refunds from being processed as expected whenever Stripe was integrated. Props @YearOfBenj for reporting this important issue. Props @patdumond for relaying vital information. See also [this GitHub issue](https://github.com/websharks/s2member/issues/874) if you'd like additional details.
8
+
9
+ - (s2Member Pro) **PayPal Bug Fix:** Under some conditions, the EOT behavior in s2Member Pro (when integrated with PayPal Pro) would immediately terminate access whenever a customer's subscription naturally expires. Recent versions of the Payflow system set the status to `EXPIRED`, and this was handled as an immediate EOT instead of as a delayed EOT that is subject to date calculations to determine the correct date on which a customer should lose access; i.e., based on what they have already paid for. Fixed in this release. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/873) if you'd like additional details.
10
+
11
+ - (s2Member Pro) **One-Time Offer Bug Fix:** This release corrects some inconsistencies in the One-Time Offers system that comes with s2Member Pro. Symptoms included seemingly unpredictable behavior whenever redirections were configured without a specific Membership Level. Props @jacobposey for reporting. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/855) if you'd like additional details.
12
+
13
+ - (s2Member/s2Member Pro) **Bug Fix:** s2Member was not properly respecting `DISALLOW_FILE_MODS` in a specific scenario related to GZIP. Props @renzms @kristineds. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/832) for further details.
14
+
15
+ - (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
16
+
17
+ - (s2Member/s2Member Pro) **PayPal Sandbox:** This release updates the inline documentation under the PayPal Account Settings section of s2Member. We now suggest that instead of enabling PayPal Sandbox Mode (sometimes buggy at best), that site owners run tests with low-dollar amounts against a live PayPal account instead; e.g., $0.01 test transactions in live mode work great also. See [this GitHub issue](https://github.com/websharks/s2member/issues/891) if you'd like additional details. Props @raamdev for mentioning this again.
18
+
19
= v160120 =
20
21
- (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
checksum.txt CHANGED
@@ -1 +1 @@
1
- 11d370c25f342a327ffe729210727337
1
+ b155b61fde7bcce8dfd5e9eb3e002338
includes/classes/files-in.inc.php CHANGED
@@ -997,8 +997,7 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
997
$cfc['expires'] = strtotime('+'.apply_filters('ws_plugin__s2member_amazon_cf_file_expires_time', '24 hours', get_defined_vars()));
998
999
$cf_extn = strtolower(substr($file, strrpos($file, '.') + 1)); // Parses the file extension out so we can scan it in some special scenarios.
1000
- $cf_ip_res = (c_ws_plugin__s2member_utils_conds::is_localhost()) ? FALSE : TRUE; // Do NOT restrict access to a particular IP during `localhost` development. The IP may NOT be the same one Amazon CloudFront sees.
1001
- $cf_stream_extn_resource_exclusions = array_unique((array)apply_filters('ws_plugin__s2member_amazon_cf_file_streaming_extension_resource_exclusions', array('mp3'), get_defined_vars())); // MP3 files should NOT include an extension in their resource reference.
1002
$cf_resource = ($stream) ? ((in_array($cf_extn, $cf_stream_extn_resource_exclusions)) ? substr($file, 0, strrpos($file, '.')) : $file) : 'http'.(($ssl) ? 's' : '').'://'.(($cfc['distro_downloads_cname']) ? $cfc['distro_downloads_cname'] : $cfc['distro_downloads_dname']).'/'.$url_e_file;
1003
$cf_url = ($stream) ? 'rtmp'.(($ssl) ? 'e' : '').'://'.(($cfc['distro_streaming_cname']) ? $cfc['distro_streaming_cname'] : $cfc['distro_streaming_dname']).'/cfx/st/'.$file : 'http'.(($ssl) ? 's' : '').'://'.(($cfc['distro_downloads_cname']) ? $cfc['distro_downloads_cname'] : $cfc['distro_downloads_dname']).'/'.$url_e_file;
1004
$cf_policy = '{"Statement":[{"Resource":"'.c_ws_plugin__s2member_utils_strings::esc_dq($cf_resource).'","Condition":{'.(($cf_ip_res) ? '"IpAddress":{"AWS:SourceIp":"'.c_ws_plugin__s2member_utils_strings::esc_dq($_SERVER['REMOTE_ADDR']).'/32"},' : '').'"DateLessThan":{"AWS:EpochTime":'.(int)$cfc['expires'].'}}}]}';
997
$cfc['expires'] = strtotime('+'.apply_filters('ws_plugin__s2member_amazon_cf_file_expires_time', '24 hours', get_defined_vars()));
998
999
$cf_extn = strtolower(substr($file, strrpos($file, '.') + 1)); // Parses the file extension out so we can scan it in some special scenarios.
1000
+ $cf_ip_res = c_ws_plugin__s2member_utils_conds::is_localhost() || ($stream && !$cfc['rtmp_policy_include_ip']) ? FALSE : TRUE;
1001
$cf_resource = ($stream) ? ((in_array($cf_extn, $cf_stream_extn_resource_exclusions)) ? substr($file, 0, strrpos($file, '.')) : $file) : 'http'.(($ssl) ? 's' : '').'://'.(($cfc['distro_downloads_cname']) ? $cfc['distro_downloads_cname'] : $cfc['distro_downloads_dname']).'/'.$url_e_file;
1002
$cf_url = ($stream) ? 'rtmp'.(($ssl) ? 'e' : '').'://'.(($cfc['distro_streaming_cname']) ? $cfc['distro_streaming_cname'] : $cfc['distro_streaming_dname']).'/cfx/st/'.$file : 'http'.(($ssl) ? 's' : '').'://'.(($cfc['distro_downloads_cname']) ? $cfc['distro_downloads_cname'] : $cfc['distro_downloads_dname']).'/'.$url_e_file;
1003
$cf_policy = '{"Statement":[{"Resource":"'.c_ws_plugin__s2member_utils_strings::esc_dq($cf_resource).'","Condition":{'.(($cf_ip_res) ? '"IpAddress":{"AWS:SourceIp":"'.c_ws_plugin__s2member_utils_strings::esc_dq($_SERVER['REMOTE_ADDR']).'/32"},' : '').'"DateLessThan":{"AWS:EpochTime":'.(int)$cfc['expires'].'}}}]}';
includes/classes/files.inc.php CHANGED
@@ -326,7 +326,7 @@ if(!class_exists('c_ws_plugin__s2member_files'))
326
if(file_exists($htaccess) && is_readable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents)))
327
return preg_match('/'.preg_quote($start_line, '/').'['."\r\n".']+.*?['."\r\n".']+'.preg_quote($end_line, '/').'['."\r\n".']{0,2}/is', $htaccess_contents);
328
329
- return FALSE; // Default return `FALSE`.
330
}
331
332
/**
@@ -339,7 +339,10 @@ if(!class_exists('c_ws_plugin__s2member_files'))
339
*/
340
public static function write_no_gzip_into_root_htaccess()
341
{
342
- if(c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess() /* Must first be able to remove any existing entry. */)
343
{
344
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
345
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
@@ -362,7 +365,7 @@ if(!class_exists('c_ws_plugin__s2member_files'))
362
return file_put_contents($htaccess, $no_gzip);
363
}
364
}
365
- return FALSE; // Default return `FALSE`.
366
}
367
368
/**
@@ -375,6 +378,9 @@ if(!class_exists('c_ws_plugin__s2member_files'))
375
*/
376
public static function remove_no_gzip_from_root_htaccess()
377
{
378
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
379
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
380
$htaccess = ABSPATH.'.htaccess'; // Location of this `.htaccess` file we need to write in.
@@ -385,11 +391,11 @@ if(!class_exists('c_ws_plugin__s2member_files'))
385
386
return (file_put_contents($htaccess, $htaccess_contents) !== FALSE); // Check for `FALSE`, because this could return `0` if the file is now empty.
387
}
388
- else if(!file_exists($htaccess) /* Return `TRUE` here, we're OK. */)
389
{
390
return TRUE;
391
}
392
- return FALSE; // Default return `FALSE`.
393
}
394
}
395
- }
326
if(file_exists($htaccess) && is_readable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents)))
327
return preg_match('/'.preg_quote($start_line, '/').'['."\r\n".']+.*?['."\r\n".']+'.preg_quote($end_line, '/').'['."\r\n".']{0,2}/is', $htaccess_contents);
328
329
+ return FALSE;
330
}
331
332
/**
339
*/
340
public static function write_no_gzip_into_root_htaccess()
341
{
342
+ if(defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS) {
343
+ return FALSE; # No write access on this site.
344
+ }
345
+ if(c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess())
346
{
347
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
348
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
365
return file_put_contents($htaccess, $no_gzip);
366
}
367
}
368
+ return FALSE;
369
}
370
371
/**
378
*/
379
public static function remove_no_gzip_from_root_htaccess()
380
{
381
+ if(defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS) {
382
+ return FALSE; # No write access on this site.
383
+ }
384
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
385
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
386
$htaccess = ABSPATH.'.htaccess'; // Location of this `.htaccess` file we need to write in.
391
392
return (file_put_contents($htaccess, $htaccess_contents) !== FALSE); // Check for `FALSE`, because this could return `0` if the file is now empty.
393
}
394
+ else if(!file_exists($htaccess))
395
{
396
return TRUE;
397
}
398
+ return FALSE;
399
}
400
}
401
+ }
includes/classes/no-cache.inc.php CHANGED
@@ -95,8 +95,8 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
95
if(!$once && (empty($_GET['qcAC']) || !filter_var($_GET['qcAC'], FILTER_VALIDATE_BOOLEAN))
96
&& (
97
$no_cache === TRUE // Forces no-cache constants; if `TRUE` explicitly.
98
- || ($no_cache === 'restricted' && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
99
- || (is_user_logged_in() && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
100
|| c_ws_plugin__s2member_systematics::is_s2_systematic_use_page()
101
)
102
)
@@ -134,6 +134,17 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
134
if(!defined('DONOTCACHEOBJECT'))
135
define('DONOTCACHEOBJECT', TRUE);
136
137
/**
138
* No-cache anything for ZenCache plugin.
139
*
@@ -197,6 +208,7 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
197
$using_selective_behavior = apply_filters('ws_plugin__s2member_no_cache_headers_selective', FALSE, get_defined_vars());
198
199
if(!$once && !headers_sent() // Only once, and only if possible.
200
&& (empty($_GET['zcABC']) || !filter_var($_GET['zcABC'], FILTER_VALIDATE_BOOLEAN))
201
&& (empty($_GET['qcABC']) || !filter_var($_GET['qcABC'], FILTER_VALIDATE_BOOLEAN))
202
&& ($no_cache || !$using_selective_behavior || c_ws_plugin__s2member_no_cache::$headers)
@@ -221,4 +233,4 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
221
return TRUE; // Always return true.
222
}
223
}
224
- }
95
if(!$once && (empty($_GET['qcAC']) || !filter_var($_GET['qcAC'], FILTER_VALIDATE_BOOLEAN))
96
&& (
97
$no_cache === TRUE // Forces no-cache constants; if `TRUE` explicitly.
98
+ || ($no_cache === 'restricted' && (!defined('COMET_CACHE_WHEN_LOGGED_IN') || !COMET_CACHE_WHEN_LOGGED_IN) && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
99
+ || (is_user_logged_in() && (!defined('COMET_CACHE_WHEN_LOGGED_IN') || !COMET_CACHE_WHEN_LOGGED_IN) && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
100
|| c_ws_plugin__s2member_systematics::is_s2_systematic_use_page()
101
)
102
)
134
if(!defined('DONOTCACHEOBJECT'))
135
define('DONOTCACHEOBJECT', TRUE);
136
137
+ /**
138
+ * No-cache anything for Comet Cache plugin.
139
+ *
140
+ * @package s2Member\No_Cache
141
+ * @since 160222
142
+ *
143
+ * @var bool
144
+ */
145
+ if(!defined('COMET_CACHE_ALLOWED'))
146
+ define('COMET_CACHE_ALLOWED', FALSE);
147
+
148
/**
149
* No-cache anything for ZenCache plugin.
150
*
208
$using_selective_behavior = apply_filters('ws_plugin__s2member_no_cache_headers_selective', FALSE, get_defined_vars());
209
210
if(!$once && !headers_sent() // Only once, and only if possible.
211
+ && (empty($_GET['ccABC']) || !filter_var($_GET['ccABC'], FILTER_VALIDATE_BOOLEAN))
212
&& (empty($_GET['zcABC']) || !filter_var($_GET['zcABC'], FILTER_VALIDATE_BOOLEAN))
213
&& (empty($_GET['qcABC']) || !filter_var($_GET['qcABC'], FILTER_VALIDATE_BOOLEAN))
214
&& ($no_cache || !$using_selective_behavior || c_ws_plugin__s2member_no_cache::$headers)
233
return TRUE; // Always return true.
234
}
235
}
236
+ }
includes/classes/sc-eots-in.inc.php CHANGED
@@ -92,9 +92,6 @@ if(!class_exists('c_ws_plugin__s2member_sc_eots_in'))
92
$eot = c_ws_plugin__s2member_utils_users::get_user_eot($user_id, true, $mode);
93
set_transient($transient, $eot, DAY_IN_SECONDS / 2);
94
}
95
- if($eot['time'] && $attr['round_to'])
96
- $eot['time'] = strtotime($attr['round_to'], $eot['time']);
97
-
98
if($eot['time'] && (integer)$attr['offset'])
99
$eot['time'] = $eot['time'] + (integer)$attr['offset'];
100
@@ -119,6 +116,8 @@ if(!class_exists('c_ws_plugin__s2member_sc_eots_in'))
119
$time = new DateTime(date('Y-m-d H:i:s', $eot['time']));
120
if($attr['timezone'] && strtoupper($attr['timezone']) !== 'UTC')
121
$time->setTimezone(new DateTimeZone($attr['timezone']));
122
}
123
if($time && $attr['date_format'] === 'timestamp')
124
$date = (string)$time->getTimestamp();
92
$eot = c_ws_plugin__s2member_utils_users::get_user_eot($user_id, true, $mode);
93
set_transient($transient, $eot, DAY_IN_SECONDS / 2);
94
}
95
if($eot['time'] && (integer)$attr['offset'])
96
$eot['time'] = $eot['time'] + (integer)$attr['offset'];
97
116
$time = new DateTime(date('Y-m-d H:i:s', $eot['time']));
117
if($attr['timezone'] && strtoupper($attr['timezone']) !== 'UTC')
118
$time->setTimezone(new DateTimeZone($attr['timezone']));
119
+ if($attr['round_to'])
120
+ $time->modify($attr['round_to']);
121
}
122
if($time && $attr['date_format'] === 'timestamp')
123
$date = (string)$time->getTimestamp();
includes/menu-pages/down-ops.inc.php CHANGED
@@ -505,6 +505,30 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
505
echo '<tbody>'."\n";
506
echo '<tr>'."\n";
507
508
echo '<td>'."\n";
509
echo '<h3>Completely Reset CloudFront Configuration?</h3>'."\n";
510
echo '<div style="float:right; margin:0 0 0 25px;">'."\n";
@@ -903,4 +927,4 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
903
}
904
}
905
906
- new c_ws_plugin__s2member_menu_page_down_ops();
505
echo '<tbody>'."\n";
506
echo '<tr>'."\n";
507
508
+ echo '<th>'."\n";
509
+ echo '<label for="ws-plugin--s2member-amazon-cf-files-rtmp-policy-include-ip">'."\n";
510
+ echo 'Exclude IPs from digitally signed links in CloudFront RTMP streams?'."\n";
511
+ echo '</label>'."\n";
512
+ echo '</th>'."\n";
513
+
514
+ echo '</tr>'."\n";
515
+ echo '<tr>'."\n";
516
+
517
+ echo '<td>'."\n";
518
+ echo '<input type="radio" name="ws_plugin__s2member_amazon_cf_files_rtmp_policy_include_ip" id="ws-plugin--s2member-amazon-cf-files-rtmp-policy-include-ip-1" value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_rtmp_policy_include_ip"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-rtmp-policy-include-ip-1"><strong>Yes,</strong> include IPs for best security (default behavior).</label><br /><input type="radio" name="ws_plugin__s2member_amazon_cf_files_rtmp_policy_include_ip" id="ws-plugin--s2member-amazon-cf-files-rtmp-policy-include-ip-0" value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_rtmp_policy_include_ip"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-rtmp-policy-include-ip-0"><strong>No</strong>, exclude IPs when streaming to improve compatibility.</label><br />'."\n";
519
+ echo '<p><em>Excluding IP addresses from digitally signed links when streaming over the RTMP protocol will improve compatibility, at the expense of loosening security just a little bit. It\'s a trade-off, and for that reason you should only exclude IPs if you care more about compatibility than you do security. For instance, if your content is not super-senstivite and secret, you might exclude IPs from digitally signed links; putting more focus on preventing issues in various devices. On the other hand, if your streaming audio/video files should be guarded with tight security at all times, you will want to leave this at the default setting (Yes), thereby requiring a matching IP address across both the HTTP and RTMP protocols at all times. Some mobile devices (depending on the mobile carrier) will be unable to pass IP validation though; i.e., some mobile devices assign different IPs for HTTP than they do for RTMP; which can lead to cross-protocol validation failures if you include IP addresses in digitally signed links.</em></p>'."\n";
520
+ echo '</td>'."\n";
521
+
522
+ echo '</tr>'."\n";
523
+ echo '</tbody>'."\n";
524
+ echo '</table>'."\n";
525
+
526
+ echo '<div class="ws-menu-page-hr"></div>'."\n";
527
+
528
+ echo '<table class="form-table" style="margin-top:0;">'."\n";
529
+ echo '<tbody>'."\n";
530
+ echo '<tr>'."\n";
531
+
532
echo '<td>'."\n";
533
echo '<h3>Completely Reset CloudFront Configuration?</h3>'."\n";
534
echo '<div style="float:right; margin:0 0 0 25px;">'."\n";
927
}
928
}
929
930
+ new c_ws_plugin__s2member_menu_page_down_ops();
includes/menu-pages/paypal-ops.inc.php CHANGED
@@ -177,7 +177,8 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
177
178
echo '<td>'."\n";
179
echo '<input type="radio" name="ws_plugin__s2member_paypal_sandbox" id="ws-plugin--s2member-paypal-sandbox-0" value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-paypal-sandbox-0">No</label> &nbsp;&nbsp;&nbsp; <input type="radio" name="ws_plugin__s2member_paypal_sandbox" id="ws-plugin--s2member-paypal-sandbox-1" value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-paypal-sandbox-1">Yes, enable support for Sandbox testing.</label><br />'."\n";
180
- echo '<em>Only enable this if you\'ve provided Sandbox credentials above.<br />This puts the API, IPN, PDT and Form/Button Generators all into Sandbox mode.<br />See: <a href="http://s2member.com/r/paypal-developers/" target="_blank" rel="external">PayPal Developers</a></em>'."\n";
181
echo '</td>'."\n";
182
183
echo '</tr>'."\n";
@@ -1098,4 +1099,4 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
1098
}
1099
}
1100
1101
- new c_ws_plugin__s2member_menu_page_paypal_ops();
177
178
echo '<td>'."\n";
179
echo '<input type="radio" name="ws_plugin__s2member_paypal_sandbox" id="ws-plugin--s2member-paypal-sandbox-0" value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-paypal-sandbox-0">No</label> &nbsp;&nbsp;&nbsp; <input type="radio" name="ws_plugin__s2member_paypal_sandbox" id="ws-plugin--s2member-paypal-sandbox-1" value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-paypal-sandbox-1">Yes, enable support for Sandbox testing.</label><br />'."\n";
180
+ echo '<em>Only enable this if you\'ve provided Sandbox credentials above.<br />This puts the API, IPN, PDT and Form/Button Generators all into Sandbox mode. See: <a href="http://s2member.com/r/paypal-developers/" target="_blank" rel="external">PayPal Developers</a></em><br />'."\n";
181
+ echo '<em><strong>Warning:</strong> The PayPal Sandbox doesn\'t always give you an accurate view of what will happen once you go live, and in fact it is sometimes buggy at best. For this reason, our strong recommendation is that instead of using Sandbox Mode to run tests, that you go live and run tests with low-dollar amounts; i.e., $0.01 transactions are possible with PayPal in live mode, and that is a better way to test your installation of s2Member.</em>'."\n";
182
echo '</td>'."\n";
183
184
echo '</tr>'."\n";
1099
}
1100
}
1101
1102
+ new c_ws_plugin__s2member_menu_page_paypal_ops();
includes/syscon.inc.php CHANGED
@@ -321,6 +321,7 @@ if(!function_exists('ws_plugin__s2member_configure_options_and_their_defaults'))
321
$default_options['amazon_cf_files_distro_streaming_cname'] = '';
322
$default_options['amazon_cf_files_distro_streaming_dname'] = '';
323
$default_options['amazon_cf_files_distros_auto_config_status'] = '';
324
325
$default_options['ruris_case_sensitive'] = '0'; // No by default.
326
321
$default_options['amazon_cf_files_distro_streaming_cname'] = '';
322
$default_options['amazon_cf_files_distro_streaming_dname'] = '';
323
$default_options['amazon_cf_files_distros_auto_config_status'] = '';
324
+ $default_options['amazon_cf_files_rtmp_policy_include_ip'] = '1';
325
326
$default_options['ruris_case_sensitive'] = '0'; // No by default.
327
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: 160120\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
- "POT-Creation-Date: 2016-01-20 00:02:36+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
@@ -401,7 +401,7 @@ msgctxt "s2member-admin"
401
msgid "Unable to auto-configure existing Amazon S3 Bucket ACLs. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key."
402
msgstr ""
403
404
- #: s2member/includes/classes/files-in.inc.php:1042
405
msgctxt "s2member-admin"
406
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
407
msgstr ""
@@ -409,12 +409,12 @@ msgstr ""
409
#. translators: In this translation, `%s` may be filled with an English
410
#. message, which comes from the Amazon CloudFront API call. Feel free to
411
#. exclude `%s` if you like.
412
- #: s2member/includes/classes/files-in.inc.php:1049
413
msgctxt "s2member-admin"
414
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. %s"
415
msgstr ""
416
417
- #: s2member/includes/classes/files-in.inc.php:1061
418
msgctxt "s2member-admin"
419
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
420
msgstr ""
@@ -422,7 +422,7 @@ msgstr ""
422
#. translators: In this translation, `%s` may be filled with an English
423
#. message, which comes from the Amazon CloudFront API call. Feel free to
424
#. exclude `%s` if you like.
425
- #: s2member/includes/classes/files-in.inc.php:1068
426
msgctxt "s2member-admin"
427
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. %s"
428
msgstr ""
@@ -430,8 +430,8 @@ msgstr ""
430
#. translators: In this translation, `%s` may be filled with an English
431
#. message, which comes from the Amazon CloudFront API call. Feel free to
432
#. exclude `%s` if you like.
433
- #: s2member/includes/classes/files-in.inc.php:1084
434
- #: s2member/includes/classes/files-in.inc.php:1272
435
msgctxt "s2member-admin"
436
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. %s"
437
msgstr ""
@@ -439,12 +439,12 @@ msgstr ""
439
#. translators: In this translation, `%s` may be filled with an English
440
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
441
#. if you like.
442
- #: s2member/includes/classes/files-in.inc.php:1125
443
msgctxt "s2member-admin"
444
msgid "Unable to update existing Amazon S3 ACLs. %s"
445
msgstr ""
446
447
- #: s2member/includes/classes/files-in.inc.php:1128
448
msgctxt "s2member-admin"
449
msgid "Unable to update existing Amazon S3 ACLs. Connection failed."
450
msgstr ""
@@ -452,14 +452,14 @@ msgstr ""
452
#. translators: In this translation, `%s` may be filled with an English
453
#. message, which comes from the Amazon CloudFront API call. Feel free to
454
#. exclude `%s` if you like.
455
- #: s2member/includes/classes/files-in.inc.php:1132
456
- #: s2member/includes/classes/files-in.inc.php:1567
457
msgctxt "s2member-admin"
458
msgid "Unable to create Amazon CloudFront Streaming Distro. %s"
459
msgstr ""
460
461
- #: s2member/includes/classes/files-in.inc.php:1135
462
- #: s2member/includes/classes/files-in.inc.php:1570
463
msgctxt "s2member-admin"
464
msgid "Unable to create Amazon CloudFront Streaming Distro. Connection failed."
465
msgstr ""
@@ -467,14 +467,14 @@ msgstr ""
467
#. translators: In this translation, `%s` may be filled with an English
468
#. message, which comes from the Amazon CloudFront API call. Feel free to
469
#. exclude `%s` if you like.
470
- #: s2member/includes/classes/files-in.inc.php:1139
471
- #: s2member/includes/classes/files-in.inc.php:1545
472
msgctxt "s2member-admin"
473
msgid "Unable to create Amazon CloudFront Downloads Distro. %s"
474
msgstr ""
475
476
- #: s2member/includes/classes/files-in.inc.php:1142
477
- #: s2member/includes/classes/files-in.inc.php:1548
478
msgctxt "s2member-admin"
479
msgid "Unable to create Amazon CloudFront Downloads Distro. Connection failed."
480
msgstr ""
@@ -482,19 +482,19 @@ msgstr ""
482
#. translators: In this translation, `%s` may be filled with an English
483
#. message, which comes from the Amazon CloudFront API call. Feel free to
484
#. exclude `%s` if you like.
485
- #: s2member/includes/classes/files-in.inc.php:1146
486
- #: s2member/includes/classes/files-in.inc.php:1318
487
msgctxt "s2member-admin"
488
msgid "Unable to create Amazon CloudFront Origin Access Identity. %s"
489
msgstr ""
490
491
- #: s2member/includes/classes/files-in.inc.php:1149
492
- #: s2member/includes/classes/files-in.inc.php:1321
493
msgctxt "s2member-admin"
494
msgid "Unable to create Amazon CloudFront Origin Access Identity. Connection failed."
495
msgstr ""
496
497
- #: s2member/includes/classes/files-in.inc.php:1152
498
msgctxt "s2member-admin"
499
msgid "Unable to clear existing Amazon CloudFront Origin Access Identity."
500
msgstr ""
@@ -502,19 +502,19 @@ msgstr ""
502
#. translators: In this translation, `%s` may be filled with an English
503
#. message, which comes from the Amazon CloudFront API call. Feel free to
504
#. exclude `%s` if you like.
505
- #: s2member/includes/classes/files-in.inc.php:1156
506
- #: s2member/includes/classes/files-in.inc.php:1227
507
msgctxt "s2member-admin"
508
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. %s"
509
msgstr ""
510
511
- #: s2member/includes/classes/files-in.inc.php:1159
512
- #: s2member/includes/classes/files-in.inc.php:1230
513
msgctxt "s2member-admin"
514
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Connection failed."
515
msgstr ""
516
517
- #: s2member/includes/classes/files-in.inc.php:1162
518
msgctxt "s2member-admin"
519
msgid "Unable to clear existing Amazon CloudFront Streaming Distro."
520
msgstr ""
@@ -522,17 +522,17 @@ msgstr ""
522
#. translators: In this translation, `%s` may be filled with an English
523
#. message, which comes from the Amazon CloudFront API call. Feel free to
524
#. exclude `%s` if you like.
525
- #: s2member/includes/classes/files-in.inc.php:1166
526
msgctxt "s2member-admin"
527
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. %s"
528
msgstr ""
529
530
- #: s2member/includes/classes/files-in.inc.php:1169
531
msgctxt "s2member-admin"
532
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. Connection failed."
533
msgstr ""
534
535
- #: s2member/includes/classes/files-in.inc.php:1172
536
msgctxt "s2member-admin"
537
msgid "Unable to clear existing Amazon CloudFront Downloads Distro."
538
msgstr ""
@@ -540,22 +540,22 @@ msgstr ""
540
#. translators: In this translation, `%s` may be filled with an English
541
#. message, which comes from the Amazon CloudFront API call. Feel free to
542
#. exclude `%s` if you like.
543
- #: s2member/includes/classes/files-in.inc.php:1176
544
msgctxt "s2member-admin"
545
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. %s"
546
msgstr ""
547
548
- #: s2member/includes/classes/files-in.inc.php:1179
549
msgctxt "s2member-admin"
550
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. Connection failed."
551
msgstr ""
552
553
- #: s2member/includes/classes/files-in.inc.php:1182
554
msgctxt "s2member-admin"
555
msgid "Unable to auto-configure Amazon CloudFront Distros. Incomplete Amazon CloudFront configuration options. Missing of one: Amazon CloudFront Private Key-Pair-ID, or Private Key file contents."
556
msgstr ""
557
558
- #: s2member/includes/classes/files-in.inc.php:1185
559
msgctxt "s2member-admin"
560
msgid "Unable to auto-configure Amazon S3/CloudFront Distros. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon S3 configuration before enabling CloudFront."
561
msgstr ""
@@ -563,34 +563,34 @@ msgstr ""
563
#. translators: In this translation, `%s` may be filled with an English
564
#. message, which comes from the Amazon CloudFront API call. Feel free to
565
#. exclude `%s` if you like.
566
- #: s2member/includes/classes/files-in.inc.php:1223
567
msgctxt "s2member-admin"
568
msgid "Existing Amazon CloudFront Origin Access Identity NOT found. %s"
569
msgstr ""
570
571
- #: s2member/includes/classes/files-in.inc.php:1233
572
msgctxt "s2member-admin"
573
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Invalid Access ID."
574
msgstr ""
575
576
- #: s2member/includes/classes/files-in.inc.php:1275
577
msgctxt "s2member-admin"
578
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Connection failed."
579
msgstr ""
580
581
- #: s2member/includes/classes/files-in.inc.php:1278
582
msgctxt "s2member-admin"
583
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
584
msgstr ""
585
586
- #: s2member/includes/classes/files-in.inc.php:1305
587
- #: s2member/includes/classes/files-in.inc.php:1532
588
- #: s2member/includes/classes/files-in.inc.php:1554
589
msgctxt "s2member-admin"
590
msgid "Created by s2Member, for S3 Bucket: %s."
591
msgstr ""
592
593
- #: s2member/includes/classes/files-in.inc.php:1314
594
msgctxt "s2member-admin"
595
msgid "Unable to create/read Amazon CloudFront Origin Access Identity. Unexpected response."
596
msgstr ""
@@ -598,7 +598,7 @@ msgstr ""
598
#. translators: In this translation, `%s` may be filled with an English
599
#. message, which comes from the Amazon CloudFront API call. Feel free to
600
#. exclude `%s` if you like.
601
- #: s2member/includes/classes/files-in.inc.php:1360
602
msgctxt "s2member-admin"
603
msgid "Existing Amazon CloudFront Distro NOT found. %s"
604
msgstr ""
@@ -606,17 +606,17 @@ msgstr ""
606
#. translators: In this translation, `%s` may be filled with an English
607
#. message, which comes from the Amazon CloudFront API call. Feel free to
608
#. exclude `%s` if you like.
609
- #: s2member/includes/classes/files-in.inc.php:1364
610
msgctxt "s2member-admin"
611
msgid "Unable to acquire existing Amazon CloudFront Distro. %s"
612
msgstr ""
613
614
- #: s2member/includes/classes/files-in.inc.php:1367
615
msgctxt "s2member-admin"
616
msgid "Unable to acquire existing Amazon CloudFront Distro. Connection failed."
617
msgstr ""
618
619
- #: s2member/includes/classes/files-in.inc.php:1370
620
msgctxt "s2member-admin"
621
msgid "Unable to acquire existing Amazon CloudFront Distro. Invalid Distro ID and/or Distro type."
622
msgstr ""
@@ -624,24 +624,24 @@ msgstr ""
624
#. translators: In this translation, `%s` may be filled with an English
625
#. message, which comes from the Amazon CloudFront API call. Feel free to
626
#. exclude `%s` if you like.
627
- #: s2member/includes/classes/files-in.inc.php:1414
628
- #: s2member/includes/classes/files-in.inc.php:1489
629
msgctxt "s2member-admin"
630
msgid "Unable to disable existing Amazon CloudFront Distro. %s"
631
msgstr ""
632
633
- #: s2member/includes/classes/files-in.inc.php:1417
634
- #: s2member/includes/classes/files-in.inc.php:1492
635
msgctxt "s2member-admin"
636
msgid "Unable to disable existing Amazon CloudFront Distro. Connection failed."
637
msgstr ""
638
639
- #: s2member/includes/classes/files-in.inc.php:1420
640
msgctxt "s2member-admin"
641
msgid "Existing Amazon CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
642
msgstr ""
643
644
- #: s2member/includes/classes/files-in.inc.php:1426
645
msgctxt "s2member-admin"
646
msgid "Unable to disable existing Amazon CloudFront Distro. Invalid Distro ID, ETag, or XML config."
647
msgstr ""
@@ -649,12 +649,12 @@ msgstr ""
649
#. translators: In this translation, `%s` may be filled with an English
650
#. message, which comes from the Amazon CloudFront API call. Feel free to
651
#. exclude `%s` if you like.
652
- #: s2member/includes/classes/files-in.inc.php:1471
653
msgctxt "s2member-admin"
654
msgid "Unable to delete existing Amazon CloudFront Distro. %s"
655
msgstr ""
656
657
- #: s2member/includes/classes/files-in.inc.php:1474
658
msgctxt "s2member-admin"
659
msgid "Unable to delete existing Amazon CloudFront Distro. Connection failed."
660
msgstr ""
@@ -662,7 +662,7 @@ msgstr ""
662
#. translators: In this translation, `%s` may be filled with an English
663
#. message, which comes from the Amazon CloudFront API call. Feel free to
664
#. exclude `%s` if you like.
665
- #: s2member/includes/classes/files-in.inc.php:1478
666
msgctxt "s2member-admin"
667
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
668
msgstr ""
@@ -670,37 +670,37 @@ msgstr ""
670
#. translators: In this translation, `%s` may be filled with an English
671
#. message, which comes from the Amazon CloudFront API call. Feel free to
672
#. exclude `%s` if you like.
673
- #: s2member/includes/classes/files-in.inc.php:1482
674
msgctxt "s2member-admin"
675
msgid "Unable to check status of existing Amazon CloudFront Distro. %s"
676
msgstr ""
677
678
- #: s2member/includes/classes/files-in.inc.php:1485
679
msgctxt "s2member-admin"
680
msgid "Unable to check status of existing Amazon CloudFront Distro. Connection failed."
681
msgstr ""
682
683
- #: s2member/includes/classes/files-in.inc.php:1495
684
msgctxt "s2member-admin"
685
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
686
msgstr ""
687
688
- #: s2member/includes/classes/files-in.inc.php:1498
689
msgctxt "s2member-admin"
690
msgid "Unable to delete existing Amazon CloudFront Distro. Invalid Distro ID or ETag."
691
msgstr ""
692
693
- #: s2member/includes/classes/files-in.inc.php:1541
694
msgctxt "s2member-admin"
695
msgid "Unable to create/read Amazon CloudFront Downloads Distro. Unexpected response."
696
msgstr ""
697
698
- #: s2member/includes/classes/files-in.inc.php:1563
699
msgctxt "s2member-admin"
700
msgid "Unable to create/read Amazon CloudFront Streaming Distro. Unexpected response."
701
msgstr ""
702
703
- #: s2member/includes/classes/files-in.inc.php:1574
704
msgctxt "s2member-admin"
705
msgid "Unable to create Amazon CloudFront Distro. Invalid Distro type."
706
msgstr ""
2
# This file is distributed under the same license as the package.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: 160303\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
+ "POT-Creation-Date: 2016-03-03 23:56:02+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
401
msgid "Unable to auto-configure existing Amazon S3 Bucket ACLs. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key."
402
msgstr ""
403
404
+ #: s2member/includes/classes/files-in.inc.php:1041
405
msgctxt "s2member-admin"
406
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
407
msgstr ""
409
#. translators: In this translation, `%s` may be filled with an English
410
#. message, which comes from the Amazon CloudFront API call. Feel free to
411
#. exclude `%s` if you like.
412
+ #: s2member/includes/classes/files-in.inc.php:1048
413
msgctxt "s2member-admin"
414
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. %s"
415
msgstr ""
416
417
+ #: s2member/includes/classes/files-in.inc.php:1060
418
msgctxt "s2member-admin"
419
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
420
msgstr ""
422
#. translators: In this translation, `%s` may be filled with an English
423
#. message, which comes from the Amazon CloudFront API call. Feel free to
424
#. exclude `%s` if you like.
425
+ #: s2member/includes/classes/files-in.inc.php:1067
426
msgctxt "s2member-admin"
427
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. %s"
428
msgstr ""
430
#. translators: In this translation, `%s` may be filled with an English
431
#. message, which comes from the Amazon CloudFront API call. Feel free to
432
#. exclude `%s` if you like.
433
+ #: s2member/includes/classes/files-in.inc.php:1083
434
+ #: s2member/includes/classes/files-in.inc.php:1271
435
msgctxt "s2member-admin"
436
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. %s"
437
msgstr ""
439
#. translators: In this translation, `%s` may be filled with an English
440
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
441
#. if you like.
442
+ #: s2member/includes/classes/files-in.inc.php:1124
443
msgctxt "s2member-admin"
444
msgid "Unable to update existing Amazon S3 ACLs. %s"
445
msgstr ""
446
447
+ #: s2member/includes/classes/files-in.inc.php:1127
448
msgctxt "s2member-admin"
449
msgid "Unable to update existing Amazon S3 ACLs. Connection failed."
450
msgstr ""
452
#. translators: In this translation, `%s` may be filled with an English
453
#. message, which comes from the Amazon CloudFront API call. Feel free to
454
#. exclude `%s` if you like.
455
+ #: s2member/includes/classes/files-in.inc.php:1131
456
+ #: s2member/includes/classes/files-in.inc.php:1566
457
msgctxt "s2member-admin"
458
msgid "Unable to create Amazon CloudFront Streaming Distro. %s"
459
msgstr ""
460
461
+ #: s2member/includes/classes/files-in.inc.php:1134
462
+ #: s2member/includes/classes/files-in.inc.php:1569
463
msgctxt "s2member-admin"
464
msgid "Unable to create Amazon CloudFront Streaming Distro. Connection failed."
465
msgstr ""
467
#. translators: In this translation, `%s` may be filled with an English
468
#. message, which comes from the Amazon CloudFront API call. Feel free to
469
#. exclude `%s` if you like.
470
+ #: s2member/includes/classes/files-in.inc.php:1138
471
+ #: s2member/includes/classes/files-in.inc.php:1544
472
msgctxt "s2member-admin"
473
msgid "Unable to create Amazon CloudFront Downloads Distro. %s"
474
msgstr ""
475
476
+ #: s2member/includes/classes/files-in.inc.php:1141
477
+ #: s2member/includes/classes/files-in.inc.php:1547
478
msgctxt "s2member-admin"
479
msgid "Unable to create Amazon CloudFront Downloads Distro. Connection failed."
480
msgstr ""
482
#. translators: In this translation, `%s` may be filled with an English
483
#. message, which comes from the Amazon CloudFront API call. Feel free to
484
#. exclude `%s` if you like.
485
+ #: s2member/includes/classes/files-in.inc.php:1145
486
+ #: s2member/includes/classes/files-in.inc.php:1317
487
msgctxt "s2member-admin"
488
msgid "Unable to create Amazon CloudFront Origin Access Identity. %s"
489
msgstr ""
490
491
+ #: s2member/includes/classes/files-in.inc.php:1148
492
+ #: s2member/includes/classes/files-in.inc.php:1320
493
msgctxt "s2member-admin"
494
msgid "Unable to create Amazon CloudFront Origin Access Identity. Connection failed."
495
msgstr ""
496
497
+ #: s2member/includes/classes/files-in.inc.php:1151
498
msgctxt "s2member-admin"
499
msgid "Unable to clear existing Amazon CloudFront Origin Access Identity."
500
msgstr ""
502
#. translators: In this translation, `%s` may be filled with an English
503
#. message, which comes from the Amazon CloudFront API call. Feel free to
504
#. exclude `%s` if you like.
505
+ #: s2member/includes/classes/files-in.inc.php:1155
506
+ #: s2member/includes/classes/files-in.inc.php:1226
507
msgctxt "s2member-admin"
508
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. %s"
509
msgstr ""
510
511
+ #: s2member/includes/classes/files-in.inc.php:1158
512
+ #: s2member/includes/classes/files-in.inc.php:1229
513
msgctxt "s2member-admin"
514
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Connection failed."
515
msgstr ""
516
517
+ #: s2member/includes/classes/files-in.inc.php:1161
518
msgctxt "s2member-admin"
519
msgid "Unable to clear existing Amazon CloudFront Streaming Distro."
520
msgstr ""
522
#. translators: In this translation, `%s` may be filled with an English
523
#. message, which comes from the Amazon CloudFront API call. Feel free to
524
#. exclude `%s` if you like.
525
+ #: s2member/includes/classes/files-in.inc.php:1165
526
msgctxt "s2member-admin"
527
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. %s"
528
msgstr ""
529
530
+ #: s2member/includes/classes/files-in.inc.php:1168
531
msgctxt "s2member-admin"
532
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. Connection failed."
533
msgstr ""
534
535
+ #: s2member/includes/classes/files-in.inc.php:1171
536
msgctxt "s2member-admin"
537
msgid "Unable to clear existing Amazon CloudFront Downloads Distro."
538
msgstr ""
540
#. translators: In this translation, `%s` may be filled with an English
541
#. message, which comes from the Amazon CloudFront API call. Feel free to
542
#. exclude `%s` if you like.
543
+ #: s2member/includes/classes/files-in.inc.php:1175
544
msgctxt "s2member-admin"
545
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. %s"
546
msgstr ""
547
548
+ #: s2member/includes/classes/files-in.inc.php:1178
549
msgctxt "s2member-admin"
550
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. Connection failed."
551
msgstr ""
552
553
+ #: s2member/includes/classes/files-in.inc.php:1181
554
msgctxt "s2member-admin"
555
msgid "Unable to auto-configure Amazon CloudFront Distros. Incomplete Amazon CloudFront configuration options. Missing of one: Amazon CloudFront Private Key-Pair-ID, or Private Key file contents."
556
msgstr ""
557
558
+ #: s2member/includes/classes/files-in.inc.php:1184
559
msgctxt "s2member-admin"
560
msgid "Unable to auto-configure Amazon S3/CloudFront Distros. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon S3 configuration before enabling CloudFront."
561
msgstr ""
563
#. translators: In this translation, `%s` may be filled with an English
564
#. message, which comes from the Amazon CloudFront API call. Feel free to
565
#. exclude `%s` if you like.
566
+ #: s2member/includes/classes/files-in.inc.php:1222
567
msgctxt "s2member-admin"
568
msgid "Existing Amazon CloudFront Origin Access Identity NOT found. %s"
569
msgstr ""
570
571
+ #: s2member/includes/classes/files-in.inc.php:1232
572
msgctxt "s2member-admin"
573
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Invalid Access ID."
574
msgstr ""
575
576
+ #: s2member/includes/classes/files-in.inc.php:1274
577
msgctxt "s2member-admin"
578
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Connection failed."
579
msgstr ""
580
581
+ #: s2member/includes/classes/files-in.inc.php:1277
582
msgctxt "s2member-admin"
583
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
584
msgstr ""
585
586
+ #: s2member/includes/classes/files-in.inc.php:1304
587
+ #: s2member/includes/classes/files-in.inc.php:1531
588
+ #: s2member/includes/classes/files-in.inc.php:1553
589
msgctxt "s2member-admin"
590
msgid "Created by s2Member, for S3 Bucket: %s."
591
msgstr ""
592
593
+ #: s2member/includes/classes/files-in.inc.php:1313
594
msgctxt "s2member-admin"
595
msgid "Unable to create/read Amazon CloudFront Origin Access Identity. Unexpected response."
596
msgstr ""
598
#. translators: In this translation, `%s` may be filled with an English
599
#. message, which comes from the Amazon CloudFront API call. Feel free to
600
#. exclude `%s` if you like.
601
+ #: s2member/includes/classes/files-in.inc.php:1359
602
msgctxt "s2member-admin"
603
msgid "Existing Amazon CloudFront Distro NOT found. %s"
604
msgstr ""
606
#. translators: In this translation, `%s` may be filled with an English
607
#. message, which comes from the Amazon CloudFront API call. Feel free to
608
#. exclude `%s` if you like.
609
+ #: s2member/includes/classes/files-in.inc.php:1363
610
msgctxt "s2member-admin"
611
msgid "Unable to acquire existing Amazon CloudFront Distro. %s"
612
msgstr ""
613
614
+ #: s2member/includes/classes/files-in.inc.php:1366
615
msgctxt "s2member-admin"
616
msgid "Unable to acquire existing Amazon CloudFront Distro. Connection failed."
617
msgstr ""
618
619
+ #: s2member/includes/classes/files-in.inc.php:1369
620
msgctxt "s2member-admin"
621
msgid "Unable to acquire existing Amazon CloudFront Distro. Invalid Distro ID and/or Distro type."
622
msgstr ""
624
#. translators: In this translation, `%s` may be filled with an English
625
#. message, which comes from the Amazon CloudFront API call. Feel free to
626
#. exclude `%s` if you like.
627
+ #: s2member/includes/classes/files-in.inc.php:1413
628
+ #: s2member/includes/classes/files-in.inc.php:1488
629
msgctxt "s2member-admin"
630
msgid "Unable to disable existing Amazon CloudFront Distro. %s"
631
msgstr ""
632
633
+ #: s2member/includes/classes/files-in.inc.php:1416
634
+ #: s2member/includes/classes/files-in.inc.php:1491
635
msgctxt "s2member-admin"
636
msgid "Unable to disable existing Amazon CloudFront Distro. Connection failed."
637
msgstr ""
638
639
+ #: s2member/includes/classes/files-in.inc.php:1419
640
msgctxt "s2member-admin"
641
msgid "Existing Amazon CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
642
msgstr ""
643
644
+ #: s2member/includes/classes/files-in.inc.php:1425
645
msgctxt "s2member-admin"
646
msgid "Unable to disable existing Amazon CloudFront Distro. Invalid Distro ID, ETag, or XML config."
647
msgstr ""
649
#. translators: In this translation, `%s` may be filled with an English
650
#. message, which comes from the Amazon CloudFront API call. Feel free to
651
#. exclude `%s` if you like.
652
+ #: s2member/includes/classes/files-in.inc.php:1470
653
msgctxt "s2member-admin"
654
msgid "Unable to delete existing Amazon CloudFront Distro. %s"
655
msgstr ""
656
657
+ #: s2member/includes/classes/files-in.inc.php:1473
658
msgctxt "s2member-admin"
659
msgid "Unable to delete existing Amazon CloudFront Distro. Connection failed."
660
msgstr ""
662
#. translators: In this translation, `%s` may be filled with an English
663
#. message, which comes from the Amazon CloudFront API call. Feel free to
664
#. exclude `%s` if you like.
665
+ #: s2member/includes/classes/files-in.inc.php:1477
666
msgctxt "s2member-admin"
667
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
668
msgstr ""
670
#. translators: In this translation, `%s` may be filled with an English
671
#. message, which comes from the Amazon CloudFront API call. Feel free to
672
#. exclude `%s` if you like.
673
+ #: s2member/includes/classes/files-in.inc.php:1481
674
msgctxt "s2member-admin"
675
msgid "Unable to check status of existing Amazon CloudFront Distro. %s"
676
msgstr ""
677
678
+ #: s2member/includes/classes/files-in.inc.php:1484
679
msgctxt "s2member-admin"
680
msgid "Unable to check status of existing Amazon CloudFront Distro. Connection failed."
681
msgstr ""
682
683
+ #: s2member/includes/classes/files-in.inc.php:1494
684
msgctxt "s2member-admin"
685
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
686
msgstr ""
687
688
+ #: s2member/includes/classes/files-in.inc.php:1497
689
msgctxt "s2member-admin"
690
msgid "Unable to delete existing Amazon CloudFront Distro. Invalid Distro ID or ETag."
691
msgstr ""
692
693
+ #: s2member/includes/classes/files-in.inc.php:1540
694
msgctxt "s2member-admin"
695
msgid "Unable to create/read Amazon CloudFront Downloads Distro. Unexpected response."
696
msgstr ""
697
698
+ #: s2member/includes/classes/files-in.inc.php:1562
699
msgctxt "s2member-admin"
700
msgid "Unable to create/read Amazon CloudFront Streaming Distro. Unexpected response."
701
msgstr ""
702
703
+ #: s2member/includes/classes/files-in.inc.php:1573
704
msgctxt "s2member-admin"
705
msgid "Unable to create Amazon CloudFront Distro. Invalid Distro type."
706
msgstr ""
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
- Version: 160120
4
- Stable tag: 160120
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
@@ -17,7 +17,7 @@ Authorize.Net® Compatible: yes w/s2Member® Pro
17
Google® Checkout Compatible: yes w/s2Member® Pro
18
ClickBank® Compatible: yes w/s2Member® Pro
19
20
- Tested up to: 4.4
21
Requires at least: 4.2
22
23
Requires PHP: 5.2+
@@ -169,12 +169,30 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/
169
170
== Upgrade Notice ==
171
172
- = v160120 =
173
174
(Maintenance Release) Upgrade immediately.
175
176
== Changelog ==
177
178
= v160120 =
179
180
- (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
1
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
+ Version: 160303
4
+ Stable tag: 160303
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
17
Google® Checkout Compatible: yes w/s2Member® Pro
18
ClickBank® Compatible: yes w/s2Member® Pro
19
20
+ Tested up to: 4.5-alpha
21
Requires at least: 4.2
22
23
Requires PHP: 5.2+
169
170
== Upgrade Notice ==
171
172
+ = v160303 =
173
174
(Maintenance Release) Upgrade immediately.
175
176
== Changelog ==
177
178
+ = v160303 =
179
+
180
+ - (s2Member/s2Member Pro) **Comet Cache Compat.:** This release improves compatibility with Comet Cache (formerly ZenCache), whenever you have it configured to cache logged-in users. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/888). Props @KTS915 for reporting!
181
+
182
+ - (s2Member Pro) **ClickBank IPN v6 Compat.:** Version 6 of the ClickBank IPN system was recently updated in a way that causes it to return `transactionType = CANCEL-TEST-REBILL` in test mode, instead of the previous value, which was: `TEST_CANCEL-REBILL`. s2Member Pro has been updated to understand either/or. See also [this GitHub issue](https://github.com/websharks/s2member/issues/882) for further details.
183
+
184
+ - (s2Member Pro) **Stripe Bug Fix:** This release corrects a bug caused by typos in the source code that were preventing refunds from being processed as expected whenever Stripe was integrated. Props @YearOfBenj for reporting this important issue. Props @patdumond for relaying vital information. See also [this GitHub issue](https://github.com/websharks/s2member/issues/874) if you'd like additional details.
185
+
186
+ - (s2Member Pro) **PayPal Bug Fix:** Under some conditions, the EOT behavior in s2Member Pro (when integrated with PayPal Pro) would immediately terminate access whenever a customer's subscription naturally expires. Recent versions of the Payflow system set the status to `EXPIRED`, and this was handled as an immediate EOT instead of as a delayed EOT that is subject to date calculations to determine the correct date on which a customer should lose access; i.e., based on what they have already paid for. Fixed in this release. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/873) if you'd like additional details.
187
+
188
+ - (s2Member Pro) **One-Time Offer Bug Fix:** This release corrects some inconsistencies in the One-Time Offers system that comes with s2Member Pro. Symptoms included seemingly unpredictable behavior whenever redirections were configured without a specific Membership Level. Props @jacobposey for reporting. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/855) if you'd like additional details.
189
+
190
+ - (s2Member/s2Member Pro) **Bug Fix:** s2Member was not properly respecting `DISALLOW_FILE_MODS` in a specific scenario related to GZIP. Props @renzms @kristineds. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/832) for further details.
191
+
192
+ - (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
193
+
194
+ - (s2Member/s2Member Pro) **PayPal Sandbox:** This release updates the inline documentation under the PayPal Account Settings section of s2Member. We now suggest that instead of enabling PayPal Sandbox Mode (sometimes buggy at best), that site owners run tests with low-dollar amounts against a live PayPal account instead; e.g., $0.01 test transactions in live mode work great also. See [this GitHub issue](https://github.com/websharks/s2member/issues/891) if you'd like additional details. Props @raamdev for mentioning this again.
195
+
196
= v160120 =
197
198
- (s2Member,s2Member Pro) **Bug Fix:** Resolved a minor glitch in the **WordPress Dashboard → Settings → General** panel, where s2Member's notice regarding Open Registration was inadvertently forcing the entire page into italics. Props @renzms @kristineds @raamdev ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/831) if you'd like additional details.
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
*/
20
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
21
22
- Version: 160120
23
- Stable tag: 160120
24
25
SSL Compatible: yes
26
bbPress Compatible: yes
@@ -35,7 +35,7 @@ Authorize.Net Compatible: yes w/s2Member Pro
35
Google Wallet Compatible: yes w/s2Member Pro
36
ClickBank Compatible: yes w/s2Member Pro
37
38
- Tested up to: 4.4
39
Requires at least: 4.2
40
41
Requires PHP: 5.2+
@@ -81,7 +81,7 @@ if(!defined('WPINC')) // MUST have WordPress.
81
* @var string
82
*/
83
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
84
- define('WS_PLUGIN__S2MEMBER_VERSION', '160120' /* !#distro-version#! */);
85
/**
86
* Minimum PHP version required to run s2Member.
87
*
@@ -111,7 +111,7 @@ if(!defined('WS_PLUGIN__S2MEMBER_MIN_WP_VERSION'))
111
* @var string
112
*/
113
if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
114
- define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '160120' /* !#distro-version#! */);
115
/*
116
Several compatibility checks.
117
If all pass, load the s2Member plugin.
19
*/
20
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
21
22
+ Version: 160303
23
+ Stable tag: 160303
24
25
SSL Compatible: yes
26
bbPress Compatible: yes
35
Google Wallet Compatible: yes w/s2Member Pro
36
ClickBank Compatible: yes w/s2Member Pro
37
38
+ Tested up to: 4.5-alpha
39
Requires at least: 4.2
40
41
Requires PHP: 5.2+
81
* @var string
82
*/
83
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
84
+ define('WS_PLUGIN__S2MEMBER_VERSION', '160303' /* !#distro-version#! */);
85
/**
86
* Minimum PHP version required to run s2Member.
87
*
111
* @var string
112
*/
113
if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
114
+ define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '160303' /* !#distro-version#! */);
115
/*
116
Several compatibility checks.
117
If all pass, load the s2Member plugin.