Version Description
- Bug fix in %%current_user_login%% for Special Redirection URLs. Was not processing correctly. This has been resolved in 2.9.4+.
- Bug fix in AWeber/MailChimp integration for Free Subscriber registrations. Specifically, those originating from the front-end.
- Extra security hardening.
MCRYPT_RIJNDAEL_256 / CBCnow being utilized in Registration Access Cookies. - New feature. s2Member now supports a custom Double Opt-In Checkbox for its List Server integrations. See
s2Member -> API List Servers -> Double Opt-In. This is also compatible with BuddyPress registration forms.
Download this release
Release Info
| Developer | PriMoThemes |
| Plugin | |
| Version | 2.9.4 |
| Comparing to | |
| See all releases | |
Code changes from version 2.9.3 to 2.9.4
- images/checked.png +0 -0
- images/unchecked.png +0 -0
- includes/functions/list-servers.inc.php +59 -0
- includes/functions/login-redirection.inc.php +1 -1
- includes/functions/paypal-return.inc.php +3 -3
- includes/functions/register-access.inc.php +153 -173
- includes/functions/utilities.inc.php +28 -0
- includes/hooks.inc.php +1 -0
- includes/menu-pages/api-ops.inc.php +1 -2
- includes/menu-pages/els-ops.inc.php +52 -0
- includes/menu-pages/menu-pages.js +20 -1
- includes/syscon.inc.php +8 -0
- readme.txt +8 -2
- s2member.php +2 -2
images/checked.png
ADDED
|
Binary file
|
images/unchecked.png
ADDED
|
Binary file
|
includes/functions/list-servers.inc.php
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/*
|
| 3 |
+
Copyright: © 2009 WebSharks, Inc. ( coded in the USA )
|
| 4 |
+
<mailto:support@websharks-inc.com> <http://www.websharks-inc.com/>
|
| 5 |
+
|
| 6 |
+
Released under the terms of the GNU General Public License.
|
| 7 |
+
You should have received a copy of the GNU General Public License,
|
| 8 |
+
along with this software. In the main directory, see: /licensing/
|
| 9 |
+
If not, see: <http://www.gnu.org/licenses/>.
|
| 10 |
+
*/
|
| 11 |
+
/*
|
| 12 |
+
Direct access denial.
|
| 13 |
+
*/
|
| 14 |
+
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
| 15 |
+
exit;
|
| 16 |
+
/*
|
| 17 |
+
Function that process list server integrations for s2Member.
|
| 18 |
+
*/
|
| 19 |
+
function ws_plugin__s2member_process_list_servers ($level = FALSE, $email = FALSE, $fname = FALSE, $lname = FALSE, $ip = FALSE, $opt_in = FALSE)
|
| 20 |
+
{
|
| 21 |
+
if (strlen ($level) && is_email ($email) && $opt_in) /* Must have a level, a valid email, and opt-in permission. */
|
| 22 |
+
{
|
| 23 |
+
if (($mailchimp_api_key = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mailchimp_api_key"]))
|
| 24 |
+
if (($mailchimp_list_ids = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_mailchimp_list_ids"]))
|
| 25 |
+
{
|
| 26 |
+
if (!class_exists ("NC_MCAPI"))
|
| 27 |
+
include_once dirname (dirname (__FILE__)) . "/mailchimp/nc-mcapi.inc.php";
|
| 28 |
+
/**/
|
| 29 |
+
$MCAPI = new NC_MCAPI ($mailchimp_api_key); /* MailChimp® API class. */
|
| 30 |
+
/**/
|
| 31 |
+
foreach (preg_split ("/[\r\n\t\s;,]+/", $mailchimp_list_ids) as $mailchimp_list_id)
|
| 32 |
+
$MCAPI->listSubscribe ($mailchimp_list_id, $email, array ("FNAME" => $fname, "LNAME" => $lname, "OPTINIP" => $ip));
|
| 33 |
+
}
|
| 34 |
+
/**/
|
| 35 |
+
if ($aweber_list_ids = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_aweber_list_ids"])
|
| 36 |
+
{
|
| 37 |
+
foreach (preg_split ("/[\r\n\t\s;,]+/", $aweber_list_ids) as $aweber_list_id)
|
| 38 |
+
@mail ($aweber_list_id . "@aweber.com", "s2Member Subscription Request",/**/
|
| 39 |
+
"s2Member Subscription Request\ns2Member w/ PayPal Email ID\nBuyer: " . $fname . " " . $lname . "\n - end.",/**/
|
| 40 |
+
"From: \"" . preg_replace ("/\"/", "", $fname . " " . $lname) . "\" <" . $email . ">\r\nContent-Type: text/plain; charset=utf-8");
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
/**/
|
| 44 |
+
return;
|
| 45 |
+
}
|
| 46 |
+
/*
|
| 47 |
+
Function that determines whether or not any list
|
| 48 |
+
servers have been integrated into the s2Member options.
|
| 49 |
+
*/
|
| 50 |
+
function ws_plugin__s2member_list_servers_integrated ()
|
| 51 |
+
{
|
| 52 |
+
for ($i = 0; $i <= 4; $i++)
|
| 53 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $i . "_mailchimp_list_ids"]/**/
|
| 54 |
+
|| $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $i . "_aweber_list_ids"])
|
| 55 |
+
return true;
|
| 56 |
+
/**/
|
| 57 |
+
return false;
|
| 58 |
+
}
|
| 59 |
+
?>
|
includes/functions/login-redirection.inc.php
CHANGED
|
@@ -29,7 +29,7 @@ function ws_plugin__s2member_login_redirect ($username = FALSE)
|
|
| 29 |
/**/
|
| 30 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"])
|
| 31 |
wp_redirect (ws_plugin__s2member_fill_login_redirect_rc_vars /* Special. */
|
| 32 |
-
($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"]));
|
| 33 |
/**/
|
| 34 |
else /* Otherwise, use the Login Welcome Page for s2Member. */
|
| 35 |
wp_redirect (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]));
|
| 29 |
/**/
|
| 30 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"])
|
| 31 |
wp_redirect (ws_plugin__s2member_fill_login_redirect_rc_vars /* Special. */
|
| 32 |
+
($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"], $user));
|
| 33 |
/**/
|
| 34 |
else /* Otherwise, use the Login Welcome Page for s2Member. */
|
| 35 |
wp_redirect (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]));
|
includes/functions/paypal-return.inc.php
CHANGED
|
@@ -201,9 +201,9 @@ function ws_plugin__s2member_paypal_return ()
|
|
| 201 |
/**/
|
| 202 |
$paypal["s2member_log"][] = "s2Member txn_type identified as (web_accept|subscr_signup|subscr_payment) w/o update vars.";
|
| 203 |
/**/
|
| 204 |
-
setcookie ("s2member_subscr_id", $paypal["subscr_id"], time () + 31556926, "/");
|
| 205 |
-
setcookie ("s2member_custom", $paypal["custom"], time () + 31556926, "/");
|
| 206 |
-
setcookie ("s2member_level", $paypal["item_number"], time () + 31556926, "/");
|
| 207 |
/**/
|
| 208 |
$paypal["s2member_log"][] = "s2Member cookies set on (web_accept|subscr_signup|subscr_payment) w/o update vars.";
|
| 209 |
/**/
|
| 201 |
/**/
|
| 202 |
$paypal["s2member_log"][] = "s2Member txn_type identified as (web_accept|subscr_signup|subscr_payment) w/o update vars.";
|
| 203 |
/**/
|
| 204 |
+
setcookie ("s2member_subscr_id", ws_plugin__s2member_encrypt ($paypal["subscr_id"]), time () + 31556926, "/");
|
| 205 |
+
setcookie ("s2member_custom", ws_plugin__s2member_encrypt ($paypal["custom"]), time () + 31556926, "/");
|
| 206 |
+
setcookie ("s2member_level", ws_plugin__s2member_encrypt ($paypal["item_number"]), time () + 31556926, "/");
|
| 207 |
/**/
|
| 208 |
$paypal["s2member_log"][] = "s2Member cookies set on (web_accept|subscr_signup|subscr_payment) w/o update vars.";
|
| 209 |
/**/
|
includes/functions/register-access.inc.php
CHANGED
|
@@ -37,11 +37,11 @@ function ws_plugin__s2member_check_register_access ($users_can_register = FALSE)
|
|
| 37 |
{
|
| 38 |
return apply_filters ("s2member_check_register_access", ($users_can_register = "1"));
|
| 39 |
}
|
| 40 |
-
else if ($pagenow !== "options-general.php" && $_COOKIE["s2member_subscr_id"] && $_COOKIE["s2member_custom"] && preg_match ("/^[1-4](\:|$)/", $_COOKIE["s2member_level"]))
|
| 41 |
{
|
| 42 |
global $wpdb; /* Global database object reference. */
|
| 43 |
/**/
|
| 44 |
-
if (!$usermeta = $wpdb->get_row ("SELECT `user_id` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = 's2member_subscr_id' AND `meta_value` = '" . $wpdb->escape ($
|
| 45 |
{
|
| 46 |
return apply_filters ("s2member_check_register_access", ($users_can_register = "1"));
|
| 47 |
}
|
|
@@ -91,7 +91,7 @@ function ws_plugin__s2member_custom_registration_fields ()
|
|
| 91 |
echo '<p>' . "\n";
|
| 92 |
echo '<label>' . "\n";
|
| 93 |
echo 'Password *' . "\n";
|
| 94 |
-
echo '<input aria-required="true" type="password" maxlength="100" name="ws_plugin__s2member_custom_reg_field_user_pass" id="ws-plugin--s2member-custom-reg-field-user-pass" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($
|
| 95 |
echo '</label>' . "\n";
|
| 96 |
echo '</p>';
|
| 97 |
}
|
|
@@ -99,14 +99,14 @@ function ws_plugin__s2member_custom_registration_fields ()
|
|
| 99 |
echo '<p>' . "\n";
|
| 100 |
echo '<label>' . "\n";
|
| 101 |
echo 'First Name *' . "\n";
|
| 102 |
-
echo '<input aria-required="true" type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_first_name" id="ws-plugin--s2member-custom-reg-field-first-name" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($
|
| 103 |
echo '</label>' . "\n";
|
| 104 |
echo '</p>';
|
| 105 |
/**/
|
| 106 |
echo '<p>' . "\n";
|
| 107 |
echo '<label>' . "\n";
|
| 108 |
echo 'Last Name *' . "\n";
|
| 109 |
-
echo '<input aria-required="true" type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_last_name" id="ws-plugin--s2member-custom-reg-field-last-name" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($
|
| 110 |
echo '</label>' . "\n";
|
| 111 |
echo '</p>';
|
| 112 |
/**/
|
|
@@ -121,12 +121,22 @@ function ws_plugin__s2member_custom_registration_fields ()
|
|
| 121 |
echo '<label>' . "\n";
|
| 122 |
echo esc_html ($field) . (($req) ? " *" : "") . "\n";
|
| 123 |
$field = preg_replace ("/[^a-z0-9]/i", "_", strtolower ($field));
|
| 124 |
-
echo '<input' . $req . ' type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_' . esc_attr ($field) . '" id="ws-plugin--s2member-custom-reg-field-' . esc_attr (preg_replace ("/_/", "-", $field)) . '" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($
|
| 125 |
echo '</label>' . "\n";
|
| 126 |
echo '</p>';
|
| 127 |
}
|
| 128 |
}
|
| 129 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
do_action ("s2member_during_custom_registration_fields");
|
| 131 |
}
|
| 132 |
/**/
|
|
@@ -135,6 +145,34 @@ function ws_plugin__s2member_custom_registration_fields ()
|
|
| 135 |
return;
|
| 136 |
}
|
| 137 |
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
Generates registration links.
|
| 139 |
*/
|
| 140 |
function ws_plugin__s2member_register_link_gen ($subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
|
@@ -157,21 +195,20 @@ function ws_plugin__s2member_register_link_gen ($subscr_id = FALSE, $custom = FA
|
|
| 157 |
/*
|
| 158 |
Handles registration links.
|
| 159 |
Attach to: add_action("init");
|
| 160 |
-
$_GET["s2member_paypal_register"] deprecated in v2.8.6.
|
| 161 |
*/
|
| 162 |
function ws_plugin__s2member_register ()
|
| 163 |
{
|
| 164 |
do_action ("s2member_before_register");
|
| 165 |
/**/
|
| 166 |
-
if ($_GET["s2member_register"]
|
| 167 |
{
|
| 168 |
if (is_array ($register = preg_split ("/\:\.\:\|\:\.\:/", ws_plugin__s2member_decrypt ($_GET["s2member_register"]))))
|
| 169 |
{
|
| 170 |
if (count ($register) === 4 && $register[0] === "subscr_id_custom_item_number" && $register[1] && $register[2] && $register[3])
|
| 171 |
{
|
| 172 |
-
setcookie ("s2member_subscr_id", $register[1], time () + 31556926, "/");
|
| 173 |
-
setcookie ("s2member_custom", $register[2], time () + 31556926, "/");
|
| 174 |
-
setcookie ("s2member_level", $register[3], time () + 31556926, "/");
|
| 175 |
/**/
|
| 176 |
do_action ("s2member_during_register");
|
| 177 |
/**/
|
|
@@ -188,12 +225,11 @@ function ws_plugin__s2member_register ()
|
|
| 188 |
/*
|
| 189 |
Function for configuring new users.
|
| 190 |
Attach to: add_action("user_register");
|
| 191 |
-
Attach to: add_action("bp_core_signup_user");
|
| 192 |
*/
|
| 193 |
function ws_plugin__s2member_configure_user_registration ($user_id = FALSE)
|
| 194 |
{
|
| 195 |
global $wpdb; /* Global database object may be required for this routine. */
|
| 196 |
-
static $processed; /* Prevents duplicate processing
|
| 197 |
/**/
|
| 198 |
do_action ("s2member_before_configure_user_registration");
|
| 199 |
/**/
|
|
@@ -201,177 +237,102 @@ function ws_plugin__s2member_configure_user_registration ($user_id = FALSE)
|
|
| 201 |
{
|
| 202 |
ws_plugin__s2member_email_config (); /* Configures From: header that will be used in new user notifications. */
|
| 203 |
/**/
|
| 204 |
-
if (!is_admin () /* Only run this particular routine whenever a Member is registering themselves. */
|
| 205 |
-
&& $_COOKIE["s2member_subscr_id"] && $_COOKIE["s2member_custom"] && preg_match ("/^[1-4](\:|$)/", $_COOKIE["s2member_level"]))
|
|
|
|
|
|
|
| 206 |
{
|
| 207 |
-
|
| 208 |
/**/
|
| 209 |
-
|
| 210 |
-
{
|
| 211 |
-
$user->set_role ("s2member_level" . $level);
|
| 212 |
-
/**/
|
| 213 |
-
if ($ccaps) /* Add custom capabilities. */
|
| 214 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $ccaps) as $ccap)
|
| 215 |
-
if (strlen ($ccap)) /* Don't add empty capabilities. */
|
| 216 |
-
$user->add_cap ("access_s2member_ccap_" . trim (strtolower ($ccap)));
|
| 217 |
-
/**/
|
| 218 |
-
update_usermeta ($user_id, "s2member_subscr_id", $_COOKIE["s2member_subscr_id"]);
|
| 219 |
-
update_usermeta ($user_id, "s2member_custom", $_COOKIE["s2member_custom"]);
|
| 220 |
-
/**/
|
| 221 |
-
if (($mailchimp_api_key = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mailchimp_api_key"]) && ($mailchimp_list_ids = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_mailchimp_list_ids"]))
|
| 222 |
-
{
|
| 223 |
-
if (!class_exists ("NC_MCAPI"))
|
| 224 |
-
include_once dirname (dirname (__FILE__)) . "/mailchimp/nc-mcapi.inc.php";
|
| 225 |
-
/**/
|
| 226 |
-
$MCAPI = new NC_MCAPI ($mailchimp_api_key); /* MailChimp® API class. */
|
| 227 |
-
/**/
|
| 228 |
-
$email = $user->user_email;
|
| 229 |
-
$login = $user->user_login;
|
| 230 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 231 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 232 |
-
/**/
|
| 233 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $mailchimp_list_ids) as $mailchimp_list_id)
|
| 234 |
-
$MCAPI->listSubscribe ($mailchimp_list_id, $email, array ("FNAME" => $fname, "LNAME" => $lname, "OPTINIP" => $_SERVER["REMOTE_ADDR"]));
|
| 235 |
-
}
|
| 236 |
-
/**/
|
| 237 |
-
if ($aweber_list_ids = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_aweber_list_ids"])
|
| 238 |
-
{
|
| 239 |
-
$email = $user->user_email;
|
| 240 |
-
$login = $user->user_login;
|
| 241 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 242 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 243 |
-
/**/
|
| 244 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $aweber_list_ids) as $aweber_list_id)
|
| 245 |
-
@mail ($aweber_list_id . "@aweber.com", "s2Member Subscription Request",/**/
|
| 246 |
-
"s2Member Subscription Request\ns2Member w/ PayPal Email ID\nBuyer: " . $fname . " " . $lname . "\n - end.",/**/
|
| 247 |
-
"From: \"" . preg_replace ("/\"/", "", $fname . " " . $lname) . "\" <" . $email . ">\r\nContent-Type: text/plain; charset=utf-8");
|
| 248 |
-
}
|
| 249 |
-
/**/
|
| 250 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["registration_notification_urls"])
|
| 251 |
-
{
|
| 252 |
-
$email = $user->user_email;
|
| 253 |
-
$login = $user->user_login;
|
| 254 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 255 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 256 |
-
/**/
|
| 257 |
-
if (function_exists ("ws_plugin__s2member_generate_password"))
|
| 258 |
-
if (!defined ("BP_VERSION") && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"])
|
| 259 |
-
if (wp_verify_nonce (trim (stripslashes ($_POST["ws_plugin__s2member_registration"])), "ws-plugin--s2member-registration"))
|
| 260 |
-
if ($pass = trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_user_pass"])))
|
| 261 |
-
$pass = $pass;
|
| 262 |
-
/**/
|
| 263 |
-
if (is_array ($cv = preg_split ("/\|/", $_COOKIE["s2member_custom"])))
|
| 264 |
-
foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["registration_notification_urls"]) as $url)
|
| 265 |
-
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
|
| 266 |
-
if (($url = preg_replace ("/%%level%%/i", urlencode ($level), $url)))
|
| 267 |
-
if (($url = preg_replace ("/%%user_first_name%%/i", urlencode ($fname), $url)))
|
| 268 |
-
if (($url = preg_replace ("/%%user_last_name%%/i", urlencode ($lname), $url)))
|
| 269 |
-
if (($url = preg_replace ("/%%user_full_name%%/i", urlencode (trim ($fname . " " . $lname)), $url)))
|
| 270 |
-
if (($url = preg_replace ("/%%user_email%%/i", urlencode ($email), $url)))
|
| 271 |
-
if (($url = preg_replace ("/%%user_login%%/i", urlencode ($login), $url)))
|
| 272 |
-
if (($url = preg_replace ("/%%user_pass%%/i", urlencode ($pass), $url)))
|
| 273 |
-
if (($url = trim ($url))) /* Make sure it is not empty. */
|
| 274 |
-
ws_plugin__s2member_curlpsr ($url, "s2member=1");
|
| 275 |
-
}
|
| 276 |
-
/**/
|
| 277 |
-
do_action ("s2member_during_configure_user_registration_front_side");
|
| 278 |
-
}
|
| 279 |
/**/
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
}
|
| 284 |
/**/
|
| 285 |
else if (is_admin () && preg_match ("/wp-admin\/user-new\.php/", $_POST["_wp_http_referer"]) && preg_match ("/^(subscriber|s2member_level[1-4])$/", $_POST["role"]))
|
| 286 |
{
|
| 287 |
-
|
| 288 |
-
{
|
| 289 |
-
if (!class_exists ("NC_MCAPI"))
|
| 290 |
-
include_once dirname (dirname (__FILE__)) . "/mailchimp/nc-mcapi.inc.php";
|
| 291 |
-
/**/
|
| 292 |
-
$MCAPI = new NC_MCAPI ($mailchimp_api_key); /* MailChimp® API class. */
|
| 293 |
-
/**/
|
| 294 |
-
$email = $user->user_email;
|
| 295 |
-
$login = $user->user_login;
|
| 296 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 297 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 298 |
-
/**/
|
| 299 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $mailchimp_list_ids) as $mailchimp_list_id)
|
| 300 |
-
$MCAPI->listSubscribe ($mailchimp_list_id, $email, array ("FNAME" => $fname, "LNAME" => $lname, "OPTINIP" => ""));
|
| 301 |
-
}
|
| 302 |
/**/
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
if (!class_exists ("NC_MCAPI"))
|
| 306 |
-
include_once dirname (dirname (__FILE__)) . "/mailchimp/nc-mcapi.inc.php";
|
| 307 |
-
/**/
|
| 308 |
-
$MCAPI = new NC_MCAPI ($mailchimp_api_key); /* MailChimp® API class. */
|
| 309 |
-
/**/
|
| 310 |
-
$email = $user->user_email;
|
| 311 |
-
$login = $user->user_login;
|
| 312 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 313 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 314 |
-
/**/
|
| 315 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $mailchimp_list_ids) as $mailchimp_list_id)
|
| 316 |
-
$MCAPI->listSubscribe ($mailchimp_list_id, $email, array ("FNAME" => $fname, "LNAME" => $lname, "OPTINIP" => ""));
|
| 317 |
-
}
|
| 318 |
/**/
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $aweber_list_ids) as $aweber_list_id)
|
| 327 |
-
@mail ($aweber_list_id . "@aweber.com", "s2Member Subscription Request",/**/
|
| 328 |
-
"s2Member Subscription Request\ns2Member w/ PayPal Email ID\nBuyer: " . $fname . " " . $lname . "\n - end.",/**/
|
| 329 |
-
"From: \"" . preg_replace ("/\"/", "", $fname . " " . $lname) . "\" <" . $email . ">\r\nContent-Type: text/plain; charset=utf-8");
|
| 330 |
-
}
|
| 331 |
/**/
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
$
|
| 335 |
-
$login = $user->user_login;
|
| 336 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 337 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 338 |
-
/**/
|
| 339 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $aweber_list_ids) as $aweber_list_id)
|
| 340 |
-
@mail ($aweber_list_id . "@aweber.com", "s2Member Subscription Request",/**/
|
| 341 |
-
"s2Member Subscription Request\ns2Member w/ PayPal Email ID\nBuyer: " . $fname . " " . $lname . "\n - end.",/**/
|
| 342 |
-
"From: \"" . preg_replace ("/\"/", "", $fname . " " . $lname) . "\" <" . $email . ">\r\nContent-Type: text/plain; charset=utf-8");
|
| 343 |
-
}
|
| 344 |
/**/
|
| 345 |
-
if (
|
| 346 |
-
|
| 347 |
-
|
| 348 |
-
|
| 349 |
-
|
| 350 |
-
$level = ($_POST["role"] === "subscriber") ? "0" : $level;
|
| 351 |
-
$fname = ($user->first_name) ? $user->first_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]);
|
| 352 |
-
$lname = ($user->last_name) ? $user->last_name : trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]);
|
| 353 |
-
/**/
|
| 354 |
-
if ($pass = trim (stripslashes ($_POST["pass1"])))
|
| 355 |
-
$pass = $pass; /* From the `Users -> Add New` form.
|
| 356 |
-
/**/
|
| 357 |
-
if (is_array ($cv = preg_split ("/\|/", $_COOKIE["s2member_custom"])))
|
| 358 |
-
foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["registration_notification_urls"]) as $url)
|
| 359 |
-
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
|
| 360 |
-
if (($url = preg_replace ("/%%level%%/i", urlencode ($level), $url)))
|
| 361 |
-
if (($url = preg_replace ("/%%user_first_name%%/i", urlencode ($fname), $url)))
|
| 362 |
-
if (($url = preg_replace ("/%%user_last_name%%/i", urlencode ($lname), $url)))
|
| 363 |
-
if (($url = preg_replace ("/%%user_full_name%%/i", urlencode (trim ($fname . " " . $lname)), $url)))
|
| 364 |
-
if (($url = preg_replace ("/%%user_email%%/i", urlencode ($email), $url)))
|
| 365 |
-
if (($url = preg_replace ("/%%user_login%%/i", urlencode ($login), $url)))
|
| 366 |
-
if (($url = preg_replace ("/%%user_pass%%/i", urlencode ($pass), $url)))
|
| 367 |
-
if (($url = trim ($url))) /* Make sure it is not empty. */
|
| 368 |
-
ws_plugin__s2member_curlpsr ($url, "s2member=1");
|
| 369 |
-
}
|
| 370 |
/**/
|
| 371 |
do_action ("s2member_during_configure_user_registration_admin_side");
|
| 372 |
}
|
| 373 |
/**/
|
| 374 |
-
if (
|
| 375 |
{
|
| 376 |
if (!$user->first_name && ($first_name = trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"])))
|
| 377 |
update_usermeta ($user_id, "first_name", $first_name) . /* And display name. */
|
|
@@ -391,9 +352,28 @@ function ws_plugin__s2member_configure_user_registration ($user_id = FALSE)
|
|
| 391 |
}
|
| 392 |
/**/
|
| 393 |
update_usermeta ($user_id, "s2member_custom_fields", $fields);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 394 |
}
|
| 395 |
-
/**/
|
| 396 |
-
do_action ("s2member_during_configure_user_registration");
|
| 397 |
}
|
| 398 |
/**/
|
| 399 |
do_action ("s2member_after_configure_user_registration");
|
|
@@ -417,12 +397,12 @@ if (!function_exists ("wp_generate_password"))
|
|
| 417 |
/**/
|
| 418 |
$password = ws_plugin__s2member_random_str_gen ($length, $special_chars);
|
| 419 |
/**/
|
| 420 |
-
if (
|
| 421 |
if (wp_verify_nonce (trim (stripslashes ($_POST["ws_plugin__s2member_registration"])), "ws-plugin--s2member-registration"))
|
| 422 |
if ($custom = trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_user_pass"])))
|
| 423 |
$password = $custom;
|
| 424 |
/**/
|
| 425 |
-
return $password;
|
| 426 |
}
|
| 427 |
}
|
| 428 |
?>
|
| 37 |
{
|
| 38 |
return apply_filters ("s2member_check_register_access", ($users_can_register = "1"));
|
| 39 |
}
|
| 40 |
+
else if ($pagenow !== "options-general.php" && ($subscr_id = ws_plugin__s2member_decrypt ($_COOKIE["s2member_subscr_id"])) && ($custom = ws_plugin__s2member_decrypt ($_COOKIE["s2member_custom"])) && preg_match ("/^[1-4](\:|$)/", ($level = ws_plugin__s2member_decrypt ($_COOKIE["s2member_level"]))))
|
| 41 |
{
|
| 42 |
global $wpdb; /* Global database object reference. */
|
| 43 |
/**/
|
| 44 |
+
if (!$usermeta = $wpdb->get_row ("SELECT `user_id` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = 's2member_subscr_id' AND `meta_value` = '" . $wpdb->escape ($subscr_id) . "' LIMIT 1"))
|
| 45 |
{
|
| 46 |
return apply_filters ("s2member_check_register_access", ($users_can_register = "1"));
|
| 47 |
}
|
| 91 |
echo '<p>' . "\n";
|
| 92 |
echo '<label>' . "\n";
|
| 93 |
echo 'Password *' . "\n";
|
| 94 |
+
echo '<input aria-required="true" type="password" maxlength="100" name="ws_plugin__s2member_custom_reg_field_user_pass" id="ws-plugin--s2member-custom-reg-field-user-pass" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_user_pass"]))) . '" />' . "\n";
|
| 95 |
echo '</label>' . "\n";
|
| 96 |
echo '</p>';
|
| 97 |
}
|
| 99 |
echo '<p>' . "\n";
|
| 100 |
echo '<label>' . "\n";
|
| 101 |
echo 'First Name *' . "\n";
|
| 102 |
+
echo '<input aria-required="true" type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_first_name" id="ws-plugin--s2member-custom-reg-field-first-name" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]))) . '" />' . "\n";
|
| 103 |
echo '</label>' . "\n";
|
| 104 |
echo '</p>';
|
| 105 |
/**/
|
| 106 |
echo '<p>' . "\n";
|
| 107 |
echo '<label>' . "\n";
|
| 108 |
echo 'Last Name *' . "\n";
|
| 109 |
+
echo '<input aria-required="true" type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_last_name" id="ws-plugin--s2member-custom-reg-field-last-name" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]))) . '" />' . "\n";
|
| 110 |
echo '</label>' . "\n";
|
| 111 |
echo '</p>';
|
| 112 |
/**/
|
| 121 |
echo '<label>' . "\n";
|
| 122 |
echo esc_html ($field) . (($req) ? " *" : "") . "\n";
|
| 123 |
$field = preg_replace ("/[^a-z0-9]/i", "_", strtolower ($field));
|
| 124 |
+
echo '<input' . $req . ' type="text" maxlength="100" name="ws_plugin__s2member_custom_reg_field_' . esc_attr ($field) . '" id="ws-plugin--s2member-custom-reg-field-' . esc_attr (preg_replace ("/_/", "-", $field)) . '" class="ws-plugin--s2member-custom-reg-field input" size="25" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="' . format_to_edit (trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_" . $field]))) . '" />' . "\n";
|
| 125 |
echo '</label>' . "\n";
|
| 126 |
echo '</p>';
|
| 127 |
}
|
| 128 |
}
|
| 129 |
/**/
|
| 130 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && ws_plugin__s2member_list_servers_integrated ())
|
| 131 |
+
{
|
| 132 |
+
echo '<p>' . "\n";
|
| 133 |
+
echo '<label>' . "\n";
|
| 134 |
+
echo '<input type="checkbox" name="ws_plugin__s2member_custom_reg_field_opt_in" id="ws-plugin--s2member-custom-reg-field-opt-in" tabindex="' . esc_attr (($tabindex = $tabindex + 1)) . '" value="1"' . (((empty ($_POST) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1) || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? ' checked="checked"' : '') . ' />' . "\n";
|
| 135 |
+
echo $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n";
|
| 136 |
+
echo '</label>' . "\n";
|
| 137 |
+
echo '</p>';
|
| 138 |
+
}
|
| 139 |
+
/**/
|
| 140 |
do_action ("s2member_during_custom_registration_fields");
|
| 141 |
}
|
| 142 |
/**/
|
| 145 |
return;
|
| 146 |
}
|
| 147 |
/*
|
| 148 |
+
This adds an opt-in checkbox to the BuddyPress signup form.
|
| 149 |
+
Attach to: add_action("bp_before_registration_submit_buttons");
|
| 150 |
+
*/
|
| 151 |
+
function ws_plugin__s2member_opt_in_4bp ()
|
| 152 |
+
{
|
| 153 |
+
do_action ("s2member_before_opt_in_4bp");
|
| 154 |
+
/**/
|
| 155 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && ws_plugin__s2member_list_servers_integrated ())
|
| 156 |
+
{
|
| 157 |
+
echo '<div class="s2member-opt-in-4bp" style="' . apply_filters ("s2member_opt_in_4bp_styles", "clear:both; padding-top:10px; margin-left:-3px;") . '">' . "\n";
|
| 158 |
+
/**/
|
| 159 |
+
echo '<p>' . "\n";
|
| 160 |
+
echo '<label>' . "\n";
|
| 161 |
+
echo '<input type="checkbox" name="ws_plugin__s2member_custom_reg_field_opt_in" id="ws-plugin--s2member-custom-reg-field-opt-in" value="1"' . (((empty ($_POST) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1) || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? ' checked="checked"' : '') . ' />' . "\n";
|
| 162 |
+
echo $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n";
|
| 163 |
+
echo '</label>' . "\n";
|
| 164 |
+
echo '</p>';
|
| 165 |
+
/**/
|
| 166 |
+
echo '</div>' . "\n";
|
| 167 |
+
/**/
|
| 168 |
+
do_action ("s2member_during_opt_in_4bp");
|
| 169 |
+
}
|
| 170 |
+
/**/
|
| 171 |
+
do_action ("s2member_after_opt_in_4bp");
|
| 172 |
+
/**/
|
| 173 |
+
return;
|
| 174 |
+
}
|
| 175 |
+
/*
|
| 176 |
Generates registration links.
|
| 177 |
*/
|
| 178 |
function ws_plugin__s2member_register_link_gen ($subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
| 195 |
/*
|
| 196 |
Handles registration links.
|
| 197 |
Attach to: add_action("init");
|
|
|
|
| 198 |
*/
|
| 199 |
function ws_plugin__s2member_register ()
|
| 200 |
{
|
| 201 |
do_action ("s2member_before_register");
|
| 202 |
/**/
|
| 203 |
+
if ($_GET["s2member_register"]) /* If they're attempting to access the registration system. */
|
| 204 |
{
|
| 205 |
if (is_array ($register = preg_split ("/\:\.\:\|\:\.\:/", ws_plugin__s2member_decrypt ($_GET["s2member_register"]))))
|
| 206 |
{
|
| 207 |
if (count ($register) === 4 && $register[0] === "subscr_id_custom_item_number" && $register[1] && $register[2] && $register[3])
|
| 208 |
{
|
| 209 |
+
setcookie ("s2member_subscr_id", ws_plugin__s2member_encrypt ($register[1]), time () + 31556926, "/");
|
| 210 |
+
setcookie ("s2member_custom", ws_plugin__s2member_encrypt ($register[2]), time () + 31556926, "/");
|
| 211 |
+
setcookie ("s2member_level", ws_plugin__s2member_encrypt ($register[3]), time () + 31556926, "/");
|
| 212 |
/**/
|
| 213 |
do_action ("s2member_during_register");
|
| 214 |
/**/
|
| 225 |
/*
|
| 226 |
Function for configuring new users.
|
| 227 |
Attach to: add_action("user_register");
|
|
|
|
| 228 |
*/
|
| 229 |
function ws_plugin__s2member_configure_user_registration ($user_id = FALSE)
|
| 230 |
{
|
| 231 |
global $wpdb; /* Global database object may be required for this routine. */
|
| 232 |
+
static $processed; /* Prevents duplicate processing. */
|
| 233 |
/**/
|
| 234 |
do_action ("s2member_before_configure_user_registration");
|
| 235 |
/**/
|
| 237 |
{
|
| 238 |
ws_plugin__s2member_email_config (); /* Configures From: header that will be used in new user notifications. */
|
| 239 |
/**/
|
| 240 |
+
if (!is_admin () /* Only run this particular routine whenever a Member [1-4] is registering themselves with cookies. */
|
| 241 |
+
&& ($subscr_id = ws_plugin__s2member_decrypt ($_COOKIE["s2member_subscr_id"])) && ($custom = ws_plugin__s2member_decrypt ($_COOKIE["s2member_custom"])) && preg_match ("/^[1-4](\:|$)/", ($level = ws_plugin__s2member_decrypt ($_COOKIE["s2member_level"])))/**/
|
| 242 |
+
&& (!$usermeta = $wpdb->get_row ("SELECT `user_id` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = 's2member_subscr_id' AND `meta_value` = '" . $wpdb->escape ($subscr_id) . "' LIMIT 1")))
|
| 243 |
+
/* ^ This is for security ^ It checks the database to make sure the User/Member has not already registered in the past, with the same PayPal Subscr. ID. */
|
| 244 |
{
|
| 245 |
+
$processed = "yes"; /* Mark this as yes, to indicate that a routine was successfully processed. */
|
| 246 |
/**/
|
| 247 |
+
list ($level, $ccaps) = preg_split ("/\:/", $level, 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
/**/
|
| 249 |
+
$email = $user->user_email;
|
| 250 |
+
$login = $user->user_login;
|
| 251 |
+
$ip = $_SERVER["REMOTE_ADDR"];
|
| 252 |
+
$cv = preg_split ("/\|/", $custom);
|
| 253 |
+
$fname = (!$user->first_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]) : $user->first_name;
|
| 254 |
+
$lname = (!$user->last_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]) : $user->last_name;
|
| 255 |
+
$name = trim ($fname . " " . $lname);
|
| 256 |
+
/**/
|
| 257 |
+
if (!$pass) /* s2Member password? */
|
| 258 |
+
if ($GLOBALS["s2member_password"])
|
| 259 |
+
$pass = $GLOBALS["s2member_password"];
|
| 260 |
+
/**/
|
| 261 |
+
if (!$pass) /* Also try to get the password from BuddyPress. */
|
| 262 |
+
if ($_POST["signup_password"]) /* Field used by BuddyPress. */
|
| 263 |
+
$pass = trim (stripslashes ($_POST["signup_password"]));
|
| 264 |
+
/**/
|
| 265 |
+
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
| 266 |
+
/**/
|
| 267 |
+
$user->set_role ("s2member_level" . $level);
|
| 268 |
+
/**/
|
| 269 |
+
if ($ccaps) /* Add custom capabilities. */
|
| 270 |
+
foreach (preg_split ("/[\r\n\t\s;,]+/", $ccaps) as $ccap)
|
| 271 |
+
if (strlen ($ccap)) /* Don't add empty capabilities. */
|
| 272 |
+
$user->add_cap ("access_s2member_ccap_" . trim (strtolower ($ccap)));
|
| 273 |
+
/**/
|
| 274 |
+
update_usermeta ($user_id, "s2member_subscr_id", $subscr_id);
|
| 275 |
+
update_usermeta ($user_id, "s2member_custom", $custom);
|
| 276 |
+
/**/
|
| 277 |
+
do_action ("s2member_during_configure_user_registration_front_side");
|
| 278 |
+
}
|
| 279 |
+
/**/
|
| 280 |
+
else if (!is_admin ()) /* Only run this particular routine whenever a Free Subscriber is registering themselves. */
|
| 281 |
+
{
|
| 282 |
+
$processed = "yes"; /* Mark this as yes, to indicate that a routine was successfully processed. */
|
| 283 |
+
/**/
|
| 284 |
+
list ($level, $ccaps) = preg_split ("/\:/", "0:", 2); /* Colon separated level:custom_capability. */
|
| 285 |
+
/**/
|
| 286 |
+
$email = $user->user_email;
|
| 287 |
+
$login = $user->user_login;
|
| 288 |
+
$ip = $_SERVER["REMOTE_ADDR"];
|
| 289 |
+
$cv = preg_split ("/\|/", ""); /* Not applicable here. */
|
| 290 |
+
$fname = (!$user->first_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]) : $user->first_name;
|
| 291 |
+
$lname = (!$user->last_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]) : $user->last_name;
|
| 292 |
+
$name = trim ($fname . " " . $lname);
|
| 293 |
+
/**/
|
| 294 |
+
if (!$pass) /* s2Member password? */
|
| 295 |
+
if ($GLOBALS["s2member_password"])
|
| 296 |
+
$pass = $GLOBALS["s2member_password"];
|
| 297 |
+
/**/
|
| 298 |
+
if (!$pass) /* Also try to get the password from BuddyPress. */
|
| 299 |
+
if ($_POST["signup_password"]) /* Field used by BuddyPress. */
|
| 300 |
+
$pass = trim (stripslashes ($_POST["signup_password"]));
|
| 301 |
+
/**/
|
| 302 |
+
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
| 303 |
+
/**/
|
| 304 |
+
do_action ("s2member_during_configure_user_registration_front_side");
|
| 305 |
}
|
| 306 |
/**/
|
| 307 |
else if (is_admin () && preg_match ("/wp-admin\/user-new\.php/", $_POST["_wp_http_referer"]) && preg_match ("/^(subscriber|s2member_level[1-4])$/", $_POST["role"]))
|
| 308 |
{
|
| 309 |
+
$processed = "yes"; /* Mark this as yes, to indicate that a routine was successfully processed. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 310 |
/**/
|
| 311 |
+
$level = ($_POST["role"] === "subscriber") ? "0" : preg_replace ("/[^1-4]/", "", $_POST["role"]);
|
| 312 |
+
$ccaps = ""; /* Custom Capabilities are not applicable here. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 313 |
/**/
|
| 314 |
+
$email = $user->user_email;
|
| 315 |
+
$login = $user->user_login;
|
| 316 |
+
$ip = ""; /* N/Applicable. */
|
| 317 |
+
$cv = preg_split ("/\|/", "");
|
| 318 |
+
$fname = (!$user->first_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"]) : $user->first_name;
|
| 319 |
+
$lname = (!$user->last_name) ? trim ($_POST["ws_plugin__s2member_custom_reg_field_last_name"]) : $user->last_name;
|
| 320 |
+
$name = trim ($fname . " " . $lname);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 321 |
/**/
|
| 322 |
+
if (!$pass) /* s2Member password? */
|
| 323 |
+
if ($GLOBALS["s2member_password"])
|
| 324 |
+
$pass = $GLOBALS["s2member_password"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 325 |
/**/
|
| 326 |
+
if (!$pass) /* Also try the `Users -> Add New` form. */
|
| 327 |
+
if ($_POST["pass1"]) /* Field used by admin form. */
|
| 328 |
+
$pass = trim (stripslashes ($_POST["pass1"]));
|
| 329 |
+
/**/
|
| 330 |
+
$opt_in = (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] || $_POST["ws_plugin__s2member_custom_reg_field_opt_in"]) ? true : false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 331 |
/**/
|
| 332 |
do_action ("s2member_during_configure_user_registration_admin_side");
|
| 333 |
}
|
| 334 |
/**/
|
| 335 |
+
if ($processed === "yes") /* If registration was processed by one of the routines above. */
|
| 336 |
{
|
| 337 |
if (!$user->first_name && ($first_name = trim ($_POST["ws_plugin__s2member_custom_reg_field_first_name"])))
|
| 338 |
update_usermeta ($user_id, "first_name", $first_name) . /* And display name. */
|
| 352 |
}
|
| 353 |
/**/
|
| 354 |
update_usermeta ($user_id, "s2member_custom_fields", $fields);
|
| 355 |
+
/**/
|
| 356 |
+
ws_plugin__s2member_process_list_servers ($level, $email, $fname, $lname, $ip, $opt_in);
|
| 357 |
+
/**/
|
| 358 |
+
if ($urls = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["registration_notification_urls"])
|
| 359 |
+
foreach (preg_split ("/[\r\n\t]+/", $urls) as $url) /* Notify each of the urls. */
|
| 360 |
+
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
|
| 361 |
+
if (($url = preg_replace ("/%%level%%/i", urlencode ($level), $url)))
|
| 362 |
+
if (($url = preg_replace ("/%%user_first_name%%/i", urlencode ($fname), $url)))
|
| 363 |
+
if (($url = preg_replace ("/%%user_last_name%%/i", urlencode ($lname), $url)))
|
| 364 |
+
if (($url = preg_replace ("/%%user_full_name%%/i", urlencode ($name), $url)))
|
| 365 |
+
if (($url = preg_replace ("/%%user_email%%/i", urlencode ($email), $url)))
|
| 366 |
+
if (($url = preg_replace ("/%%user_login%%/i", urlencode ($login), $url)))
|
| 367 |
+
if (($url = preg_replace ("/%%user_pass%%/i", urlencode ($pass), $url)))
|
| 368 |
+
if (($url = trim ($url))) /* Make sure it is not empty. */
|
| 369 |
+
ws_plugin__s2member_curlpsr ($url, "s2member=1");
|
| 370 |
+
/**/
|
| 371 |
+
setcookie ("s2member_subscr_id", "", time () + 31556926, "/");
|
| 372 |
+
setcookie ("s2member_custom", "", time () + 31556926, "/");
|
| 373 |
+
setcookie ("s2member_level", "", time () + 31556926, "/");
|
| 374 |
+
/**/
|
| 375 |
+
do_action ("s2member_during_configure_user_registration");
|
| 376 |
}
|
|
|
|
|
|
|
| 377 |
}
|
| 378 |
/**/
|
| 379 |
do_action ("s2member_after_configure_user_registration");
|
| 397 |
/**/
|
| 398 |
$password = ws_plugin__s2member_random_str_gen ($length, $special_chars);
|
| 399 |
/**/
|
| 400 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"])
|
| 401 |
if (wp_verify_nonce (trim (stripslashes ($_POST["ws_plugin__s2member_registration"])), "ws-plugin--s2member-registration"))
|
| 402 |
if ($custom = trim (stripslashes ($_POST["ws_plugin__s2member_custom_reg_field_user_pass"])))
|
| 403 |
$password = $custom;
|
| 404 |
/**/
|
| 405 |
+
return ($GLOBALS["s2member_password"] = $password);
|
| 406 |
}
|
| 407 |
}
|
| 408 |
?>
|
includes/functions/utilities.inc.php
CHANGED
|
@@ -41,6 +41,34 @@ function ws_plugin__s2member_array_unique ($array = FALSE)
|
|
| 41 |
}
|
| 42 |
}
|
| 43 |
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
Function that buffers ( gets ) function output.
|
| 45 |
*/
|
| 46 |
function ws_plugin__s2member_get ($function = FALSE)
|
| 41 |
}
|
| 42 |
}
|
| 43 |
/*
|
| 44 |
+
Function that searches a multi-dimensional array
|
| 45 |
+
using a regular expression match against array values.
|
| 46 |
+
*/
|
| 47 |
+
function ws_plugin__s2member_regex_in_array ($regex = FALSE, $array = FALSE)
|
| 48 |
+
{
|
| 49 |
+
if ($regex && is_array ($array))
|
| 50 |
+
{
|
| 51 |
+
foreach ($array as $value)
|
| 52 |
+
{
|
| 53 |
+
if (is_array ($value)) /* Recursive function call. */
|
| 54 |
+
{
|
| 55 |
+
if (ws_plugin__s2member_regex_in_array ($regex, $value))
|
| 56 |
+
return true;
|
| 57 |
+
}
|
| 58 |
+
/**/
|
| 59 |
+
else if (is_string ($value)) /* Must be a string. */
|
| 60 |
+
{
|
| 61 |
+
if (@preg_match ($regex, $value))
|
| 62 |
+
return true;
|
| 63 |
+
}
|
| 64 |
+
}
|
| 65 |
+
/**/
|
| 66 |
+
return false;
|
| 67 |
+
}
|
| 68 |
+
else /* False. */
|
| 69 |
+
return false;
|
| 70 |
+
}
|
| 71 |
+
/*
|
| 72 |
Function that buffers ( gets ) function output.
|
| 73 |
*/
|
| 74 |
function ws_plugin__s2member_get ($function = FALSE)
|
includes/hooks.inc.php
CHANGED
|
@@ -42,6 +42,7 @@ add_filter ("pre_option_default_role", "ws_plugin__s2member_force_default_role")
|
|
| 42 |
add_filter ("pre_option_users_can_register", "ws_plugin__s2member_check_register_access");
|
| 43 |
add_action ("user_register", "ws_plugin__s2member_configure_user_registration");
|
| 44 |
add_action ("register_form", "ws_plugin__s2member_custom_registration_fields");
|
|
|
|
| 45 |
/**/
|
| 46 |
add_action ("wp_login", "ws_plugin__s2member_login_redirect");
|
| 47 |
add_action ("login_head", "ws_plugin__s2member_login_header_styles");
|
| 42 |
add_filter ("pre_option_users_can_register", "ws_plugin__s2member_check_register_access");
|
| 43 |
add_action ("user_register", "ws_plugin__s2member_configure_user_registration");
|
| 44 |
add_action ("register_form", "ws_plugin__s2member_custom_registration_fields");
|
| 45 |
+
add_action ("bp_before_registration_submit_buttons", "ws_plugin__s2member_opt_in_4bp");
|
| 46 |
/**/
|
| 47 |
add_action ("wp_login", "ws_plugin__s2member_login_redirect");
|
| 48 |
add_action ("login_head", "ws_plugin__s2member_login_header_styles");
|
includes/menu-pages/api-ops.inc.php
CHANGED
|
@@ -118,8 +118,7 @@ echo '<li><code>%%user_last_name%% = The Last Name of the Member who registered
|
|
| 118 |
echo '<li><code>%%user_full_name%% = The Full Name ( First & Last ) of the Member who registered their Username</code></li>' . "\n";
|
| 119 |
echo '<li><code>%%user_email%% = The Email Address of the Member who registered their Username.</code></li>' . "\n";
|
| 120 |
echo '<li><code>%%user_login%% = The Username the Member selected during registration.</code></li>' . "\n";
|
| 121 |
-
echo '<li><code>%%user_pass%% =
|
| 122 |
-
'<em>See: s2Member -> General Options -> Custom Registration Fields.</em></code></li>' . "\n";
|
| 123 |
echo '</ul>' . "\n";
|
| 124 |
echo '<strong>Custom replacement codes can also be inserted using these instructions:</strong>' . "\n";
|
| 125 |
echo '<ul>' . "\n";
|
| 118 |
echo '<li><code>%%user_full_name%% = The Full Name ( First & Last ) of the Member who registered their Username</code></li>' . "\n";
|
| 119 |
echo '<li><code>%%user_email%% = The Email Address of the Member who registered their Username.</code></li>' . "\n";
|
| 120 |
echo '<li><code>%%user_login%% = The Username the Member selected during registration.</code></li>' . "\n";
|
| 121 |
+
echo '<li><code>%%user_pass%% = The Password selected or generated during registration.</code></li>' . "\n";
|
|
|
|
| 122 |
echo '</ul>' . "\n";
|
| 123 |
echo '<strong>Custom replacement codes can also be inserted using these instructions:</strong>' . "\n";
|
| 124 |
echo '<ul>' . "\n";
|
includes/menu-pages/els-ops.inc.php
CHANGED
|
@@ -254,6 +254,58 @@ echo '</div>' . "\n";
|
|
| 254 |
/**/
|
| 255 |
echo '</div>' . "\n";
|
| 256 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
echo '<div class="ws-menu-page-group" title="Other List Server Integration Methods">' . "\n";
|
| 258 |
/**/
|
| 259 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-other-lists-section">' . "\n";
|
| 254 |
/**/
|
| 255 |
echo '</div>' . "\n";
|
| 256 |
/**/
|
| 257 |
+
echo '<div class="ws-menu-page-group" title="Registration / Double Opt-In Box?">' . "\n";
|
| 258 |
+
/**/
|
| 259 |
+
echo '<div class="ws-menu-page-section ws-plugin--s2member-opt-in-section">' . "\n";
|
| 260 |
+
echo '<h3>Double Opt-In Checkbox Field ( optional )</h3>' . "\n";
|
| 261 |
+
echo '<p>A Double Opt-In Checkbox will ONLY be displayed, if you\'ve integrated one <em>or more</em> List Servers ( in the sections above ).' . ((defined ("BP_VERSION")) ? ' With BuddyPress installed, the Checkbox will only be displayed if your BuddyPress theme supports <code>do_action("bp_before_registration_submit_buttons")</code>. Almost all BuddyPress themes support this. If yours does not, you can add it in.' : '') . '</p>' . "\n";
|
| 262 |
+
/**/
|
| 263 |
+
echo '<table class="form-table">' . "\n";
|
| 264 |
+
echo '<tbody>' . "\n";
|
| 265 |
+
echo '<tr class="ws-plugin--s2member-custom-reg-opt-in-label-row"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"]) ? ' style="display:none;"' : '') . '>' . "\n";
|
| 266 |
+
/**/
|
| 267 |
+
echo '<th>' . "\n";
|
| 268 |
+
echo '<label for="ws-plugin--s2member-custom-reg-opt-in-label">' . "\n";
|
| 269 |
+
echo 'Double Opt-In Checkbox Label:' . "\n";
|
| 270 |
+
echo '</label>' . "\n";
|
| 271 |
+
echo '</th>' . "\n";
|
| 272 |
+
/**/
|
| 273 |
+
echo '</tr>' . "\n";
|
| 274 |
+
echo '<tr class="ws-plugin--s2member-custom-reg-opt-in-label-row"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"]) ? ' style="display:none;"' : '') . '>' . "\n";
|
| 275 |
+
/**/
|
| 276 |
+
echo '<td>' . "\n";
|
| 277 |
+
echo '<input type="text" name="ws_plugin__s2member_custom_reg_opt_in_label" id="ws-plugin--s2member-custom-reg-opt-in-label" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"]) . '" /><br />' . "\n";
|
| 278 |
+
echo 'Example: <code><img src="' . $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] . '/images/' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1) ? 'checked' : 'unchecked') . '.png" class="ws-plugin--s2member-custom-reg-opt-in-label-prev-img ws-menu-page-img-16" style="vertical-align:middle;" alt="" /> Your Label will appear next to a Checkbox.</code>' . "\n";
|
| 279 |
+
echo '</td>' . "\n";
|
| 280 |
+
/**/
|
| 281 |
+
echo '</tr>' . "\n";
|
| 282 |
+
echo '<tr>' . "\n";
|
| 283 |
+
/**/
|
| 284 |
+
echo '<th>' . "\n";
|
| 285 |
+
echo '<label for="ws-plugin--s2member-custom-reg-opt-in">' . "\n";
|
| 286 |
+
echo 'Require Double Opt-In Checkbox?' . "\n";
|
| 287 |
+
echo '</label>' . "\n";
|
| 288 |
+
echo '</th>' . "\n";
|
| 289 |
+
/**/
|
| 290 |
+
echo '</tr>' . "\n";
|
| 291 |
+
echo '<tr>' . "\n";
|
| 292 |
+
/**/
|
| 293 |
+
echo '<td>' . "\n";
|
| 294 |
+
echo '<select name="ws_plugin__s2member_custom_reg_opt_in" id="ws-plugin--s2member-custom-reg-opt-in">' . "\n";
|
| 295 |
+
echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1) ? ' selected="selected"' : '') . '>Yes ( the Box MUST be checked — checked by default )</option>' . "\n";
|
| 296 |
+
echo '<option value="2"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 2) ? ' selected="selected"' : '') . '>Yes ( the Box MUST be checked — unchecked by default )</option>' . "\n";
|
| 297 |
+
echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"]) ? ' selected="selected"' : '') . '>No ( disable — do NOT display or require the Checkbox )</option>' . "\n";
|
| 298 |
+
echo '</select><br />' . "\n";
|
| 299 |
+
echo 'An email confirmation will NOT be sent to the User, unless the Box is checked, or you\'ve disabled the Box; by choosing <code>No</code>.' . "\n";
|
| 300 |
+
echo '</td>' . "\n";
|
| 301 |
+
/**/
|
| 302 |
+
echo '</tr>' . "\n";
|
| 303 |
+
echo '</tbody>' . "\n";
|
| 304 |
+
echo '</table>' . "\n";
|
| 305 |
+
echo '</div>' . "\n";
|
| 306 |
+
/**/
|
| 307 |
+
echo '</div>' . "\n";
|
| 308 |
+
/**/
|
| 309 |
echo '<div class="ws-menu-page-group" title="Other List Server Integration Methods">' . "\n";
|
| 310 |
/**/
|
| 311 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-other-lists-section">' . "\n";
|
includes/menu-pages/menu-pages.js
CHANGED
|
@@ -83,7 +83,7 @@ jQuery(document).ready (function($)
|
|
| 83 |
/**/
|
| 84 |
$('input.ws-menu-page-media-btn').filter (function() /* Only those that have a rel attribute. */
|
| 85 |
{
|
| 86 |
-
return($(this).attr ('rel')) ? true : false; /* Must have rel targeting an input id. */
|
| 87 |
})/**/
|
| 88 |
.click (function() /* Attach click events to media buttons with send_to_editor(). */
|
| 89 |
{
|
|
@@ -164,6 +164,25 @@ jQuery(document).ready (function($)
|
|
| 164 |
};
|
| 165 |
}
|
| 166 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
else if (location.href.match (/page\=ws-plugin--s2member-buttons/))
|
| 168 |
{
|
| 169 |
$('select#ws-plugin--s2member-level1-term, select#ws-plugin--s2member-level2-term, select#ws-plugin--s2member-level3-term, select#ws-plugin--s2member-level4-term, select#ws-plugin--s2member-modification-term').change (function()
|
| 83 |
/**/
|
| 84 |
$('input.ws-menu-page-media-btn').filter (function() /* Only those that have a rel attribute. */
|
| 85 |
{
|
| 86 |
+
return ($(this).attr ('rel')) ? true : false; /* Must have rel targeting an input id. */
|
| 87 |
})/**/
|
| 88 |
.click (function() /* Attach click events to media buttons with send_to_editor(). */
|
| 89 |
{
|
| 164 |
};
|
| 165 |
}
|
| 166 |
/**/
|
| 167 |
+
else if (location.href.match (/page\=ws-plugin--s2member-els-ops/))
|
| 168 |
+
{
|
| 169 |
+
$('select#ws-plugin--s2member-custom-reg-opt-in').change (function()
|
| 170 |
+
{
|
| 171 |
+
var $this = $(this), val = $this.val ();
|
| 172 |
+
var $rows = $('tr.ws-plugin--s2member-custom-reg-opt-in-label-row');
|
| 173 |
+
var $prevImg = $('img.ws-plugin--s2member-custom-reg-opt-in-label-prev-img');
|
| 174 |
+
/**/
|
| 175 |
+
if (val <= 0) /* Checkbox disabled. */
|
| 176 |
+
$rows.css ('display', 'none'), $prevImg.attr ('src', $prevImg.attr ('src').replace (/\/checked\.png$/, '/unchecked.png'));
|
| 177 |
+
/**/
|
| 178 |
+
else if (val == 1) /* Enabled, checked by default. */
|
| 179 |
+
$rows.css ('display', ''), $prevImg.attr ('src', $prevImg.attr ('src').replace (/\/unchecked\.png$/, '/checked.png'));
|
| 180 |
+
/**/
|
| 181 |
+
else if (val == 2) /* Enabled, unchecked by default. */
|
| 182 |
+
$rows.css ('display', ''), $prevImg.attr ('src', $prevImg.attr ('src').replace (/\/checked\.png$/, '/unchecked.png'));
|
| 183 |
+
});
|
| 184 |
+
}
|
| 185 |
+
/**/
|
| 186 |
else if (location.href.match (/page\=ws-plugin--s2member-buttons/))
|
| 187 |
{
|
| 188 |
$('select#ws-plugin--s2member-level1-term, select#ws-plugin--s2member-level2-term, select#ws-plugin--s2member-level3-term, select#ws-plugin--s2member-level4-term, select#ws-plugin--s2member-modification-term').change (function()
|
includes/syscon.inc.php
CHANGED
|
@@ -72,6 +72,8 @@ function ws_plugin__s2member_configure_options_and_their_defaults ($options = FA
|
|
| 72 |
/**/
|
| 73 |
"custom_reg_fields" => "", /* A comma delimited list of custom fields to collect/use. */
|
| 74 |
"custom_reg_password" => "0", /* Allow users to register their own custom password? */
|
|
|
|
|
|
|
| 75 |
/**/
|
| 76 |
"allow_subscribers_in" => "0", /* Allow subscribers to access the login_welcome_page? */
|
| 77 |
"force_admin_lockouts" => "0", /* Redirects admin pages/profile to the login_welcome_page. */
|
|
@@ -221,6 +223,12 @@ function ws_plugin__s2member_configure_options_and_their_defaults ($options = FA
|
|
| 221 |
else if ($key === "custom_reg_password" && (!is_string ($value) || !is_numeric ($value)))
|
| 222 |
$value = $default_options[$key];
|
| 223 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
else if ($key === "allow_subscribers_in" && (!is_string ($value) || !is_numeric ($value)))
|
| 225 |
$value = $default_options[$key];
|
| 226 |
/**/
|
| 72 |
/**/
|
| 73 |
"custom_reg_fields" => "", /* A comma delimited list of custom fields to collect/use. */
|
| 74 |
"custom_reg_password" => "0", /* Allow users to register their own custom password? */
|
| 75 |
+
"custom_reg_opt_in" => "1", /* Use a double opt-in checkbox on the registration form? */
|
| 76 |
+
"custom_reg_opt_in_label" => "Yes, I want to receive updates via email.", /* Label. */
|
| 77 |
/**/
|
| 78 |
"allow_subscribers_in" => "0", /* Allow subscribers to access the login_welcome_page? */
|
| 79 |
"force_admin_lockouts" => "0", /* Redirects admin pages/profile to the login_welcome_page. */
|
| 223 |
else if ($key === "custom_reg_password" && (!is_string ($value) || !is_numeric ($value)))
|
| 224 |
$value = $default_options[$key];
|
| 225 |
/**/
|
| 226 |
+
else if ($key === "custom_reg_opt_in" && (!is_string ($value) || !is_numeric ($value)))
|
| 227 |
+
$value = $default_options[$key];
|
| 228 |
+
/**/
|
| 229 |
+
else if ($key === "custom_reg_opt_in_label" && (!is_string ($value) || !strlen ($value)))
|
| 230 |
+
$value = $default_options[$key];
|
| 231 |
+
/**/
|
| 232 |
else if ($key === "allow_subscribers_in" && (!is_string ($value) || !is_numeric ($value)))
|
| 233 |
$value = $default_options[$key];
|
| 234 |
/**/
|
readme.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
| 2 |
|
| 3 |
-
Version: 2.9.
|
| 4 |
-
Stable tag: 2.9.
|
| 5 |
Framework: WS-P-2.1
|
| 6 |
|
| 7 |
WordPress Compatible: yes
|
|
@@ -101,6 +101,12 @@ Archived releases of s2Member are maintained [here](http://wordpress.org/extend/
|
|
| 101 |
|
| 102 |
== Changelog ==
|
| 103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
= 2.9.3 =
|
| 105 |
* Documentation fix. `s2Member -> API Scripting -> Advanced Conditionals -> Example #5` contained a PHP syntax error. This has been corrected in v2.9.3.
|
| 106 |
* Bug fix. Infinite redirection loop on Download Limit Exceeded Page. This was possible under certain circumstances, based on configuration. Resolved in v2.9.3.
|
| 1 |
=== s2Member ( Membership w/ PayPal® Integration ) also works w/ BuddyPress ===
|
| 2 |
|
| 3 |
+
Version: 2.9.4
|
| 4 |
+
Stable tag: 2.9.4
|
| 5 |
Framework: WS-P-2.1
|
| 6 |
|
| 7 |
WordPress Compatible: yes
|
| 101 |
|
| 102 |
== Changelog ==
|
| 103 |
|
| 104 |
+
= 2.9.4 =
|
| 105 |
+
* Bug fix in %%current_user_login%% for Special Redirection URLs. Was not processing correctly. This has been resolved in 2.9.4+.
|
| 106 |
+
* Bug fix in AWeber®/MailChimp® integration for Free Subscriber registrations. Specifically, those originating from the front-end.
|
| 107 |
+
* Extra security hardening. `MCRYPT_RIJNDAEL_256 / CBC` now being utilized in Registration Access Cookies.
|
| 108 |
+
* New feature. s2Member now supports a custom Double Opt-In Checkbox for its List Server integrations. See `s2Member -> API List Servers -> Double Opt-In`. This is also compatible with BuddyPress registration forms.
|
| 109 |
+
|
| 110 |
= 2.9.3 =
|
| 111 |
* Documentation fix. `s2Member -> API Scripting -> Advanced Conditionals -> Example #5` contained a PHP syntax error. This has been corrected in v2.9.3.
|
| 112 |
* Bug fix. Infinite redirection loop on Download Limit Exceeded Page. This was possible under certain circumstances, based on configuration. Resolved in v2.9.3.
|
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: 2.9.
|
| 13 |
-
Stable tag: 2.9.
|
| 14 |
Framework: WS-P-2.1
|
| 15 |
|
| 16 |
WordPress Compatible: yes
|
| 9 |
If not, see: <http://www.gnu.org/licenses/>.
|
| 10 |
*/
|
| 11 |
/*
|
| 12 |
+
Version: 2.9.4
|
| 13 |
+
Stable tag: 2.9.4
|
| 14 |
Framework: WS-P-2.1
|
| 15 |
|
| 16 |
WordPress Compatible: yes
|
