Version Description
= v160801 =
(Maintenance Release) Upgrade immediately.
Download this release
Release Info
Developer | clavaque |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 190822 |
Comparing to | |
See all releases |
Code changes from version 190617 to 190822
- readme.txt +16 -4
- s2member.php +5 -5
- src/includes/classes/paypal-return-in.inc.php +5 -0
- src/includes/classes/register-access.inc.php +4 -1
- src/includes/classes/sc-paypal-button-in.inc.php +2 -1
- src/includes/classes/utils-urls.inc.php +3 -9
- src/includes/menu-pages/gen-ops.inc.php +22 -3
- src/includes/menu-pages/paypal-buttons.inc.php +1 -102
- src/includes/translations/s2member.pot +10 -10
- src/vendor/autoload.php +1 -1
- src/vendor/composer/autoload_real.php +5 -5
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
-
Version:
|
4 |
-
Stable tag:
|
5 |
-
Tested up to: 5.2.
|
6 |
Requires at least: 4.2
|
7 |
Requires PHP: 5.6
|
8 |
-
Tested up to PHP: 7.2.19
|
9 |
License: GNU General Public License v2 or later.
|
10 |
Contributors: WebSharks, JasWSInc, raamdev, clavaque
|
11 |
Author: WP Sharks
|
@@ -137,6 +137,18 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/
|
|
137 |
|
138 |
== Changelog ==
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
= v190617 =
|
141 |
|
142 |
- (s2Member Pro) **Authorize.Net Hash Upgrade:** Authorize.Net [announced](https://support.authorize.net/s/article/MD5-Hash-End-of-Life-Signature-Key-Replacement) the end-of-life for their MD5 Hash in favor of their new SHA512 Signature Key. Support for this has been added to s2Member Pro. The MD5 Hash is not provided by Authorize.Net any more, so the field for it in s2Member has been disabled. Props @krumch for his work. For further details see [forum thread 5514](https://f.wpsharks.com/t/5514).
|
1 |
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
+
Version: 190822
|
4 |
+
Stable tag: 190822
|
5 |
+
Tested up to: 5.2.3
|
6 |
Requires at least: 4.2
|
7 |
Requires PHP: 5.6
|
8 |
+
Tested up to PHP: 7.2.19-0ubuntu0.18.10.1
|
9 |
License: GNU General Public License v2 or later.
|
10 |
Contributors: WebSharks, JasWSInc, raamdev, clavaque
|
11 |
Author: WP Sharks
|
137 |
|
138 |
== Changelog ==
|
139 |
|
140 |
+
= v190822 =
|
141 |
+
|
142 |
+
- (s2Member) **PayPal Integration Update:** PayPal deprecated the subscription modification button. Using the old possible values for this, now gives an error on PayPal's site. This button has been removed from the PayPal Standard integration in s2Member. Props to Tim for reporting it, see [forum thread 5861](https://f.wpsharks.com/t/5861), and [issue #1157](https://github.com/wpsharks/s2member/issues/1157).
|
143 |
+
|
144 |
+
- (s2Member) **Bug Fix:** PayPal would sometimes return the customer without the Custom Value expected by s2Member, incorrectly triggering an error. A small delay has now been added when needed to wait for PayPal to provide the missing value, so that the customer is met with the correct success message on return. Props to Josh Hartman for his help. See [forum thread 5250](https://f.wpsharks.com/t/5250).
|
145 |
+
|
146 |
+
- (s2Member) **Bug Fix:** Google's URL shortening service has been [discontinued](https://developers.googleblog.com/2018/03/transitioning-google-url-shortener.html). The s2Member integration with it was removed in this release. Props to Felix Hartmann for reporting it.
|
147 |
+
|
148 |
+
- (s2Member) **Feature Enhancement:** The popular URL shortening services have been abused in spam emails, and this can cause your site's emails with shortened signup URLs to end up in the spam folder. It's now possible to disable URL shortening when trying to avoid this problem. Props to Felix Hartmann for suggesting it. See [forum thread 5697](https://f.wpsharks.com/t/5697).
|
149 |
+
|
150 |
+
- (s2Member Pro) **New Feature:** It is now possible to use a custom URL shortener other than the defaults in the s2Member Framework. This is particularly useful to use [YOURLS](http://yourls.org/) for your links, making them unique to your site, looking more professional and avoiding the spam filters issue mentioned above. For more info see this [forum post](https://f.wpsharks.com/t/5697/19).
|
151 |
+
|
152 |
= v190617 =
|
153 |
|
154 |
- (s2Member Pro) **Authorize.Net Hash Upgrade:** Authorize.Net [announced](https://support.authorize.net/s/article/MD5-Hash-End-of-Life-Signature-Key-Replacement) the end-of-life for their MD5 Hash in favor of their new SHA512 Signature Key. Support for this has been added to s2Member Pro. The MD5 Hash is not provided by Authorize.Net any more, so the field for it in s2Member has been disabled. Props @krumch for his work. For further details see [forum thread 5514](https://f.wpsharks.com/t/5514).
|
s2member.php
CHANGED
@@ -20,8 +20,8 @@
|
|
20 |
*/
|
21 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
22 |
|
23 |
-
Version:
|
24 |
-
Stable tag:
|
25 |
|
26 |
SSL Compatible: yes
|
27 |
bbPress Compatible: yes
|
@@ -36,7 +36,7 @@ PayPal Pro Compatible: yes w/s2Member Pro
|
|
36 |
Authorize.Net Compatible: yes w/s2Member Pro
|
37 |
ClickBank Compatible: yes w/s2Member Pro
|
38 |
|
39 |
-
Tested up to: 5.2.
|
40 |
Requires at least: 4.2
|
41 |
|
42 |
Requires PHP: 5.6
|
@@ -77,7 +77,7 @@ if(!defined('WPINC')) // MUST have WordPress.
|
|
77 |
*
|
78 |
* @var string
|
79 |
*/
|
80 |
-
${__FILE__}['tmp'] = '
|
81 |
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
|
82 |
define('WS_PLUGIN__S2MEMBER_VERSION', ${__FILE__}['tmp']);
|
83 |
/**
|
@@ -110,7 +110,7 @@ if(!defined('WS_PLUGIN__S2MEMBER_MIN_WP_VERSION'))
|
|
110 |
*
|
111 |
* @var string
|
112 |
*/
|
113 |
-
${__FILE__}['tmp'] = '
|
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: 190822
|
24 |
+
Stable tag: 190822
|
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.2.3
|
40 |
Requires at least: 4.2
|
41 |
|
42 |
Requires PHP: 5.6
|
77 |
*
|
78 |
* @var string
|
79 |
*/
|
80 |
+
${__FILE__}['tmp'] = '190822'; //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'] = '190822'; //version//
|
114 |
if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
|
115 |
define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', ${__FILE__}['tmp']);
|
116 |
/*
|
src/includes/classes/paypal-return-in.inc.php
CHANGED
@@ -103,6 +103,11 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
|
|
103 |
if /* Enqueue an admin notice if the site owner is using the wrong domain variation. */ ($paypal["custom"] && ($paypal["custom"] === "www.".$_SERVER["HTTP_HOST"] || "www.".$paypal["custom"] === $_SERVER["HTTP_HOST"]))
|
104 |
c_ws_plugin__s2member_admin_notices::enqueue_admin_notice("<strong>s2Member:</strong> Post-processing failed on at least one transaction. It appears that you have a PayPal Button configured with a <code>custom=\"\"</code> Shortcode Attribute that does NOT match up with your installation domain name. If your site uses the <code>www.</code> prefix, please include that. If it does not, please exclude the <code>www.</code> prefix. You should have <code>custom=\"".preg_replace ("/\:([0-9]+)$/", "", $_SERVER["HTTP_HOST"])."\"</code>", "*:*", true);
|
105 |
|
|
|
|
|
|
|
|
|
|
|
106 |
$paypal["s2member_log"][] = 'Unable to verify `$_SERVER["HTTP_HOST"]`. Please check the `custom` value in your Button Code. It MUST start with your domain name.';
|
107 |
|
108 |
$paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after displaying an error message).";
|
103 |
if /* Enqueue an admin notice if the site owner is using the wrong domain variation. */ ($paypal["custom"] && ($paypal["custom"] === "www.".$_SERVER["HTTP_HOST"] || "www.".$paypal["custom"] === $_SERVER["HTTP_HOST"]))
|
104 |
c_ws_plugin__s2member_admin_notices::enqueue_admin_notice("<strong>s2Member:</strong> Post-processing failed on at least one transaction. It appears that you have a PayPal Button configured with a <code>custom=\"\"</code> Shortcode Attribute that does NOT match up with your installation domain name. If your site uses the <code>www.</code> prefix, please include that. If it does not, please exclude the <code>www.</code> prefix. You should have <code>custom=\"".preg_replace ("/\:([0-9]+)$/", "", $_SERVER["HTTP_HOST"])."\"</code>", "*:*", true);
|
105 |
|
106 |
+
// Keep trying until we get it. TODO: may need improvement. https://f.wpsharks.com/t/5250/83
|
107 |
+
sleep(3);
|
108 |
+
wp_redirect( home_url( preg_replace( '`(&do_not_cache=[0-9]{5}){2,}`', '&do_not_cache=' . rand(10000,99999), $_SERVER["REQUEST_URI"] . '&do_not_cache=' . rand(10000,99999) ) ) );
|
109 |
+
exit;
|
110 |
+
|
111 |
$paypal["s2member_log"][] = 'Unable to verify `$_SERVER["HTTP_HOST"]`. Please check the `custom` value in your Button Code. It MUST start with your domain name.';
|
112 |
|
113 |
$paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after displaying an error message).";
|
src/includes/classes/register-access.inc.php
CHANGED
@@ -55,7 +55,10 @@ if(!class_exists('c_ws_plugin__s2member_register_access'))
|
|
55 |
$register_link = home_url('/?s2member_register='.urlencode($register)); // Generate long URL/link.
|
56 |
|
57 |
if($shrink && ($shorter_url = c_ws_plugin__s2member_utils_urls::shorten($register_link)))
|
58 |
-
|
|
|
|
|
|
|
59 |
}
|
60 |
return apply_filters('ws_plugin__s2member_register_link_gen', ((!empty($register_link)) ? $register_link : FALSE), get_defined_vars());
|
61 |
}
|
55 |
$register_link = home_url('/?s2member_register='.urlencode($register)); // Generate long URL/link.
|
56 |
|
57 |
if($shrink && ($shorter_url = c_ws_plugin__s2member_utils_urls::shorten($register_link)))
|
58 |
+
{
|
59 |
+
$domain_tag = (strpos($shorter_url, $_SERVER['HTTP_HOST'])) ? '' : '#'.$_SERVER['HTTP_HOST']; // Personalize the link with the site's domain name if it's not already there.
|
60 |
+
$register_link = $shorter_url.$domain_tag;
|
61 |
+
}
|
62 |
}
|
63 |
return apply_filters('ws_plugin__s2member_register_link_gen', ((!empty($register_link)) ? $register_link : FALSE), get_defined_vars());
|
64 |
}
|
src/includes/classes/sc-paypal-button-in.inc.php
CHANGED
@@ -53,7 +53,8 @@ if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button_in"))
|
|
53 |
|
54 |
$attr = shortcode_atts (apply_filters("ws_plugin__s2member_sc_paypal_button_default_attrs", array("ids" => "0", "exp" => "72", "level" => "1", "ccaps" => "", "desc" => "", "ps" => "paypal", "lc" => "", "lang" => "", "cc" => "USD", "dg" => "0", "ns" => "0", "custom" => $_SERVER["HTTP_HOST"], "ta" => "0", "tp" => "0", "tt" => "D", "ra" => "0.01", "rp" => "1", "rt" => "M", "rr" => "1", "rrt" => "", "rra" => "1", "modify" => "0", "cancel" => "0", "sp" => "0", "image" => "default", "output" => "button"), get_defined_vars ()), $attr);
|
55 |
|
56 |
-
|
|
|
57 |
|
58 |
$attr["lc"] = /* Locale code absolutely must be provided in upper-case format. Only after running shortcode_atts(). */ strtoupper ($attr["lc"]);
|
59 |
$attr["tt"] = /* Term lengths absolutely must be provided in upper-case format. Only after running shortcode_atts(). */ strtoupper ($attr["tt"]);
|
53 |
|
54 |
$attr = shortcode_atts (apply_filters("ws_plugin__s2member_sc_paypal_button_default_attrs", array("ids" => "0", "exp" => "72", "level" => "1", "ccaps" => "", "desc" => "", "ps" => "paypal", "lc" => "", "lang" => "", "cc" => "USD", "dg" => "0", "ns" => "0", "custom" => $_SERVER["HTTP_HOST"], "ta" => "0", "tp" => "0", "tt" => "D", "ra" => "0.01", "rp" => "1", "rt" => "M", "rr" => "1", "rrt" => "", "rra" => "1", "modify" => "0", "cancel" => "0", "sp" => "0", "image" => "default", "output" => "button"), get_defined_vars ()), $attr);
|
55 |
|
56 |
+
// "modify" has been deprecated. https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx-websitestandard-htmlvariables/#deprecated-variables
|
57 |
+
$attr["modify"] = "0";
|
58 |
|
59 |
$attr["lc"] = /* Locale code absolutely must be provided in upper-case format. Only after running shortcode_atts(). */ strtoupper ($attr["lc"]);
|
60 |
$attr["tt"] = /* Term lengths absolutely must be provided in upper-case format. Only after running shortcode_atts(). */ strtoupper ($attr["tt"]);
|
src/includes/classes/utils-urls.inc.php
CHANGED
@@ -277,6 +277,9 @@ if(!class_exists('c_ws_plugin__s2member_utils_urls'))
|
|
277 |
&& stripos($custom_url, 'http') === 0)
|
278 |
return ($shorter_url = $custom_url);
|
279 |
|
|
|
|
|
|
|
280 |
else if($api === 'tiny_url' // Using the TinyURL API in this case?
|
281 |
&& ($tiny_url = trim(self::remote('http://tinyurl.com/api-create.php?url='.rawurlencode($url))))
|
282 |
&& stripos($tiny_url, 'http') === 0)
|
@@ -291,15 +294,6 @@ if(!class_exists('c_ws_plugin__s2member_utils_urls'))
|
|
291 |
&& !empty($bitly_response->data->url) && stripos($bitly_url = $bitly_response->data->url, 'http') === 0)
|
292 |
return ($shorter_url = $bitly_url);
|
293 |
|
294 |
-
else if($api === 'goo_gl' // Using the Google API in this case?
|
295 |
-
&& ($goo_gl_endpoint = 'https://www.googleapis.com/urlshortener/v1/url')
|
296 |
-
&& ($goo_gl_endpoint_headers = array('headers' => array('Content-Type' => 'application/json')))
|
297 |
-
&& ($goo_gl_endpoint_key = $default_url_shortener_key) // Must be configured by site owner.
|
298 |
-
&& ($goo_gl_endpoint = add_query_arg('key', urlencode($goo_gl_endpoint_key), $goo_gl_endpoint))
|
299 |
-
&& ($goo_gl_response = json_decode(trim(self::remote($goo_gl_endpoint, json_encode(array('longUrl' => $url)), $goo_gl_endpoint_headers))))
|
300 |
-
&& !empty($goo_gl_response->id) && stripos($goo_gl_url = $goo_gl_response->id, 'http') === 0)
|
301 |
-
return ($shorter_url = $goo_gl_url);
|
302 |
-
|
303 |
else if($try_backups && count($apis) > 1) // Try backups?
|
304 |
{
|
305 |
foreach(array_diff($apis, array($api)) as $_backup_api)
|
277 |
&& stripos($custom_url, 'http') === 0)
|
278 |
return ($shorter_url = $custom_url);
|
279 |
|
280 |
+
else if($api === 'none') // Don't shorten.
|
281 |
+
return $url;
|
282 |
+
|
283 |
else if($api === 'tiny_url' // Using the TinyURL API in this case?
|
284 |
&& ($tiny_url = trim(self::remote('http://tinyurl.com/api-create.php?url='.rawurlencode($url))))
|
285 |
&& stripos($tiny_url, 'http') === 0)
|
294 |
&& !empty($bitly_response->data->url) && stripos($bitly_url = $bitly_response->data->url, 'http') === 0)
|
295 |
return ($shorter_url = $bitly_url);
|
296 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
else if($try_backups && count($apis) > 1) // Try backups?
|
298 |
{
|
299 |
foreach(array_diff($apis, array($api)) as $_backup_api)
|
src/includes/menu-pages/gen-ops.inc.php
CHANGED
@@ -1485,7 +1485,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1485 |
|
1486 |
echo '<th>'."\n";
|
1487 |
echo '<label for="ws-plugin--s2member-default-url-shortener">'."\n";
|
1488 |
-
echo 'URL Shortening Service API (
|
1489 |
echo '</label>'."\n";
|
1490 |
echo '</th>'."\n";
|
1491 |
|
@@ -1494,9 +1494,9 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1494 |
|
1495 |
echo '<td>'."\n";
|
1496 |
echo '<select name="ws_plugin__s2member_default_url_shortener" id="ws-plugin--s2member-default-url-shortener">'."\n";
|
|
|
1497 |
echo '<option value="tiny_url"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "tiny_url") ? ' selected="selected"' : '').'>tinyurl.com (free; no API key)</option>'."\n";
|
1498 |
echo '<option value="bitly"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "bitly") ? ' selected="selected"' : '').'>Bitly (free; API key required)</option>'."\n";
|
1499 |
-
echo '<option value="goo_gl"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "goo_gl") ? ' selected="selected"' : '').'>goo.gl (almost-free; API key required)</option>'."\n";
|
1500 |
echo '</select>'."\n";
|
1501 |
echo '</td>'."\n";
|
1502 |
|
@@ -1505,10 +1505,29 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1505 |
|
1506 |
echo '<td>'."\n";
|
1507 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_default_url_shortener_key" id="ws-plugin--s2member-default-url-shortener-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener_key"]).'" /><br />'."\n";
|
1508 |
-
echo '<em>If you choose Bitly, enter your <a href="http://s2member.com/r/bitly-oauth-access-token/" target="_blank" rel="external">Bitly oAuth Access Token</a
|
1509 |
echo '</td>'."\n";
|
1510 |
|
1511 |
echo '</tr>'."\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1512 |
echo '</tbody>'."\n";
|
1513 |
echo '</table>'."\n";
|
1514 |
echo '</div>'."\n";
|
1485 |
|
1486 |
echo '<th>'."\n";
|
1487 |
echo '<label for="ws-plugin--s2member-default-url-shortener">'."\n";
|
1488 |
+
echo 'URL Shortening Service API (Default):'."\n";
|
1489 |
echo '</label>'."\n";
|
1490 |
echo '</th>'."\n";
|
1491 |
|
1494 |
|
1495 |
echo '<td>'."\n";
|
1496 |
echo '<select name="ws_plugin__s2member_default_url_shortener" id="ws-plugin--s2member-default-url-shortener">'."\n";
|
1497 |
+
echo '<option value="none"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "none") ? ' selected="selected"' : '').'>None (Don\'t shorten the URL)</option>'."\n";
|
1498 |
echo '<option value="tiny_url"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "tiny_url") ? ' selected="selected"' : '').'>tinyurl.com (free; no API key)</option>'."\n";
|
1499 |
echo '<option value="bitly"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener"] === "bitly") ? ' selected="selected"' : '').'>Bitly (free; API key required)</option>'."\n";
|
|
|
1500 |
echo '</select>'."\n";
|
1501 |
echo '</td>'."\n";
|
1502 |
|
1505 |
|
1506 |
echo '<td>'."\n";
|
1507 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_default_url_shortener_key" id="ws-plugin--s2member-default-url-shortener-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_url_shortener_key"]).'" /><br />'."\n";
|
1508 |
+
echo '<em>If you choose Bitly, enter your <a href="http://s2member.com/r/bitly-oauth-access-token/" target="_blank" rel="external">Bitly oAuth Access Token</a>'."\n";
|
1509 |
echo '</td>'."\n";
|
1510 |
|
1511 |
echo '</tr>'."\n";
|
1512 |
+
if (c_ws_plugin__s2member_utils_conds::pro_is_installed()) {
|
1513 |
+
echo '<tr>'."\n";
|
1514 |
+
|
1515 |
+
echo '<th>'."\n";
|
1516 |
+
echo '<label for="ws-plugin--s2member-default-custom-str-url-shortener">'."\n";
|
1517 |
+
echo 'Custom URL Shortening Service API (Optional/Advanced):'."\n";
|
1518 |
+
echo '</label>'."\n";
|
1519 |
+
echo '</th>'."\n";
|
1520 |
+
|
1521 |
+
echo '</tr>'."\n";
|
1522 |
+
echo '<tr>'."\n";
|
1523 |
+
|
1524 |
+
echo '<td>'."\n";
|
1525 |
+
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_default_custom_str_url_shortener" id="ws-plugin--s2member-default-custom-str-url-shortener" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["default_custom_str_url_shortener"]).'" /><br />'."\n";
|
1526 |
+
echo 'Your own custom URL <code>(i.e., GET request)</code>, with <code>%%s2_long_url%%</code> Replacement Code. [<a href="#" onclick="alert(\'Advanced site owners can use a custom URL shortening service they prefer.\\n\\nIn order for this to work, your URL shortening service must support simple GET requests through its API (sometimes referred to as a REST or NVP API).\\n\\nIn addition, your URL shortening service must return a plain-text URL in the response. See example below.\\n\\nYOURLS example GET request with format=simple:\\n\\nhttp://yoursite.com/yourls/yourls-api.php?signature=1234567890&action=shorturl&format=simple&url=%%s2_long_url%%\\n\\ns2Member expects a shortened URL in the response from YOURLS.\\n\\nIf you configure s2Member to use your own custom URL shortening service, s2Member will try your configuration first, and if anything fails, it will fall back on its own pre-integrated backups.\\n\\nWhen configuring your URL for the GET request, s2Member makes two Replacement Codes available:\\n\\n%%s2_long_url%% = The full URL that needs to be shortened (raw URL-encoded).\\n\\n%%s2_long_url_md5%% = An MD5 hash of the full URL (might be useful in some APIs).\'); return false;" tabindex="-1">details</a>]<br />'."\n";
|
1527 |
+
echo '</td>'."\n";
|
1528 |
+
|
1529 |
+
echo '</tr>'."\n";
|
1530 |
+
}
|
1531 |
echo '</tbody>'."\n";
|
1532 |
echo '</table>'."\n";
|
1533 |
echo '</div>'."\n";
|
src/includes/menu-pages/paypal-buttons.inc.php
CHANGED
@@ -136,107 +136,6 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
136 |
}
|
137 |
}
|
138 |
|
139 |
-
if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_modification_buttons", true, get_defined_vars ()))
|
140 |
-
{
|
141 |
-
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_modification_buttons", get_defined_vars ());
|
142 |
-
|
143 |
-
echo '<div class="ws-menu-page-group" title="Subscr. Modification Buttons">' . "\n";
|
144 |
-
|
145 |
-
echo '<div class="ws-menu-page-section ws-plugin--s2member-modification-buttons-section">' . "\n";
|
146 |
-
echo '<h3>Button Code Generator For Subscription Modifications</h3>' . "\n";
|
147 |
-
echo '<p>If you\'d like to give your Members <em>(and/or your Free Subscribers)</em> the ability to modify their billing plan, by switching to a more expensive option, or a less expensive option; generate a new PayPal Modification Button here. Configure the updated Level, pricing, terms, etc. Then, make that new Modification Button available to Members who are logged into their existing account with you. For example, you might want to insert a "Level #2" Upgrade Button into your Login Welcome Page, which would up-sell existing Level #1 Members to a more expensive plan that you offer.</p>' . "\n";
|
148 |
-
echo '<p><em><strong>Important Note:</strong> Modification Buttons should be displayed to existing Users/Members, and they should be logged-in, BEFORE clicking this Button. Otherwise, post-processing of their transaction will fail to recognize the Customer\'s existing account within WordPress. Please display this Button only to Users/Members that are already logged into their account (perhaps in your Login Welcome Page for s2Member), or in another location where you can be absolutely sure that a User/Member is logged in. s2Member\'s Simple Conditionals could also be used to ensure a User/Member is logged in, by wrapping your Shortcode within a Conditional test. For further details, please see: <strong>s2Member → API Scripting → Simple Conditionals</strong>.</em></p>' . "\n";
|
149 |
-
echo '<p><em><strong>Modification Process:</strong> When you send a Member to PayPal using a Subscription Modification Button, PayPal will ask them to login. Once they\'re logged in, instead of being able to signup for a new Membership, PayPal will provide them with the ability to upgrade and/or downgrade their existing Membership with you, by allowing them to switch to the Membership Plan that was specified in the Subscription Modification Button. PayPal handles this nicely, and you\'ll be happy to know that s2Member has been pre-configured to deal with this scenario as well, so that everything remains automated. Their Membership Access Level will either be promoted, or demoted, based on the actions they took at PayPal during the modification process. Once an existing Member completes their Subscription Modification at PayPal, they\'ll be brought back to their Login Welcome Page, instead of to the registration screen.</em></p>' . "\n";
|
150 |
-
echo '<p><em><strong>Also Works For Free Subscribers:</strong> Although a Free Subscriber does not have an existing PayPal Subscription, s2Member is capable of adapting to this scenario gracefully. Just make sure that your existing Free Subscribers <em>(the ones who wish to upgrade)</em> pay for their Membership through a Modification Button generated by s2Member. That will allow them to continue using their existing account with you. In other words, they can keep their existing Username <em>(and anything already associated with that Username)</em>, rather than being forced to re-register after checkout.</em></p>' . "\n";
|
151 |
-
echo '<p><em><strong>Make It More User-Friendly:</strong> You can make the Subscription Modification Process, more user-friendly, by setting up a <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can tell s2Member to use that Page Style whenever you generate your Button Code.\'); return false;">Custom Page Style at PayPal</a>, specifically for Subscription Modification Buttons. Use a custom header image, with a brief explanation to the Customer. Something like, "Log into PayPal", "You can Modify your Subscription!".</em></p>' . "\n";
|
152 |
-
echo '<p><em><strong>Integrating Conditionals:</strong> Since each Modification Button is configured for a specific Level, you may want to create multiple Modification Buttons, one for each combination you intend to make available. s2Member\'s API Conditionals can help you display the proper Button to each Customer, based on the status of their existing account. For further details, see: <strong>s2Member → API Scripting</strong>.</em></p>' . "\n";
|
153 |
-
echo (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '<p><em><strong>Independent Custom Capabilities:</strong> If you just want to sell an existing Member new Custom Capabilities, without affecting their paid Subscription in any way, please see the next Button Generator: <code>Capability (Buy Now) Buttons</code>. Independent Capability Buttons facilitate Buy Now functionality, specifically for Custom Capabilities, without affecting the Customer\'s primary Subscription and Membership Level Access.</em></p>' . "\n" : '';
|
154 |
-
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_modification_buttons", get_defined_vars ());
|
155 |
-
|
156 |
-
echo '<table class="form-table">' . "\n";
|
157 |
-
echo '<tbody>' . "\n";
|
158 |
-
echo '<tr>' . "\n";
|
159 |
-
|
160 |
-
echo '<th class="ws-menu-page-th-side">' . "\n";
|
161 |
-
echo '<label for="ws-plugin--s2member-modification-shortcode">' . "\n";
|
162 |
-
echo 'Button Code<br />For Modifications:<br /><br />' . "\n";
|
163 |
-
echo '<div id="ws-plugin--s2member-modification-button-prev"></div>' . "\n";
|
164 |
-
echo '</label>' . "\n";
|
165 |
-
echo '</th>' . "\n";
|
166 |
-
|
167 |
-
echo '<td>' . "\n";
|
168 |
-
echo '<form onsubmit="return false;" autocomplete="off">' . "\n";
|
169 |
-
|
170 |
-
echo '<p>Modification: <select id="ws-plugin--s2member-modification-level">' . "\n";
|
171 |
-
|
172 |
-
for ($n = 1; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
|
173 |
-
{
|
174 |
-
echo '<optgroup label="Level #' . $n . '">' . "\n";
|
175 |
-
echo '<option value="upgrade:' . $n . '">↑ Upgrade To Level #' . $n . '</option>' . "\n";
|
176 |
-
echo ($n < $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]) ? '<option value="downgrade:' . $n . '">↓ Downgrade To Level #' . $n . '</option>' . "\n" : '';
|
177 |
-
echo '</optgroup>' . "\n";
|
178 |
-
|
179 |
-
echo ($n < $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]) ? '<option disabled="disabled"></option>' . "\n" : '';
|
180 |
-
}
|
181 |
-
|
182 |
-
echo '</select></p>' . "\n";
|
183 |
-
|
184 |
-
echo '<p id="ws-plugin--s2member-modification-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-modification-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-amount" value="0.00" size="4" /></p>' . "\n";
|
185 |
-
echo '<p><span id="ws-plugin--s2member-modification-trial-then">Then, </span>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-modification-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
|
186 |
-
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-modification-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'modification\');" /></p>' . "\n";
|
187 |
-
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
|
188 |
-
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member → API Scripting → Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-modification-ccaps" size="40" /></p>' . "\n";
|
189 |
-
echo '</form>' . "\n";
|
190 |
-
echo '</td>' . "\n";
|
191 |
-
|
192 |
-
echo '</tr>' . "\n";
|
193 |
-
echo '<tr>' . "\n";
|
194 |
-
|
195 |
-
echo '<td colspan="2">' . "\n";
|
196 |
-
echo '<form onsubmit="return false;" autocomplete="off">' . "\n";
|
197 |
-
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_modification_buttons_before_shortcode", get_defined_vars ());
|
198 |
-
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
199 |
-
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-checkout-button-shortcode.php")));
|
200 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ("1")), $ws_plugin__s2member_temp_s);
|
201 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%% /", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level1_label"])), $ws_plugin__s2member_temp_s);
|
202 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
203 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/\/]$/", 'modify="1" /]', $ws_plugin__s2member_temp_s); // Adds modify="1" to the end of the Shortcode.
|
204 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" />' . "\n";
|
205 |
-
|
206 |
-
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
207 |
-
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
208 |
-
echo '<textarea id="ws-plugin--s2member-modification-button" rows="8" wrap="off" onclick="this.select ();">';
|
209 |
-
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php")));
|
210 |
-
$ws_plugin__s2member_temp_s = preg_replace ('/name\="modify" value\="(.*?)"/', 'name="modify" value="1"', $ws_plugin__s2member_temp_s);
|
211 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
212 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
213 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_merchant_id%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_merchant_id"])), $ws_plugin__s2member_temp_s);
|
214 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ("1")), $ws_plugin__s2member_temp_s);
|
215 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%% /", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level1_label"])), $ws_plugin__s2member_temp_s);
|
216 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%cancel_return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_s);
|
217 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%notify_url%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/?s2member_paypal_notify=1"))), $ws_plugin__s2member_temp_s);
|
218 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/?s2member_paypal_return=1"))), $ws_plugin__s2member_temp_s);
|
219 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
220 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%images%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] . "/src/images")), $ws_plugin__s2member_temp_s);
|
221 |
-
$ws_plugin__s2member_temp_s = preg_replace ("/%%wpurl%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ())), $ws_plugin__s2member_temp_s);
|
222 |
-
echo format_to_edit ($ws_plugin__s2member_temp_s);
|
223 |
-
echo '</textarea><br />' . "\n";
|
224 |
-
echo '↑ <em>This <span class="ws-menu-page-hilite">may contain PHP code too</span>; so be careful if you use this.</em>' . "\n";
|
225 |
-
echo '</div>' . "\n";
|
226 |
-
|
227 |
-
echo '</form>' . "\n";
|
228 |
-
echo '</td>' . "\n";
|
229 |
-
|
230 |
-
echo '</tr>' . "\n";
|
231 |
-
echo '</tbody>' . "\n";
|
232 |
-
echo '</table>' . "\n";
|
233 |
-
echo '</div>' . "\n";
|
234 |
-
|
235 |
-
echo '</div>' . "\n";
|
236 |
-
|
237 |
-
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_modification_buttons", get_defined_vars ());
|
238 |
-
}
|
239 |
-
|
240 |
if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_ccap_buttons", (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()), get_defined_vars ()))
|
241 |
{
|
242 |
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_ccap_buttons", get_defined_vars ());
|
@@ -606,7 +505,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
606 |
echo '<li><code>lang=""</code> Optional 5 character Button Language Code <em>(ake: Locale Code—ex: <code>en_US</code>)</em>. This controls the interface language of the PayPal Button itself. If unspecified, the language defaults to English (i.e., <code>en_US</code>; or to the value set by an optional MO translation file; which translates s2Member overall). See <a href="http://s2member.com/r/paypal-locale-codes/" target="_blank" rel="external">this list of possible Locale Codes</a>.</li>' . "\n";
|
607 |
echo '<li><code>lc=""</code> Optional 2 character Country/Locale Code <em>(i.e., Country Code—ex: <code>US</code>)</em>. This controls the interface language used at PayPal during checkout. If unspecified, the language is determined by PayPal when possible, defaulting to <code>US</code> <em>english</em> when not possible. See <a href="http://s2member.com/r/paypal-locale-codes/" target="_blank" rel="external">this list of possible Country Codes</a>. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
608 |
echo '<li><code>level="1"</code> Membership Level [1-4] <em>(or, up to the number of configured Levels)</em>. Only valid for Buttons providing paid Membership Level Access.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' Or, with Independent Custom Capabilities this MUST be set to <code>level="*"</code>, and <code>ccaps=""</code> must NOT be empty <em>(i.e., <code>level="*" ccaps="music,videos"</code>)</em>.') . '</li>' . "\n";
|
609 |
-
echo '<li><code>modify="0"</code> Modification directive. Only valid w/ Membership Level Access. Possible values: <code>0</code> = allows Customers to only create a new Subscription
|
610 |
echo '<li><code>ns="0"</code> The <em>no_shipping</em> directive. Possible values: <code>0</code> = prompt for an address, but do not require one, <code>1</code> = do not prompt for a shipping address, <code>2</code> = prompt for an address, and require one. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
611 |
echo '<li><code>output="button"</code> Output Type. Possible values: <code>button</code> = PayPal Button w/hidden inputs, <code>anchor</code> = PayPal Button ( <a> anchor tag ) URL w/ ?query string, <code>url</code> = raw URL w/ ?query string.</li>' . "\n";
|
612 |
echo '<li><code>ps="paypal"</code> PayPal checkout Page Style. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
136 |
}
|
137 |
}
|
138 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_ccap_buttons", (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()), get_defined_vars ()))
|
140 |
{
|
141 |
do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_ccap_buttons", get_defined_vars ());
|
505 |
echo '<li><code>lang=""</code> Optional 5 character Button Language Code <em>(ake: Locale Code—ex: <code>en_US</code>)</em>. This controls the interface language of the PayPal Button itself. If unspecified, the language defaults to English (i.e., <code>en_US</code>; or to the value set by an optional MO translation file; which translates s2Member overall). See <a href="http://s2member.com/r/paypal-locale-codes/" target="_blank" rel="external">this list of possible Locale Codes</a>.</li>' . "\n";
|
506 |
echo '<li><code>lc=""</code> Optional 2 character Country/Locale Code <em>(i.e., Country Code—ex: <code>US</code>)</em>. This controls the interface language used at PayPal during checkout. If unspecified, the language is determined by PayPal when possible, defaulting to <code>US</code> <em>english</em> when not possible. See <a href="http://s2member.com/r/paypal-locale-codes/" target="_blank" rel="external">this list of possible Country Codes</a>. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
507 |
echo '<li><code>level="1"</code> Membership Level [1-4] <em>(or, up to the number of configured Levels)</em>. Only valid for Buttons providing paid Membership Level Access.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' Or, with Independent Custom Capabilities this MUST be set to <code>level="*"</code>, and <code>ccaps=""</code> must NOT be empty <em>(i.e., <code>level="*" ccaps="music,videos"</code>)</em>.') . '</li>' . "\n";
|
508 |
+
echo '<li><code>modify="0"</code> Modification directive. Only valid w/ Membership Level Access. Possible values: <code>0</code> = allows Customers to only create a new Subscription. Values <code>1</code> and <code>2</code> are <a href="https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx-websitestandard-htmlvariables/#deprecated-variables" target="_blank" rel="external">no longer valid</a>.</li>' . "\n";
|
509 |
echo '<li><code>ns="0"</code> The <em>no_shipping</em> directive. Possible values: <code>0</code> = prompt for an address, but do not require one, <code>1</code> = do not prompt for a shipping address, <code>2</code> = prompt for an address, and require one. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
510 |
echo '<li><code>output="button"</code> Output Type. Possible values: <code>button</code> = PayPal Button w/hidden inputs, <code>anchor</code> = PayPal Button ( <a> anchor tag ) URL w/ ?query string, <code>url</code> = raw URL w/ ?query string.</li>' . "\n";
|
511 |
echo '<li><code>ps="paypal"</code> PayPal checkout Page Style. Not valid when <code>cancel="1"</code>.</li>' . "\n";
|
src/includes/translations/s2member.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version:
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
-
"POT-Creation-Date: 2019-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -1949,10 +1949,10 @@ msgstr ""
|
|
1949 |
#: pro/src/includes/separates/gateways/paypal/paypal.js:597
|
1950 |
#: pro/src/includes/separates/gateways/paypal/paypal.min.js:1
|
1951 |
#: src/includes/classes/sc-paypal-button-e.inc.php:83
|
1952 |
-
#: src/includes/classes/sc-paypal-button-in.inc.php:
|
1953 |
-
#: src/includes/classes/sc-paypal-button-in.inc.php:
|
1954 |
-
#: src/includes/classes/sc-paypal-button-in.inc.php:
|
1955 |
-
#: src/includes/classes/sc-paypal-button-in.inc.php:
|
1956 |
#: src/includes/templates/buttons/paypal-cancellation-button.php:8
|
1957 |
#: src/includes/templates/buttons/paypal-ccaps-checkout-button.php:35
|
1958 |
#: src/includes/templates/buttons/paypal-checkout-button.php:47
|
@@ -4328,8 +4328,8 @@ msgstr ""
|
|
4328 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:186
|
4329 |
#: src/includes/classes/paypal-return-in-web-accept-sp.inc.php:127
|
4330 |
#: src/includes/classes/paypal-return-in.inc.php:96
|
4331 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4332 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4333 |
msgctxt "s2member-front"
|
4334 |
msgid "Back To Home Page"
|
4335 |
msgstr ""
|
@@ -4433,12 +4433,12 @@ msgctxt "s2member-front"
|
|
4433 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
4434 |
msgstr ""
|
4435 |
|
4436 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4437 |
msgctxt "s2member-front"
|
4438 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
4439 |
msgstr ""
|
4440 |
|
4441 |
-
#: src/includes/classes/paypal-return-in.inc.php:
|
4442 |
msgctxt "s2member-front"
|
4443 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
4444 |
msgstr ""
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: 190822\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
+
"POT-Creation-Date: 2019-08-22 20:23:23+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
1949 |
#: pro/src/includes/separates/gateways/paypal/paypal.js:597
|
1950 |
#: pro/src/includes/separates/gateways/paypal/paypal.min.js:1
|
1951 |
#: src/includes/classes/sc-paypal-button-e.inc.php:83
|
1952 |
+
#: src/includes/classes/sc-paypal-button-in.inc.php:78
|
1953 |
+
#: src/includes/classes/sc-paypal-button-in.inc.php:102
|
1954 |
+
#: src/includes/classes/sc-paypal-button-in.inc.php:157
|
1955 |
+
#: src/includes/classes/sc-paypal-button-in.inc.php:213
|
1956 |
#: src/includes/templates/buttons/paypal-cancellation-button.php:8
|
1957 |
#: src/includes/templates/buttons/paypal-ccaps-checkout-button.php:35
|
1958 |
#: src/includes/templates/buttons/paypal-checkout-button.php:47
|
4328 |
#: src/includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:186
|
4329 |
#: src/includes/classes/paypal-return-in-web-accept-sp.inc.php:127
|
4330 |
#: src/includes/classes/paypal-return-in.inc.php:96
|
4331 |
+
#: src/includes/classes/paypal-return-in.inc.php:117
|
4332 |
+
#: src/includes/classes/paypal-return-in.inc.php:143
|
4333 |
msgctxt "s2member-front"
|
4334 |
msgid "Back To Home Page"
|
4335 |
msgstr ""
|
4433 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
4434 |
msgstr ""
|
4435 |
|
4436 |
+
#: src/includes/classes/paypal-return-in.inc.php:116
|
4437 |
msgctxt "s2member-front"
|
4438 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
4439 |
msgstr ""
|
4440 |
|
4441 |
+
#: src/includes/classes/paypal-return-in.inc.php:142
|
4442 |
msgctxt "s2member-front"
|
4443 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
4444 |
msgstr ""
|
src/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitcbcb97228284b209d3dd2469709a945b::getLoader();
|
src/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit3d2e56f8124719cd50c1419a5b5b04e5
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit3d2e56f8124719cd50c1419a5b5b04e5
|
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
-
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
-
function
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInitcbcb97228284b209d3dd2469709a945b
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitcbcb97228284b209d3dd2469709a945b', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitcbcb97228284b209d3dd2469709a945b', 'loadClassLoader'));
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
+
composerRequirecbcb97228284b209d3dd2469709a945b($fileIdentifier, $file);
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
+
function composerRequirecbcb97228284b209d3dd2469709a945b($fileIdentifier, $file)
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|