Version Description
- New feature. Now you can use
s2member_force_ssl -> yesas a Custom Field with any Post/Page. This feature comes in handy if you need to force SSL on pages hosting PayPal Pro Forms, implemented by the s2Member Pro Module. You can sets2member_force_ssl -> yesto force https://. If your server runs SSL over a special port number, or your server requires the port number to actually be in the URL ( i.e. HOST:port ), you can sets2member_force_ssl -> 443; or to whatever port you need. In addition to forcing https://, s2Member is also capable of forcing SSL compatibility in your theme, and in other quirky plugins. If your theme is NOT 100% compatible with SSL, s2Member can sometimes correct flaws automatically, but not always. For maximum compatibility with SSL, we recommend a premium WordPress theme from PriMoThemes.com, or from another trusted source that states "SSL Compatible". - Bug fix. References to the Constant
WP_CONTENT_URLhave been removed, in favor ofcontent_url(), which is SSL-friendly. - Tweak. References to
$_SERVER["HTTPS"]have been abandoned, in favor ofis_ssl(), which is native to WordPress. - Windows. Although full testing on Windows IIS is not completed, one bug report indicated a problem with
["dir_url"]. This has been corrected in v3.1.1, usingDIRECTORY_SEPARATOR. - Bug fix. PHP 5.3.x reference value on option filters. The
apply_filters()call was changed toapply_filters_ref_array(). This has been corrected in v3.1.1.
Download this release
Release Info
| Developer | PriMoThemes |
| Plugin | |
| Version | 3.1.1 |
| Comparing to | |
| See all releases | |
Code changes from version 3.1 to 3.1.1
- includes/functions/force-ssl.inc.php +10 -5
- includes/functions/is-systematic.inc.php +2 -2
- includes/functions/nocache.inc.php +1 -1
- includes/syscon.inc.php +2 -2
- readme.txt +10 -3
- s2member.php +7 -7
includes/functions/force-ssl.inc.php
CHANGED
|
@@ -28,12 +28,16 @@ if (!function_exists ("ws_plugin__s2member_check_force_ssl"))
|
|
| 28 |
/**/
|
| 29 |
do_action ("ws_plugin__s2member_before_check_force_ssl", get_defined_vars ());
|
| 30 |
/**/
|
| 31 |
-
if (is_singular () && get_post_meta ($post->ID, "s2member_force_ssl", true))
|
| 32 |
{
|
| 33 |
-
if (!
|
| 34 |
{
|
| 35 |
-
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
}
|
| 38 |
else /* Otherwise, we buffer the output, and switch everything to https. */
|
| 39 |
{
|
|
@@ -47,7 +51,8 @@ if (!function_exists ("ws_plugin__s2member_check_force_ssl"))
|
|
| 47 |
/**/
|
| 48 |
$tags = apply_filters ("_ws_plugin__s2member_force_ssl_buffer_tags", $tags, get_defined_vars ());
|
| 49 |
/**/
|
| 50 |
-
$buffer = preg_replace_callback ("/\<(" . $tags . ")[^\>]
|
|
|
|
| 51 |
/**/
|
| 52 |
ini_set ("pcre.backtrack_limit", $o_pcre);
|
| 53 |
/**/
|
| 28 |
/**/
|
| 29 |
do_action ("ws_plugin__s2member_before_check_force_ssl", get_defined_vars ());
|
| 30 |
/**/
|
| 31 |
+
if (is_singular () && ($force_ssl = get_post_meta ($post->ID, "s2member_force_ssl", true)))
|
| 32 |
{
|
| 33 |
+
if (!is_ssl ()) /* SSL must be enabled here. Redirect to https:// scheme. */
|
| 34 |
{
|
| 35 |
+
$ssl_host = preg_replace ("/\:[0-9]+$/", "", $_SERVER["HTTP_HOST"]);
|
| 36 |
+
$ssl_port = (is_numeric ($force_ssl) && $force_ssl > 1) ? $force_ssl : 0;
|
| 37 |
+
$ssl_host_port = $ssl_host . (($ssl_port) ? ":" . $ssl_port : "");
|
| 38 |
+
/**/
|
| 39 |
+
wp_redirect ("https://" . $ssl_host_port . $_SERVER["REQUEST_URI"]);
|
| 40 |
+
exit (); /* ^ So let's redirect to the SSL enabled version. */
|
| 41 |
}
|
| 42 |
else /* Otherwise, we buffer the output, and switch everything to https. */
|
| 43 |
{
|
| 51 |
/**/
|
| 52 |
$tags = apply_filters ("_ws_plugin__s2member_force_ssl_buffer_tags", $tags, get_defined_vars ());
|
| 53 |
/**/
|
| 54 |
+
$buffer = preg_replace_callback ("/\<(" . $tags . ")[^\>]+\>/i", "_ws_plugin__s2member_force_ssl_buffer_callback", $buffer);
|
| 55 |
+
$buffer = preg_replace_callback ("/\<style[^\>]*\>(.+?)\<\/style\>/is", "_ws_plugin__s2member_force_ssl_buffer_callback", $buffer);
|
| 56 |
/**/
|
| 57 |
ini_set ("pcre.backtrack_limit", $o_pcre);
|
| 58 |
/**/
|
includes/functions/is-systematic.inc.php
CHANGED
|
@@ -12,7 +12,7 @@ If not, see: <http://www.gnu.org/licenses/>.
|
|
| 12 |
Direct access denial.
|
| 13 |
*/
|
| 14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
| 15 |
-
exit
|
| 16 |
/*
|
| 17 |
Function that determines whether we are on a systematic use page.
|
| 18 |
*/
|
|
@@ -62,7 +62,7 @@ if (!function_exists ("ws_plugin__s2member_is_systematic_use_page"))
|
|
| 62 |
{
|
| 63 |
return ($is_systematic = apply_filters ("ws_plugin__s2member_is_systematic_use_page", true, get_defined_vars ()));
|
| 64 |
}
|
| 65 |
-
else if (preg_match ("/^s2member/", $_SERVER["QUERY_STRING"]) && ($_SERVER["REQUEST_URI"] === "/" ||
|
| 66 |
{
|
| 67 |
return ($is_systematic = apply_filters ("ws_plugin__s2member_is_systematic_use_page", true, get_defined_vars ())); /* Only true when the request starts with /?s2member from the root URL of the domain, or from the install. */
|
| 68 |
}
|
| 12 |
Direct access denial.
|
| 13 |
*/
|
| 14 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
| 15 |
+
exit("Do not access this file directly.");
|
| 16 |
/*
|
| 17 |
Function that determines whether we are on a systematic use page.
|
| 18 |
*/
|
| 62 |
{
|
| 63 |
return ($is_systematic = apply_filters ("ws_plugin__s2member_is_systematic_use_page", true, get_defined_vars ()));
|
| 64 |
}
|
| 65 |
+
else if (preg_match ("/^s2member/", $_SERVER["QUERY_STRING"]) && ($_SERVER["REQUEST_URI"] === "/" || rtrim (strtolower ("http://" . $_SERVER["HTTP_HOST"]) . $_SERVER["REQUEST_URI"], "/") === rtrim (strtolower (get_bloginfo ("url")), "/")))
|
| 66 |
{
|
| 67 |
return ($is_systematic = apply_filters ("ws_plugin__s2member_is_systematic_use_page", true, get_defined_vars ())); /* Only true when the request starts with /?s2member from the root URL of the domain, or from the install. */
|
| 68 |
}
|
includes/functions/nocache.inc.php
CHANGED
|
@@ -64,7 +64,7 @@ if (!function_exists ("ws_plugin__s2member_nocache_constants"))
|
|
| 64 |
do_action ("ws_plugin__s2member_before_nocache_constants", get_defined_vars ());
|
| 65 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
| 66 |
/**/
|
| 67 |
-
if (!$_GET["qcAC"] && ($nocache || is_user_logged_in () || (preg_match ("/^s2member/", $_SERVER["QUERY_STRING"]) && ($_SERVER["REQUEST_URI"] === "/" ||
|
| 68 |
{
|
| 69 |
define ("QUICK_CACHE_ALLOWED", false) . define ("DONOTCACHEPAGE", true);
|
| 70 |
/**/
|
| 64 |
do_action ("ws_plugin__s2member_before_nocache_constants", get_defined_vars ());
|
| 65 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
| 66 |
/**/
|
| 67 |
+
if (!$_GET["qcAC"] && ($nocache || is_user_logged_in () || (preg_match ("/^s2member/", $_SERVER["QUERY_STRING"]) && ($_SERVER["REQUEST_URI"] === "/" || rtrim (strtolower ("http://" . $_SERVER["HTTP_HOST"]) . $_SERVER["REQUEST_URI"], "/") === rtrim (strtolower (get_bloginfo ("url")), "/")))))
|
| 68 |
{
|
| 69 |
define ("QUICK_CACHE_ALLOWED", false) . define ("DONOTCACHEPAGE", true);
|
| 70 |
/**/
|
includes/syscon.inc.php
CHANGED
|
@@ -25,7 +25,7 @@ if (($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["is_multisite"] = ((function_exist
|
|
| 25 |
/*
|
| 26 |
Determine the full url to the directory this plugin resides in.
|
| 27 |
*/
|
| 28 |
-
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] =
|
| 29 |
/*
|
| 30 |
Check if the plugin has been configured *should be set after the first config via options panel*.
|
| 31 |
*/
|
|
@@ -405,7 +405,7 @@ function ws_plugin__s2member_configure_options_and_their_defaults ($options = FA
|
|
| 405 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"] = array_slice ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], 0, 10);
|
| 406 |
}
|
| 407 |
/**/
|
| 408 |
-
return
|
| 409 |
}
|
| 410 |
/**/
|
| 411 |
call_user_func ("ws_plugin__s2member_configure_options_and_their_defaults");
|
| 25 |
/*
|
| 26 |
Determine the full url to the directory this plugin resides in.
|
| 27 |
*/
|
| 28 |
+
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] = content_url () . preg_replace ("/^(.*?)(\/" . preg_quote (basename (WP_CONTENT_DIR), "/") . ")/", "", preg_replace ("/" . preg_quote (DIRECTORY_SEPARATOR, "/") . "/", "/", dirname (dirname (__FILE__))));
|
| 29 |
/*
|
| 30 |
Check if the plugin has been configured *should be set after the first config via options panel*.
|
| 31 |
*/
|
| 405 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"] = array_slice ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], 0, 10);
|
| 406 |
}
|
| 407 |
/**/
|
| 408 |
+
return apply_filters_ref_array ("ws_plugin__s2member_options", array (&$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]));
|
| 409 |
}
|
| 410 |
/**/
|
| 411 |
call_user_func ("ws_plugin__s2member_configure_options_and_their_defaults");
|
readme.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
| 2 |
|
| 3 |
-
Version: 3.1
|
| 4 |
-
Stable tag: 3.1
|
| 5 |
Framework: WS-P-3.0
|
| 6 |
|
| 7 |
SSL Compatible: yes
|
|
@@ -145,7 +145,7 @@ Not yet. This is coming soon though. It will be included in a future release of
|
|
| 145 |
|
| 146 |
== Upgrade Notice ==
|
| 147 |
|
| 148 |
-
= 3.1 =
|
| 149 |
* Upgrade recommended. Fixes a redirection loop on some configurations. Also adds several new features; listed below.
|
| 150 |
|
| 151 |
= 3.0.6 =
|
|
@@ -156,6 +156,13 @@ Not yet. This is coming soon though. It will be included in a future release of
|
|
| 156 |
|
| 157 |
== Changelog ==
|
| 158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
= 3.1 =
|
| 160 |
* bbPress® compatiblity. There is a new internal Bridge that can be installed into bbPress® by s2Member. This new bbPress® (Bridge/plugin) makes it possible for s2Member Levels [0-4] to be converted into bbPress® "Members" on-the-fly, and it will guard your forums against unauthorized access; including forum registrations, which are redirected to your Membership Options Page for s2Member. To install this Bridge Integration, check your WordPress® Dashboard, under: `s2Member -> Bridge Integrations`.
|
| 161 |
* New plugin that is HIGHLY recommended for s2Member. Get [WP Show IDs](http://www.primothemes.com/post/wp-show-ids-plugin/). Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies.
|
| 1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
| 2 |
|
| 3 |
+
Version: 3.1.1
|
| 4 |
+
Stable tag: 3.1.1
|
| 5 |
Framework: WS-P-3.0
|
| 6 |
|
| 7 |
SSL Compatible: yes
|
| 145 |
|
| 146 |
== Upgrade Notice ==
|
| 147 |
|
| 148 |
+
= 3.1+ =
|
| 149 |
* Upgrade recommended. Fixes a redirection loop on some configurations. Also adds several new features; listed below.
|
| 150 |
|
| 151 |
= 3.0.6 =
|
| 156 |
|
| 157 |
== Changelog ==
|
| 158 |
|
| 159 |
+
= 3.1.1 =
|
| 160 |
+
* New feature. Now you can use `s2member_force_ssl -> yes` as a Custom Field with any Post/Page. This feature comes in handy if you need to force SSL on pages hosting PayPal® Pro Forms, implemented by the s2Member Pro Module. You can set `s2member_force_ssl -> yes` to force *https://*. If your server runs SSL over a special port number, or your server requires the port number to actually be in the URL ( i.e. HOST:port ), you can set `s2member_force_ssl -> 443`; or to whatever port you need. In addition to forcing *https://*, s2Member is also capable of forcing SSL compatibility in your theme, and in other quirky plugins. If your theme is NOT 100% compatible with SSL, s2Member can sometimes correct flaws automatically, but not always. For maximum compatibility with SSL, we recommend a premium WordPress® theme from PriMoThemes.com, or from another trusted source that states "SSL Compatible".
|
| 161 |
+
* Bug fix. References to the Constant `WP_CONTENT_URL` have been removed, in favor of `content_url()`, which is SSL-friendly.
|
| 162 |
+
* Tweak. References to `$_SERVER["HTTPS"]` have been abandoned, in favor of `is_ssl()`, which is native to WordPress®.
|
| 163 |
+
* Windows®. Although full testing on Windows® IIS is not completed, one bug report indicated a problem with `["dir_url"]`. This has been corrected in v3.1.1, using `DIRECTORY_SEPARATOR`.
|
| 164 |
+
* Bug fix. PHP 5.3.x reference value on option filters. The `apply_filters()` call was changed to `apply_filters_ref_array()`. This has been corrected in v3.1.1.
|
| 165 |
+
|
| 166 |
= 3.1 =
|
| 167 |
* bbPress® compatiblity. There is a new internal Bridge that can be installed into bbPress® by s2Member. This new bbPress® (Bridge/plugin) makes it possible for s2Member Levels [0-4] to be converted into bbPress® "Members" on-the-fly, and it will guard your forums against unauthorized access; including forum registrations, which are redirected to your Membership Options Page for s2Member. To install this Bridge Integration, check your WordPress® Dashboard, under: `s2Member -> Bridge Integrations`.
|
| 168 |
* New plugin that is HIGHLY recommended for s2Member. Get [WP Show IDs](http://www.primothemes.com/post/wp-show-ids-plugin/). Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies.
|
s2member.php
CHANGED
|
@@ -9,8 +9,8 @@ along with this software. In the main directory, see: /licensing/
|
|
| 9 |
If not, see: <http://www.gnu.org/licenses/>.
|
| 10 |
*/
|
| 11 |
/*
|
| 12 |
-
Version: 3.1
|
| 13 |
-
Stable tag: 3.1
|
| 14 |
Framework: WS-P-3.0
|
| 15 |
|
| 16 |
SSL Compatible: yes
|
|
@@ -43,11 +43,11 @@ Tags: membership, members, member, register, signup, paypal, pay pal, s2member,
|
|
| 43 |
Direct access denial.
|
| 44 |
*/
|
| 45 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
| 46 |
-
exit("Do not access this file directly.");
|
| 47 |
/*
|
| 48 |
Define versions.
|
| 49 |
*/
|
| 50 |
-
define ("WS_PLUGIN__S2MEMBER_VERSION", "3.1");
|
| 51 |
define ("WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION", "5.2");
|
| 52 |
define ("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION", "2.9.2");
|
| 53 |
define ("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "1.0.5");
|
|
@@ -60,7 +60,7 @@ if (version_compare (PHP_VERSION, WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION, ">=") &&
|
|
| 60 |
/*
|
| 61 |
Hook before loaded.
|
| 62 |
*/
|
| 63 |
-
do_action("ws_plugin__s2member_before_loaded");
|
| 64 |
/*
|
| 65 |
System configuraton.
|
| 66 |
*/
|
|
@@ -72,7 +72,7 @@ if (version_compare (PHP_VERSION, WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION, ">=") &&
|
|
| 72 |
/*
|
| 73 |
Hook after system config & hooks are loaded.
|
| 74 |
*/
|
| 75 |
-
do_action("ws_plugin__s2member_config_hooks_loaded");
|
| 76 |
/*
|
| 77 |
Load a possible Pro module, if/when available.
|
| 78 |
*/
|
|
@@ -88,7 +88,7 @@ if (version_compare (PHP_VERSION, WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION, ">=") &&
|
|
| 88 |
/*
|
| 89 |
Hook after loaded.
|
| 90 |
*/
|
| 91 |
-
do_action("ws_plugin__s2member_after_loaded");
|
| 92 |
}
|
| 93 |
else if (is_admin ()) /* Admin compatibility errors. */
|
| 94 |
{
|
| 9 |
If not, see: <http://www.gnu.org/licenses/>.
|
| 10 |
*/
|
| 11 |
/*
|
| 12 |
+
Version: 3.1.1
|
| 13 |
+
Stable tag: 3.1.1
|
| 14 |
Framework: WS-P-3.0
|
| 15 |
|
| 16 |
SSL Compatible: yes
|
| 43 |
Direct access denial.
|
| 44 |
*/
|
| 45 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
| 46 |
+
exit ("Do not access this file directly.");
|
| 47 |
/*
|
| 48 |
Define versions.
|
| 49 |
*/
|
| 50 |
+
define ("WS_PLUGIN__S2MEMBER_VERSION", "3.1.1");
|
| 51 |
define ("WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION", "5.2");
|
| 52 |
define ("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION", "2.9.2");
|
| 53 |
define ("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "1.0.5");
|
| 60 |
/*
|
| 61 |
Hook before loaded.
|
| 62 |
*/
|
| 63 |
+
do_action ("ws_plugin__s2member_before_loaded");
|
| 64 |
/*
|
| 65 |
System configuraton.
|
| 66 |
*/
|
| 72 |
/*
|
| 73 |
Hook after system config & hooks are loaded.
|
| 74 |
*/
|
| 75 |
+
do_action ("ws_plugin__s2member_config_hooks_loaded");
|
| 76 |
/*
|
| 77 |
Load a possible Pro module, if/when available.
|
| 78 |
*/
|
| 88 |
/*
|
| 89 |
Hook after loaded.
|
| 90 |
*/
|
| 91 |
+
do_action ("ws_plugin__s2member_after_loaded");
|
| 92 |
}
|
| 93 |
else if (is_admin ()) /* Admin compatibility errors. */
|
| 94 |
{
|
