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

Version Description

= v121023 = Maintenance release. Upgrade immediately.

Download this release

Release Info

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

Code changes from version 120703 to 121023

includes/classes/paypal-utilities.inc.php CHANGED
@@ -67,13 +67,13 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
67
if(!empty($postvars["charset"]) && function_exists("mb_convert_encoding"))
68
{
69
foreach($postvars as &$value)
70
- $value = @mb_convert_encoding($value, "UTF-8", $postvars["charset"]);
71
}
72
/**/
73
return apply_filters("ws_plugin__s2member_paypal_postvars", $postvars, get_defined_vars());
74
}
75
else /* Nope. */
76
- return false;
77
}
78
else if(!empty($_REQUEST) && is_array($postvars = stripslashes_deep($_REQUEST)))
79
{
@@ -89,7 +89,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
89
if(!empty($postvars["charset"]) && function_exists("mb_convert_encoding"))
90
{
91
foreach($postvars as &$value)
92
- $value = @mb_convert_encoding($value, "UTF-8", $postvars["charset"]);
93
}
94
/**/
95
$endpoint = ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com";
@@ -104,10 +104,10 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
104
return apply_filters("ws_plugin__s2member_paypal_postvars", $postvars, get_defined_vars());
105
/**/
106
else /* Nope. */
107
- return false;
108
}
109
else /* Nope. */
110
- return false;
111
}
112
else /* Else a custom conditional has been applied by Filters. */
113
{
@@ -136,7 +136,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
136
$key = md5(c_ws_plugin__s2member_utils_encryption::xencrypt($current_blog->domain.$current_blog->path, false, false));
137
/**/
138
else /* Else it's a standard Proxy Key; not on a Multisite Network, or not on the Main Site anyway. */
139
- $key = md5(c_ws_plugin__s2member_utils_encryption::xencrypt(preg_replace("/\:[0-9]+#x2F;", "", $_SERVER["HTTP_HOST"]), false, false));
140
/**/
141
return apply_filters("ws_plugin__s2member_paypal_proxy_key_gen", $key, get_defined_vars());
142
}
@@ -186,7 +186,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
186
$response["__error"] = sprintf(_x('Error #%1$s. %2$s. %3$s.', "s2member-front", "s2member"), $response["L_ERRORCODE0"], rtrim($response["L_SHORTMESSAGE0"], "."), rtrim($response["L_LONGMESSAGE0"], "."));
187
/**/
188
else /* Else, generate an error messsage - so something is reported back to the Customer. */
189
- $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
190
}
191
/**/
192
$logv = c_ws_plugin__s2member_utilities::ver_details();
@@ -286,7 +286,8 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
286
/* translators: Exclude `%2$s`. These are English details returned by PayPal®. Replace `%2$s` with: `Unable to process, please try again`, or something to that affect. Or, if you prefer, you could Filter ``$response["__error"]`` with `ws_plugin__s2member_paypal_payflow_api_response`. */
287
$response["__error"] = sprintf(_x('Error #%1$s. %2$s.', "s2member-front", "s2member"), $response["RESULT"], rtrim($response["RESPMSG"], "."));
288
/**/
289
- else $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
290
}
291
else if(isset($response["TRXRESULT"]) && $response["TRXRESULT"] !== "0")
292
{
@@ -294,7 +295,8 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
294
/* translators: Exclude `%2$s`. These are English details returned by PayPal®. Replace `%2$s` with: `Unable to process, please try again`, or something to that affect. Or, if you prefer, you could Filter ``$response["__error"]`` with `ws_plugin__s2member_paypal_payflow_api_response`. */
295
$response["__error"] = sprintf(_x('Error #%1$s. %2$s.', "s2member-front", "s2member"), $response["TRXRESULT"], rtrim($response["TRXRESPMSG"], "."));
296
/**/
297
- else $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
298
}
299
/**/
300
$logv = c_ws_plugin__s2member_utilities::ver_details();
@@ -565,7 +567,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
565
return apply_filters("ws_plugin__s2member_paypal_pro_period1", $period1, get_defined_vars());
566
}
567
else /* Default. */
568
- return apply_filters("ws_plugin__s2member_paypal_pro_period1", $default, get_defined_vars());
569
}
570
/**
571
* Get `period3` from either an array with `PROFILEREFERENCE|rp_invoice_id|period3`, or use an existing string.
@@ -621,7 +623,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
621
return apply_filters("ws_plugin__s2member_paypal_pro_period3", $period3, get_defined_vars());
622
}
623
else /* Default. */
624
- return apply_filters("ws_plugin__s2member_paypal_pro_period3", $default, get_defined_vars());
625
}
626
}
627
}
67
if(!empty($postvars["charset"]) && function_exists("mb_convert_encoding"))
68
{
69
foreach($postvars as &$value)
70
+ $value = @mb_convert_encoding($value, "UTF-8", (($postvars["charset"] === "gb2312") ? "GBK" : $postvars["charset"]));
71
}
72
/**/
73
return apply_filters("ws_plugin__s2member_paypal_postvars", $postvars, get_defined_vars());
74
}
75
else /* Nope. */
76
+ return false;
77
}
78
else if(!empty($_REQUEST) && is_array($postvars = stripslashes_deep($_REQUEST)))
79
{
89
if(!empty($postvars["charset"]) && function_exists("mb_convert_encoding"))
90
{
91
foreach($postvars as &$value)
92
+ $value = @mb_convert_encoding($value, "UTF-8", (($postvars["charset"] === "gb2312") ? "GBK" : $postvars["charset"]));
93
}
94
/**/
95
$endpoint = ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com";
104
return apply_filters("ws_plugin__s2member_paypal_postvars", $postvars, get_defined_vars());
105
/**/
106
else /* Nope. */
107
+ return false;
108
}
109
else /* Nope. */
110
+ return false;
111
}
112
else /* Else a custom conditional has been applied by Filters. */
113
{
136
$key = md5(c_ws_plugin__s2member_utils_encryption::xencrypt($current_blog->domain.$current_blog->path, false, false));
137
/**/
138
else /* Else it's a standard Proxy Key; not on a Multisite Network, or not on the Main Site anyway. */
139
+ $key = md5(c_ws_plugin__s2member_utils_encryption::xencrypt(preg_replace("/\:[0-9]+#x2F;", "", $_SERVER["HTTP_HOST"]), false, false));
140
/**/
141
return apply_filters("ws_plugin__s2member_paypal_proxy_key_gen", $key, get_defined_vars());
142
}
186
$response["__error"] = sprintf(_x('Error #%1$s. %2$s. %3$s.', "s2member-front", "s2member"), $response["L_ERRORCODE0"], rtrim($response["L_SHORTMESSAGE0"], "."), rtrim($response["L_LONGMESSAGE0"], "."));
187
/**/
188
else /* Else, generate an error messsage - so something is reported back to the Customer. */
189
+ $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
190
}
191
/**/
192
$logv = c_ws_plugin__s2member_utilities::ver_details();
286
/* translators: Exclude `%2$s`. These are English details returned by PayPal®. Replace `%2$s` with: `Unable to process, please try again`, or something to that affect. Or, if you prefer, you could Filter ``$response["__error"]`` with `ws_plugin__s2member_paypal_payflow_api_response`. */
287
$response["__error"] = sprintf(_x('Error #%1$s. %2$s.', "s2member-front", "s2member"), $response["RESULT"], rtrim($response["RESPMSG"], "."));
288
/**/
289
+ else
290
+ $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
291
}
292
else if(isset($response["TRXRESULT"]) && $response["TRXRESULT"] !== "0")
293
{
295
/* translators: Exclude `%2$s`. These are English details returned by PayPal®. Replace `%2$s` with: `Unable to process, please try again`, or something to that affect. Or, if you prefer, you could Filter ``$response["__error"]`` with `ws_plugin__s2member_paypal_payflow_api_response`. */
296
$response["__error"] = sprintf(_x('Error #%1$s. %2$s.', "s2member-front", "s2member"), $response["TRXRESULT"], rtrim($response["TRXRESPMSG"], "."));
297
/**/
298
+ else
299
+ $response["__error"] = _x("Error. Please contact Support for assistance.", "s2member-front", "s2member");
300
}
301
/**/
302
$logv = c_ws_plugin__s2member_utilities::ver_details();
567
return apply_filters("ws_plugin__s2member_paypal_pro_period1", $period1, get_defined_vars());
568
}
569
else /* Default. */
570
+ return apply_filters("ws_plugin__s2member_paypal_pro_period1", $default, get_defined_vars());
571
}
572
/**
573
* Get `period3` from either an array with `PROFILEREFERENCE|rp_invoice_id|period3`, or use an existing string.
623
return apply_filters("ws_plugin__s2member_paypal_pro_period3", $period3, get_defined_vars());
624
}
625
else /* Default. */
626
+ return apply_filters("ws_plugin__s2member_paypal_pro_period3", $default, get_defined_vars());
627
}
628
}
629
}
includes/classes/users-list-in.inc.php CHANGED
@@ -169,7 +169,7 @@ if (!class_exists ("c_ws_plugin__s2member_users_list_in"))
169
echo '<tr>' . "\n";
170
$auto_eot_time = get_user_option ("s2member_auto_eot_time", $user_id);
171
$auto_eot_time = ($auto_eot_time) ? date ("D M j, Y g:i a T", $auto_eot_time) : "";
172
- echo '<th><label for="ws-plugin--s2member-profile-s2member-auto-eot-time">Automatic EOT Time:</label> <a href="#" onclick="alert(\'EOT = End Of Term. ( i.e. Account Expiration / Termination. ).\\n\\nIf you leave this empty, s2Member will configure an EOT Time automatically, based on the paid Subscription associated with this account. In other words, if a paid Subscription expires, is cancelled, terminated, refunded, reversed, or charged back to you; s2Member will deal with the EOT automatically.\\n\\nThat being said, if you would rather take control over this, you can. If you type in a date manually, s2Member will obey the Auto-EOT Time that you\\\'ve given, no matter what. In other words, you can force certain Members to expire automatically, at a time that you specify. s2Member will obey.\\n\\nValid formats for Automatic EOT Time:\\n\\nmm/dd/yyyy\\nyyyy-mm-dd\\n+1 year\\n+2 weeks\\n+2 months\\n+10 minutes\\nnext thursday\\ntomorrow\\ntoday\\n\\n* anything compatible with PHP\\\'s strtotime() function.\'); return false;" tabindex="-1">[?]</a>' . (($auto_eot_time) ? '<br /><small>( <a href="http://www.world-time-zones.org/zones/greenwich-mean-time.htm" target="_blank" rel="external">Universal Time / GMT</a> )</small>' : '') . '</th>' . "\n";
173
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_auto_eot_time" id="ws-plugin--s2member-profile-s2member-auto-eot-time" value="' . format_to_edit ($auto_eot_time) . '" class="regular-text" /></td>' . "\n";
174
echo '</tr>' . "\n";
175
/**/
169
echo '<tr>' . "\n";
170
$auto_eot_time = get_user_option ("s2member_auto_eot_time", $user_id);
171
$auto_eot_time = ($auto_eot_time) ? date ("D M j, Y g:i a T", $auto_eot_time) : "";
172
+ echo '<th><label for="ws-plugin--s2member-profile-s2member-auto-eot-time">Automatic EOT Time:</label> <a href="#" onclick="alert(\'EOT = End Of Term. ( i.e. Account Expiration / Termination. ).\\n\\nIf you leave this empty, s2Member will configure an EOT Time automatically, based on the paid Subscription associated with this account. In other words, if a paid Subscription expires, is cancelled, terminated, refunded, reversed, or charged back to you; s2Member will deal with the EOT automatically.\\n\\nThat being said, if you would rather take control over this, you can. If you type in a date manually, s2Member will obey the Auto-EOT Time that you\\\'ve given, no matter what. In other words, you can force certain Members to expire automatically, at a time that you specify. s2Member will obey.\\n\\nValid formats for Automatic EOT Time:\\n\\nmm/dd/yyyy\\nyyyy-mm-dd\\n+1 year\\n+2 weeks\\n+2 months\\n+10 minutes\\nnext thursday\\ntomorrow\\ntoday\\n\\n* anything compatible with PHP\\\'s strtotime() function.\'); return false;" tabindex="-1">[?]</a>' . (($auto_eot_time) ? '<br /><small>( <a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time" target="_blank" rel="external">Universal Time / GMT</a> )</small>' : '') . '</th>' . "\n";
173
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_auto_eot_time" id="ws-plugin--s2member-profile-s2member-auto-eot-time" value="' . format_to_edit ($auto_eot_time) . '" class="regular-text" /></td>' . "\n";
174
echo '</tr>' . "\n";
175
/**/
includes/classes/utils-conds.inc.php CHANGED
@@ -121,7 +121,8 @@ if(!class_exists("c_ws_plugin__s2member_utils_conds"))
121
/**/
122
if(empty($parse["host"]) || strcasecmp($parse["host"], c_ws_plugin__s2member_utils_urls::parse_url(site_url(), PHP_URL_HOST)) === 0)
123
if($parse["path"] === "/" || rtrim($parse["path"], "/") === rtrim(c_ws_plugin__s2member_utils_urls::parse_url(site_url(), PHP_URL_PATH), "/"))
124
- return true;
125
}
126
return false; /* Default return false. */
127
}
121
/**/
122
if(empty($parse["host"]) || strcasecmp($parse["host"], c_ws_plugin__s2member_utils_urls::parse_url(site_url(), PHP_URL_HOST)) === 0)
123
if($parse["path"] === "/" || rtrim($parse["path"], "/") === rtrim(c_ws_plugin__s2member_utils_urls::parse_url(site_url(), PHP_URL_PATH), "/"))
124
+ if(get_option("permalink_structure") || (empty($_GET["post_id"]) && empty($_GET["page_id"]) && empty($_GET["p"])))
125
+ return true;
126
}
127
return false; /* Default return false. */
128
}
includes/classes/utils-html.inc.php CHANGED
@@ -55,9 +55,8 @@ if (!class_exists ("c_ws_plugin__s2member_utils_html"))
55
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . "\n";
56
/**/
57
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-includes/js/jquery/jquery.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
58
- echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-includes/js/l10n.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
59
/**/
60
- echo '<script type="text/javascript">' . "var pwsL10n = {empty: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strength indicator", "s2member-front", "s2member")) . "', short: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Very weak", "s2member-front", "s2member")) . "', bad: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Weak", "s2member-front", "s2member")) . "', good: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Medium", "s2member-front", "s2member")) . "', strong: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strong", "s2member-front", "s2member")) . "', mismatch: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Mismatch", "s2member-front", "s2member")) . "'}; try{convertEntities(pwsL10n);}catch(e){};</script>" . "\n";
61
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-admin/js/password-strength-meter.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
62
/**/
63
echo '<script type="text/javascript" src="' . esc_attr ($s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode (WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5) . "&amp;qcABC=1&amp;ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '"></script>' . "\n";
55
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . "\n";
56
/**/
57
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-includes/js/jquery/jquery.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
58
/**/
59
+ echo '<script type="text/javascript">' . "var pwsL10n = {empty: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strength indicator", "s2member-front", "s2member")) . "', short: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Very weak", "s2member-front", "s2member")) . "', bad: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Weak", "s2member-front", "s2member")) . "', good: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Medium", "s2member-front", "s2member")) . "', strong: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strong", "s2member-front", "s2member")) . "', mismatch: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Mismatch", "s2member-front", "s2member")) . "'};</script>" . "\n";
60
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-admin/js/password-strength-meter.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
61
/**/
62
echo '<script type="text/javascript" src="' . esc_attr ($s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode (WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5) . "&amp;qcABC=1&amp;ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '"></script>' . "\n";
includes/classes/utils-strings.inc.php CHANGED
@@ -57,13 +57,14 @@ if(!class_exists("c_ws_plugin__s2member_utils_strings"))
57
*
58
* @param str $string Input string.
59
* @param int $times Number of escapes. Defaults to 1.
60
* @return str Output string after double quotes are escaped.
61
*/
62
- public static function esc_dq($string = FALSE, $times = FALSE)
63
{
64
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
65
/**/
66
- return str_replace('"', str_repeat("\\", $times).'"', (string)$string);
67
}
68
/**
69
* Escapes single quotes.
57
*
58
* @param str $string Input string.
59
* @param int $times Number of escapes. Defaults to 1.
60
+ * @param str $escape_char The character to be used in escapes.
61
* @return str Output string after double quotes are escaped.
62
*/
63
+ public static function esc_dq($string = FALSE, $times = FALSE, $escape_char = "\\")
64
{
65
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
66
/**/
67
+ return str_replace('"', str_repeat($escape_char, $times).'"', (string)$string);
68
}
69
/**
70
* Escapes single quotes.
includes/classes/utils-urls.inc.php CHANGED
@@ -195,6 +195,8 @@ if(!class_exists("c_ws_plugin__s2member_utils_urls"))
195
$args = /* Force array, and disable SSL verification. */ (!is_array($args)) ? array(): $args;
196
$args["sslverify"] = (!isset($args["sslverify"])) ? /* Off. */ false : $args["sslverify"];
197
/**/
198
if((is_array($post_vars) || is_string($post_vars)) && !empty($post_vars))
199
$args = array_merge($args, array("method" => "POST", "body" => $post_vars));
200
/**/
195
$args = /* Force array, and disable SSL verification. */ (!is_array($args)) ? array(): $args;
196
$args["sslverify"] = (!isset($args["sslverify"])) ? /* Off. */ false : $args["sslverify"];
197
/**/
198
+ $args["httpversion"] = (!isset($args["httpversion"])) ? "1.1" : $args["httpversion"];
199
+ /**/
200
if((is_array($post_vars) || is_string($post_vars)) && !empty($post_vars))
201
$args = array_merge($args, array("method" => "POST", "body" => $post_vars));
202
/**/
includes/functions/api-functions.inc.php CHANGED
@@ -14,7 +14,7 @@
14
* @package s2Member\API_Functions
15
* @since 3.5
16
*/
17
- if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
18
exit("Do not access this file directly.");
19
/**
20
* Conditional to determine if the current User is NOT logged in.
@@ -49,11 +49,11 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
49
*
50
* @see http://codex.wordpress.org/Function_Reference/is_user_logged_in is_user_logged_in()
51
*/
52
- if (!function_exists ("is_user_not_logged_in"))
53
{
54
- function is_user_not_logged_in ()
55
{
56
- return (!is_user_logged_in ());
57
}
58
}
59
/**
@@ -127,19 +127,19 @@ if (!function_exists ("is_user_not_logged_in"))
127
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
128
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
129
*/
130
- if (!function_exists ("user_is"))
131
{
132
- function user_is ($id = FALSE, $role = FALSE)
133
{
134
- $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role);
135
/**/
136
- if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ($id))
137
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
138
/**/
139
- else if (is_multisite () && is_super_admin ($id)) /* Else return false for Super Admins here. */
140
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
141
/**/
142
- return user_can ($id, $role);
143
}
144
}
145
/**
@@ -212,11 +212,11 @@ if (!function_exists ("user_is"))
212
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
213
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
214
*/
215
- if (!function_exists ("user_is_not"))
216
{
217
- function user_is_not ($id = FALSE, $role = FALSE)
218
{
219
- return (!user_is ($id, $role));
220
}
221
}
222
/**
@@ -289,19 +289,19 @@ if (!function_exists ("user_is_not"))
289
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
290
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
291
*/
292
- if (!function_exists ("current_user_is"))
293
{
294
- function current_user_is ($role = FALSE)
295
{
296
- $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role);
297
/**/
298
- if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ())
299
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
300
/**/
301
- else if (is_multisite () && is_super_admin ()) /* Else return false for Super Admins here. */
302
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
303
/**/
304
- return current_user_can ($role);
305
}
306
}
307
/**
@@ -373,11 +373,11 @@ if (!function_exists ("current_user_is"))
373
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
374
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
375
*/
376
- if (!function_exists ("current_user_is_not"))
377
{
378
- function current_user_is_not ($role = FALSE)
379
{
380
- return (!current_user_is ($role));
381
}
382
}
383
/**
@@ -456,19 +456,19 @@ if (!function_exists ("current_user_is_not"))
456
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
457
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
458
*/
459
- if (!function_exists ("current_user_is_for_blog"))
460
{
461
- function current_user_is_for_blog ($blog_id = FALSE, $role = FALSE)
462
{
463
- $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role);
464
/**/
465
- if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ())
466
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
467
/**/
468
- else if (is_multisite () && is_super_admin ()) /* Else return false for Super Admins here. */
469
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
470
/**/
471
- return current_user_can_for_blog ($blog_id, $role);
472
}
473
}
474
/**
@@ -535,11 +535,11 @@ if (!function_exists ("current_user_is_for_blog"))
535
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
536
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
537
*/
538
- if (!function_exists ("current_user_is_not_for_blog"))
539
{
540
- function current_user_is_not_for_blog ($blog_id = FALSE, $role = FALSE)
541
{
542
- return (!current_user_is_for_blog ($blog_id, $role));
543
}
544
}
545
/**
@@ -604,11 +604,11 @@ if (!function_exists ("current_user_is_not_for_blog"))
604
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
605
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
606
*/
607
- if (!function_exists ("user_cannot"))
608
{
609
- function user_cannot ($id = FALSE, $capability = FALSE)
610
{
611
- return (!user_can ($id, $capability));
612
}
613
}
614
/**
@@ -673,11 +673,11 @@ if (!function_exists ("user_cannot"))
673
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
674
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
675
*/
676
- if (!function_exists ("current_user_cannot"))
677
{
678
- function current_user_cannot ($capability = FALSE)
679
{
680
- return (!current_user_can ($capability));
681
}
682
}
683
/**
@@ -743,11 +743,11 @@ if (!function_exists ("current_user_cannot"))
743
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
744
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
745
*/
746
- if (!function_exists ("current_user_cannot_for_blog"))
747
{
748
- function current_user_cannot_for_blog ($blog_id = FALSE, $capability = FALSE)
749
{
750
- return (!current_user_can_for_blog ($blog_id, $capability));
751
}
752
}
753
/**
@@ -852,28 +852,28 @@ if (!function_exists ("current_user_cannot_for_blog"))
852
* @see s2Member\API_Functions\attach_s2member_query_filters()
853
* @see s2Member\API_Functions\detach_s2member_query_filters()
854
*/
855
- if (!function_exists ("is_protected_by_s2member"))
856
{
857
- function is_protected_by_s2member ($what = FALSE, $type = FALSE, $check_user = FALSE)
858
{
859
global $post; /* Global reference to $post in The Loop. */
860
/**/
861
- $what = ($what) ? $what : ((is_object ($post) && $post->ID) ? $post->ID : false);
862
- $type = ($type) ? strtolower ($type) : "singular";
863
/**/
864
- if ($type === "category" && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($what, $check_user)))
865
return $array; /* A non-empty array with ["s2member_level_req"]. */
866
/**/
867
- else if ($type === "tag" && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($what, $check_user)))
868
return $array; /* A non-empty array with ["s2member_level_req"]. */
869
/**/
870
- else if (($type === "post" || $type === "singular") && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($what, $check_user)))
871
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
872
/**/
873
- else if (($type === "page" || $type === "singular") && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($what, $check_user)))
874
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
875
/**/
876
- else if ($type === "uri" && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($what, $check_user)))
877
return $array; /* A non-empty array with ["s2member_level_req"]. */
878
/**/
879
return false;
@@ -974,28 +974,28 @@ if (!function_exists ("is_protected_by_s2member"))
974
* @see s2Member\API_Functions\attach_s2member_query_filters()
975
* @see s2Member\API_Functions\detach_s2member_query_filters()
976
*/
977
- if (!function_exists ("is_permitted_by_s2member"))
978
{
979
- function is_permitted_by_s2member ($what = FALSE, $type = FALSE)
980
{
981
global $post; /* Global reference to $post in The Loop. */
982
/**/
983
- $what = ($what) ? $what : ((is_object ($post) && $post->ID) ? $post->ID : false);
984
- $type = ($type) ? strtolower ($type) : "singular";
985
/**/
986
- if ($type === "category" && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($what, true))
987
return false;
988
/**/
989
- else if ($type === "tag" && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($what, true))
990
return false;
991
/**/
992
- else if (($type === "post" || $type === "singular") && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($what, true))
993
return false;
994
/**/
995
- else if (($type === "page" || $type === "singular") && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($what, true))
996
return false;
997
/**/
998
- else if ($type === "uri" && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($what, true))
999
return false;
1000
/**/
1001
return true;
@@ -1066,11 +1066,11 @@ if (!function_exists ("is_permitted_by_s2member"))
1066
* @see s2Member\API_Functions\attach_s2member_query_filters()
1067
* @see s2Member\API_Functions\detach_s2member_query_filters()
1068
*/
1069
- if (!function_exists ("is_category_protected_by_s2member"))
1070
{
1071
- function is_category_protected_by_s2member ($cat_id = FALSE, $check_user = FALSE)
1072
{
1073
- if ($cat_id && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($cat_id, $check_user)))
1074
return $array; /* A non-empty array with ["s2member_level_req"]. */
1075
/**/
1076
return false;
@@ -1134,11 +1134,11 @@ if (!function_exists ("is_category_protected_by_s2member"))
1134
* @see s2Member\API_Functions\attach_s2member_query_filters()
1135
* @see s2Member\API_Functions\detach_s2member_query_filters()
1136
*/
1137
- if (!function_exists ("is_category_permitted_by_s2member"))
1138
{
1139
- function is_category_permitted_by_s2member ($cat_id = FALSE)
1140
{
1141
- if ($cat_id && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($cat_id, true))
1142
return false;
1143
/**/
1144
return true;
@@ -1222,11 +1222,11 @@ if (!function_exists ("is_category_permitted_by_s2member"))
1222
* @see s2Member\API_Functions\attach_s2member_query_filters()
1223
* @see s2Member\API_Functions\detach_s2member_query_filters()
1224
*/
1225
- if (!function_exists ("is_tag_protected_by_s2member"))
1226
{
1227
- function is_tag_protected_by_s2member ($tag_id_slug_or_name = FALSE, $check_user = FALSE)
1228
{
1229
- if ($tag_id_slug_or_name && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($tag_id_slug_or_name, $check_user)))
1230
return $array; /* A non-empty array with ["s2member_level_req"]. */
1231
/**/
1232
return false;
@@ -1303,11 +1303,11 @@ if (!function_exists ("is_tag_protected_by_s2member"))
1303
* @see s2Member\API_Functions\attach_s2member_query_filters()
1304
* @see s2Member\API_Functions\detach_s2member_query_filters()
1305
*/
1306
- if (!function_exists ("is_tag_permitted_by_s2member"))
1307
{
1308
- function is_tag_permitted_by_s2member ($tag_id_slug_or_name = FALSE)
1309
{
1310
- if ($tag_id_slug_or_name && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($tag_id_slug_or_name, true))
1311
return false;
1312
/**/
1313
return true;
@@ -1378,11 +1378,11 @@ if (!function_exists ("is_tag_permitted_by_s2member"))
1378
* @see s2Member\API_Functions\attach_s2member_query_filters()
1379
* @see s2Member\API_Functions\detach_s2member_query_filters()
1380
*/
1381
- if (!function_exists ("is_post_protected_by_s2member"))
1382
{
1383
- function is_post_protected_by_s2member ($post_id = FALSE, $check_user = FALSE)
1384
{
1385
- if ($post_id && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($post_id, $check_user)))
1386
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
1387
/**/
1388
return false;
@@ -1446,11 +1446,11 @@ if (!function_exists ("is_post_protected_by_s2member"))
1446
* @see s2Member\API_Functions\attach_s2member_query_filters()
1447
* @see s2Member\API_Functions\detach_s2member_query_filters()
1448
*/
1449
- if (!function_exists ("is_post_permitted_by_s2member"))
1450
{
1451
- function is_post_permitted_by_s2member ($post_id = FALSE)
1452
{
1453
- if ($post_id && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($post_id, true))
1454
return false;
1455
/**/
1456
return true;
@@ -1521,11 +1521,11 @@ if (!function_exists ("is_post_permitted_by_s2member"))
1521
* @see s2Member\API_Functions\attach_s2member_query_filters()
1522
* @see s2Member\API_Functions\detach_s2member_query_filters()
1523
*/
1524
- if (!function_exists ("is_page_protected_by_s2member"))
1525
{
1526
- function is_page_protected_by_s2member ($page_id = FALSE, $check_user = FALSE)
1527
{
1528
- if ($page_id && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($page_id, $check_user)))
1529
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
1530
/**/
1531
return false;
@@ -1589,11 +1589,11 @@ if (!function_exists ("is_page_protected_by_s2member"))
1589
* @see s2Member\API_Functions\attach_s2member_query_filters()
1590
* @see s2Member\API_Functions\detach_s2member_query_filters()
1591
*/
1592
- if (!function_exists ("is_page_permitted_by_s2member"))
1593
{
1594
- function is_page_permitted_by_s2member ($page_id = FALSE)
1595
{
1596
- if ($page_id && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($page_id, true))
1597
return false;
1598
/**/
1599
return true;
@@ -1671,11 +1671,11 @@ if (!function_exists ("is_page_permitted_by_s2member"))
1671
* @see s2Member\API_Functions\attach_s2member_query_filters()
1672
* @see s2Member\API_Functions\detach_s2member_query_filters()
1673
*/
1674
- if (!function_exists ("is_uri_protected_by_s2member"))
1675
{
1676
- function is_uri_protected_by_s2member ($uri_or_full_url = FALSE, $check_user = FALSE)
1677
{
1678
- if ($uri_or_full_url && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($uri_or_full_url, $check_user)))
1679
return $array; /* A non-empty array with ["s2member_level_req"]. */
1680
/**/
1681
return false;
@@ -1746,11 +1746,11 @@ if (!function_exists ("is_uri_protected_by_s2member"))
1746
* @see s2Member\API_Functions\attach_s2member_query_filters()
1747
* @see s2Member\API_Functions\detach_s2member_query_filters()
1748
*/
1749
- if (!function_exists ("is_uri_permitted_by_s2member"))
1750
{
1751
- function is_uri_permitted_by_s2member ($uri_or_full_url = FALSE)
1752
{
1753
- if ($uri_or_full_url && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($uri_or_full_url, true))
1754
return false;
1755
/**/
1756
return true;
@@ -1794,12 +1794,12 @@ if (!function_exists ("is_uri_permitted_by_s2member"))
1794
*
1795
* @see s2Member\API_Functions\detach_s2member_query_filters()
1796
*/
1797
- if (!function_exists ("attach_s2member_query_filters"))
1798
{
1799
- function attach_s2member_query_filters ()
1800
{
1801
- remove_action ("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 100);
1802
- add_action ("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 100);
1803
}
1804
}
1805
/**
@@ -1840,12 +1840,12 @@ if (!function_exists ("attach_s2member_query_filters"))
1840
*
1841
* @see s2Member\API_Functions\attach_s2member_query_filters()
1842
*/
1843
- if (!function_exists ("detach_s2member_query_filters"))
1844
{
1845
- function detach_s2member_query_filters ()
1846
{
1847
- remove_action ("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 100);
1848
- add_action ("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 100);
1849
}
1850
}
1851
/**
@@ -1912,11 +1912,11 @@ if (!function_exists ("detach_s2member_query_filters"))
1912
*
1913
* @see s2Member\API_Functions\s2member_file_download_key()
1914
*/
1915
- if (!function_exists ("s2member_file_download_url"))
1916
{
1917
- function s2member_file_download_url ($config = FALSE, $get_streamer_array = FALSE)
1918
{
1919
- return c_ws_plugin__s2member_files::create_file_download_url ($config, $get_streamer_array);
1920
}
1921
}
1922
/**
@@ -1964,11 +1964,11 @@ if (!function_exists ("s2member_file_download_url"))
1964
*
1965
* @todo Allow custom expiration times.
1966
*/
1967
- if (!function_exists ("s2member_file_download_key"))
1968
{
1969
- function s2member_file_download_key ($file = FALSE, $directive = FALSE)
1970
{
1971
- return c_ws_plugin__s2member_files::file_download_key ($file, $directive);
1972
}
1973
}
1974
/**
@@ -2015,12 +2015,12 @@ if (!function_exists ("s2member_file_download_key"))
2015
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2016
* @todo Create a Shortcode equivalent.
2017
*/
2018
- if (!function_exists ("s2member_user_downloads"))
2019
{
2020
- function s2member_user_downloads ($user_id = FALSE, $not_counting_this_particular_file = FALSE)
2021
{
2022
- $user = ($user_id && is_object ($user = new WP_User ((int)$user_id)) && !empty ($user->ID)) ? $user : false;
2023
- return c_ws_plugin__s2member_files::user_downloads ($user, $not_counting_this_particular_file);
2024
}
2025
}
2026
/**
@@ -2068,11 +2068,11 @@ if (!function_exists ("s2member_user_downloads"))
2068
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2069
* @todo Create a Shortcode equivalent.
2070
*/
2071
- if (!function_exists ("s2member_total_downloads_of"))
2072
{
2073
- function s2member_total_downloads_of ($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
2074
{
2075
- return c_ws_plugin__s2member_files::total_downloads_of ($file, $user_id, $check_archives_too);
2076
}
2077
}
2078
/**
@@ -2120,11 +2120,11 @@ if (!function_exists ("s2member_total_downloads_of"))
2120
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2121
* @todo Create a Shortcode equivalent.
2122
*/
2123
- if (!function_exists ("s2member_total_unique_downloads_of"))
2124
{
2125
- function s2member_total_unique_downloads_of ($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
2126
{
2127
- return c_ws_plugin__s2member_files::total_unique_downloads_of ($file, $user_id, $check_archives_too);
2128
}
2129
}
2130
/**
@@ -2157,11 +2157,11 @@ if (!function_exists ("s2member_total_unique_downloads_of"))
2157
*
2158
* @see s2Member\API_Functions\get_user_field()
2159
*/
2160
- if (!function_exists ("s2member_registration_time"))
2161
{
2162
- function s2member_registration_time ($user_id = FALSE)
2163
{
2164
- return c_ws_plugin__s2member_registration_times::registration_time ($user_id);
2165
}
2166
}
2167
/**
@@ -2200,11 +2200,11 @@ if (!function_exists ("s2member_registration_time"))
2200
*
2201
* @see s2Member\API_Functions\get_user_field()
2202
*/
2203
- if (!function_exists ("s2member_paid_registration_time"))
2204
{
2205
- function s2member_paid_registration_time ($level = FALSE, $user_id = FALSE)
2206
{
2207
- return c_ws_plugin__s2member_registration_times::paid_registration_time ($level, $user_id);
2208
}
2209
}
2210
/**
@@ -2368,11 +2368,11 @@ if (!function_exists ("s2member_paid_registration_time"))
2368
* @see http://codex.wordpress.org/Function_Reference/update_user_option update_user_option()
2369
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
2370
*/
2371
- if (!function_exists ("get_user_field"))
2372
{
2373
- function get_user_field ($field_id = FALSE, $user_id = FALSE)
2374
{
2375
- return c_ws_plugin__s2member_utils_users::get_user_field ($field_id, $user_id);
2376
}
2377
}
2378
/**
@@ -2415,20 +2415,20 @@ if (!function_exists ("get_user_field"))
2415
* @see http://codex.wordpress.org/Function_Reference/update_user_option update_user_option()
2416
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
2417
*/
2418
- if (!function_exists ("get_s2member_custom_fields"))
2419
{
2420
- function get_s2member_custom_fields ($user_id = FALSE)
2421
{
2422
- $fields = ($user_id) ? get_user_option ("s2member_custom_fields", $user_id) : false;
2423
/**//**/
2424
- foreach (json_decode ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
2425
{
2426
- if ($user_id) /* Should we try to fill the User's value for this Custom Field? */
2427
- $s2member_custom_fields[$field["id"]]["user_value"] = (isset ($fields[$field["id"]])) ? $fields[$field["id"]] : false;
2428
$s2member_custom_fields[$field["id"]]["config"] = $field; /* Copy configuration into config element. */
2429
}
2430
/**/
2431
- return (isset ($s2member_custom_fields)) ? (array)$s2member_custom_fields : array ();
2432
}
2433
}
2434
/**
@@ -2456,11 +2456,11 @@ if (!function_exists ("get_s2member_custom_fields"))
2456
*
2457
* @todo Create a true Shortcode equivalent function.
2458
*/
2459
- if (!function_exists ("s2member_value_for_pp_inv"))
2460
{
2461
- function s2member_value_for_pp_inv ()
2462
{
2463
- return uniqid () . "~" . $_SERVER["REMOTE_ADDR"];
2464
}
2465
}
2466
/**
@@ -2487,11 +2487,11 @@ if (!function_exists ("s2member_value_for_pp_inv"))
2487
*
2488
* @todo Create a Shortcode equivalent for this function.
2489
*/
2490
- if (!function_exists ("s2member_shorten_url"))
2491
{
2492
- function s2member_shorten_url ($url = FALSE, $api_sp = FALSE, $try_backups = TRUE)
2493
{
2494
- return c_ws_plugin__s2member_utils_urls::shorten ($url, $api_sp, $try_backups);
2495
}
2496
}
2497
/**
@@ -2523,11 +2523,11 @@ if (!function_exists ("s2member_shorten_url"))
2523
*
2524
* @todo Create a Shortcode equivalent for this function.
2525
*/
2526
- if (!function_exists ("s2member_encrypt"))
2527
{
2528
- function s2member_encrypt ($string = FALSE, $key = FALSE, $w_md5_cs = TRUE)
2529
{
2530
- return c_ws_plugin__s2member_utils_encryption::encrypt ($string, $key, $w_md5_cs);
2531
}
2532
}
2533
/**
@@ -2558,11 +2558,11 @@ if (!function_exists ("s2member_encrypt"))
2558
*
2559
* @todo Create a Shortcode equivalent for this function.
2560
*/
2561
- if (!function_exists ("s2member_decrypt"))
2562
{
2563
- function s2member_decrypt ($base64 = FALSE, $key = FALSE)
2564
{
2565
- return c_ws_plugin__s2member_utils_encryption::decrypt ($base64, $key);
2566
}
2567
}
2568
/**
@@ -2592,11 +2592,11 @@ if (!function_exists ("s2member_decrypt"))
2592
*
2593
* @todo Create a Shortcode equivalent for this function.
2594
*/
2595
- if (!function_exists ("s2member_xencrypt"))
2596
{
2597
- function s2member_xencrypt ($string = FALSE, $key = FALSE, $w_md5_cs = TRUE)
2598
{
2599
- return c_ws_plugin__s2member_utils_encryption::xencrypt ($string, $key, $w_md5_cs);
2600
}
2601
}
2602
/**
@@ -2625,11 +2625,40 @@ if (!function_exists ("s2member_xencrypt"))
2625
*
2626
* @todo Create a Shortcode equivalent for this function.
2627
*/
2628
- if (!function_exists ("s2member_xdecrypt"))
2629
{
2630
- function s2member_xdecrypt ($base64 = FALSE, $key = FALSE)
2631
{
2632
- return c_ws_plugin__s2member_utils_encryption::xdecrypt ($base64, $key);
2633
}
2634
}
2635
?>
14
* @package s2Member\API_Functions
15
* @since 3.5
16
*/
17
+ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
18
exit("Do not access this file directly.");
19
/**
20
* Conditional to determine if the current User is NOT logged in.
49
*
50
* @see http://codex.wordpress.org/Function_Reference/is_user_logged_in is_user_logged_in()
51
*/
52
+ if(!function_exists("is_user_not_logged_in"))
53
{
54
+ function is_user_not_logged_in()
55
{
56
+ return (!is_user_logged_in());
57
}
58
}
59
/**
127
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
128
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
129
*/
130
+ if(!function_exists("user_is"))
131
{
132
+ function user_is($id = FALSE, $role = FALSE)
133
{
134
+ $role = ($role === "s2member_level0") ? "subscriber" : preg_replace("/^access_/i", "", $role);
135
/**/
136
+ if(($role === "super_administrator" || $role === "administrator") && is_multisite() && is_super_admin($id))
137
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
138
/**/
139
+ else if(is_multisite() && is_super_admin($id)) /* Else return false for Super Admins here. */
140
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
141
/**/
142
+ return user_can($id, $role);
143
}
144
}
145
/**
212
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
213
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
214
*/
215
+ if(!function_exists("user_is_not"))
216
{
217
+ function user_is_not($id = FALSE, $role = FALSE)
218
{
219
+ return (!user_is($id, $role));
220
}
221
}
222
/**
289
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
290
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
291
*/
292
+ if(!function_exists("current_user_is"))
293
{
294
+ function current_user_is($role = FALSE)
295
{
296
+ $role = ($role === "s2member_level0") ? "subscriber" : preg_replace("/^access_/i", "", $role);
297
/**/
298
+ if(($role === "super_administrator" || $role === "administrator") && is_multisite() && is_super_admin())
299
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
300
/**/
301
+ else if(is_multisite() && is_super_admin()) /* Else return false for Super Admins here. */
302
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
303
/**/
304
+ return current_user_can($role);
305
}
306
}
307
/**
373
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
374
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
375
*/
376
+ if(!function_exists("current_user_is_not"))
377
{
378
+ function current_user_is_not($role = FALSE)
379
{
380
+ return (!current_user_is($role));
381
}
382
}
383
/**
456
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
457
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
458
*/
459
+ if(!function_exists("current_user_is_for_blog"))
460
{
461
+ function current_user_is_for_blog($blog_id = FALSE, $role = FALSE)
462
{
463
+ $role = ($role === "s2member_level0") ? "subscriber" : preg_replace("/^access_/i", "", $role);
464
/**/
465
+ if(($role === "super_administrator" || $role === "administrator") && is_multisite() && is_super_admin())
466
return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */
467
/**/
468
+ else if(is_multisite() && is_super_admin()) /* Else return false for Super Admins here. */
469
return false; /* Super Admins can access all Capabilities, so the default handling would fail. */
470
/**/
471
+ return current_user_can_for_blog($blog_id, $role);
472
}
473
}
474
/**
535
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
536
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
537
*/
538
+ if(!function_exists("current_user_is_not_for_blog"))
539
{
540
+ function current_user_is_not_for_blog($blog_id = FALSE, $role = FALSE)
541
{
542
+ return (!current_user_is_for_blog($blog_id, $role));
543
}
544
}
545
/**
604
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
605
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
606
*/
607
+ if(!function_exists("user_cannot"))
608
{
609
+ function user_cannot($id = FALSE, $capability = FALSE)
610
{
611
+ return (!user_can($id, $capability));
612
}
613
}
614
/**
673
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
674
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
675
*/
676
+ if(!function_exists("current_user_cannot"))
677
{
678
+ function current_user_cannot($capability = FALSE)
679
{
680
+ return (!current_user_can($capability));
681
}
682
}
683
/**
743
* @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()
744
* @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()
745
*/
746
+ if(!function_exists("current_user_cannot_for_blog"))
747
{
748
+ function current_user_cannot_for_blog($blog_id = FALSE, $capability = FALSE)
749
{
750
+ return (!current_user_can_for_blog($blog_id, $capability));
751
}
752
}
753
/**
852
* @see s2Member\API_Functions\attach_s2member_query_filters()
853
* @see s2Member\API_Functions\detach_s2member_query_filters()
854
*/
855
+ if(!function_exists("is_protected_by_s2member"))
856
{
857
+ function is_protected_by_s2member($what = FALSE, $type = FALSE, $check_user = FALSE)
858
{
859
global $post; /* Global reference to $post in The Loop. */
860
/**/
861
+ $what = ($what) ? $what : ((is_object($post) && $post->ID) ? $post->ID : false);
862
+ $type = ($type) ? strtolower($type) : "singular";
863
/**/
864
+ if($type === "category" && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access($what, $check_user)))
865
return $array; /* A non-empty array with ["s2member_level_req"]. */
866
/**/
867
+ else if($type === "tag" && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access($what, $check_user)))
868
return $array; /* A non-empty array with ["s2member_level_req"]. */
869
/**/
870
+ else if(($type === "post" || $type === "singular") && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access($what, $check_user)))
871
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
872
/**/
873
+ else if(($type === "page" || $type === "singular") && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access($what, $check_user)))
874
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
875
/**/
876
+ else if($type === "uri" && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access($what, $check_user)))
877
return $array; /* A non-empty array with ["s2member_level_req"]. */
878
/**/
879
return false;
974
* @see s2Member\API_Functions\attach_s2member_query_filters()
975
* @see s2Member\API_Functions\detach_s2member_query_filters()
976
*/
977
+ if(!function_exists("is_permitted_by_s2member"))
978
{
979
+ function is_permitted_by_s2member($what = FALSE, $type = FALSE)
980
{
981
global $post; /* Global reference to $post in The Loop. */
982
/**/
983
+ $what = ($what) ? $what : ((is_object($post) && $post->ID) ? $post->ID : false);
984
+ $type = ($type) ? strtolower($type) : "singular";
985
/**/
986
+ if($type === "category" && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access($what, true))
987
return false;
988
/**/
989
+ else if($type === "tag" && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access($what, true))
990
return false;
991
/**/
992
+ else if(($type === "post" || $type === "singular") && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access($what, true))
993
return false;
994
/**/
995
+ else if(($type === "page" || $type === "singular") && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access($what, true))
996
return false;
997
/**/
998
+ else if($type === "uri" && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access($what, true))
999
return false;
1000
/**/
1001
return true;
1066
* @see s2Member\API_Functions\attach_s2member_query_filters()
1067
* @see s2Member\API_Functions\detach_s2member_query_filters()
1068
*/
1069
+ if(!function_exists("is_category_protected_by_s2member"))
1070
{
1071
+ function is_category_protected_by_s2member($cat_id = FALSE, $check_user = FALSE)
1072
{
1073
+ if($cat_id && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access($cat_id, $check_user)))
1074
return $array; /* A non-empty array with ["s2member_level_req"]. */
1075
/**/
1076
return false;
1134
* @see s2Member\API_Functions\attach_s2member_query_filters()
1135
* @see s2Member\API_Functions\detach_s2member_query_filters()
1136
*/
1137
+ if(!function_exists("is_category_permitted_by_s2member"))
1138
{
1139
+ function is_category_permitted_by_s2member($cat_id = FALSE)
1140
{
1141
+ if($cat_id && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access($cat_id, true))
1142
return false;
1143
/**/
1144
return true;
1222
* @see s2Member\API_Functions\attach_s2member_query_filters()
1223
* @see s2Member\API_Functions\detach_s2member_query_filters()
1224
*/
1225
+ if(!function_exists("is_tag_protected_by_s2member"))
1226
{
1227
+ function is_tag_protected_by_s2member($tag_id_slug_or_name = FALSE, $check_user = FALSE)
1228
{
1229
+ if($tag_id_slug_or_name && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access($tag_id_slug_or_name, $check_user)))
1230
return $array; /* A non-empty array with ["s2member_level_req"]. */
1231
/**/
1232
return false;
1303
* @see s2Member\API_Functions\attach_s2member_query_filters()
1304
* @see s2Member\API_Functions\detach_s2member_query_filters()
1305
*/
1306
+ if(!function_exists("is_tag_permitted_by_s2member"))
1307
{
1308
+ function is_tag_permitted_by_s2member($tag_id_slug_or_name = FALSE)
1309
{
1310
+ if($tag_id_slug_or_name && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access($tag_id_slug_or_name, true))
1311
return false;
1312
/**/
1313
return true;
1378
* @see s2Member\API_Functions\attach_s2member_query_filters()
1379
* @see s2Member\API_Functions\detach_s2member_query_filters()
1380
*/
1381
+ if(!function_exists("is_post_protected_by_s2member"))
1382
{
1383
+ function is_post_protected_by_s2member($post_id = FALSE, $check_user = FALSE)
1384
{
1385
+ if($post_id && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access($post_id, $check_user)))
1386
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
1387
/**/
1388
return false;
1446
* @see s2Member\API_Functions\attach_s2member_query_filters()
1447
* @see s2Member\API_Functions\detach_s2member_query_filters()
1448
*/
1449
+ if(!function_exists("is_post_permitted_by_s2member"))
1450
{
1451
+ function is_post_permitted_by_s2member($post_id = FALSE)
1452
{
1453
+ if($post_id && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access($post_id, true))
1454
return false;
1455
/**/
1456
return true;
1521
* @see s2Member\API_Functions\attach_s2member_query_filters()
1522
* @see s2Member\API_Functions\detach_s2member_query_filters()
1523
*/
1524
+ if(!function_exists("is_page_protected_by_s2member"))
1525
{
1526
+ function is_page_protected_by_s2member($page_id = FALSE, $check_user = FALSE)
1527
{
1528
+ if($page_id && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access($page_id, $check_user)))
1529
return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */
1530
/**/
1531
return false;
1589
* @see s2Member\API_Functions\attach_s2member_query_filters()
1590
* @see s2Member\API_Functions\detach_s2member_query_filters()
1591
*/
1592
+ if(!function_exists("is_page_permitted_by_s2member"))
1593
{
1594
+ function is_page_permitted_by_s2member($page_id = FALSE)
1595
{
1596
+ if($page_id && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access($page_id, true))
1597
return false;
1598
/**/
1599
return true;
1671
* @see s2Member\API_Functions\attach_s2member_query_filters()
1672
* @see s2Member\API_Functions\detach_s2member_query_filters()
1673
*/
1674
+ if(!function_exists("is_uri_protected_by_s2member"))
1675
{
1676
+ function is_uri_protected_by_s2member($uri_or_full_url = FALSE, $check_user = FALSE)
1677
{
1678
+ if($uri_or_full_url && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access($uri_or_full_url, $check_user)))
1679
return $array; /* A non-empty array with ["s2member_level_req"]. */
1680
/**/
1681
return false;
1746
* @see s2Member\API_Functions\attach_s2member_query_filters()
1747
* @see s2Member\API_Functions\detach_s2member_query_filters()
1748
*/
1749
+ if(!function_exists("is_uri_permitted_by_s2member"))
1750
{
1751
+ function is_uri_permitted_by_s2member($uri_or_full_url = FALSE)
1752
{
1753
+ if($uri_or_full_url && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access($uri_or_full_url, true))
1754
return false;
1755
/**/
1756
return true;
1794
*
1795
* @see s2Member\API_Functions\detach_s2member_query_filters()
1796
*/
1797
+ if(!function_exists("attach_s2member_query_filters"))
1798
{
1799
+ function attach_s2member_query_filters()
1800
{
1801
+ remove_action("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 100);
1802
+ add_action("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 100);
1803
}
1804
}
1805
/**
1840
*
1841
* @see s2Member\API_Functions\attach_s2member_query_filters()
1842
*/
1843
+ if(!function_exists("detach_s2member_query_filters"))
1844
{
1845
+ function detach_s2member_query_filters()
1846
{
1847
+ remove_action("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 100);
1848
+ add_action("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 100);
1849
}
1850
}
1851
/**
1912
*
1913
* @see s2Member\API_Functions\s2member_file_download_key()
1914
*/
1915
+ if(!function_exists("s2member_file_download_url"))
1916
{
1917
+ function s2member_file_download_url($config = FALSE, $get_streamer_array = FALSE)
1918
{
1919
+ return c_ws_plugin__s2member_files::create_file_download_url($config, $get_streamer_array);
1920
}
1921
}
1922
/**
1964
*
1965
* @todo Allow custom expiration times.
1966
*/
1967
+ if(!function_exists("s2member_file_download_key"))
1968
{
1969
+ function s2member_file_download_key($file = FALSE, $directive = FALSE)
1970
{
1971
+ return c_ws_plugin__s2member_files::file_download_key($file, $directive);
1972
}
1973
}
1974
/**
2015
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2016
* @todo Create a Shortcode equivalent.
2017
*/
2018
+ if(!function_exists("s2member_user_downloads"))
2019
{
2020
+ function s2member_user_downloads($user_id = FALSE, $not_counting_this_particular_file = FALSE)
2021
{
2022
+ $user = ($user_id && is_object($user = new WP_User((int)$user_id)) && !empty($user->ID)) ? $user : false;
2023
+ return c_ws_plugin__s2member_files::user_downloads($user, $not_counting_this_particular_file);
2024
}
2025
}
2026
/**
2068
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2069
* @todo Create a Shortcode equivalent.
2070
*/
2071
+ if(!function_exists("s2member_total_downloads_of"))
2072
{
2073
+ function s2member_total_downloads_of($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
2074
{
2075
+ return c_ws_plugin__s2member_files::total_downloads_of($file, $user_id, $check_archives_too);
2076
}
2077
}
2078
/**
2120
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
2121
* @todo Create a Shortcode equivalent.
2122
*/
2123
+ if(!function_exists("s2member_total_unique_downloads_of"))
2124
{
2125
+ function s2member_total_unique_downloads_of($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
2126
{
2127
+ return c_ws_plugin__s2member_files::total_unique_downloads_of($file, $user_id, $check_archives_too);
2128
}
2129
}
2130
/**
2157
*
2158
* @see s2Member\API_Functions\get_user_field()
2159
*/
2160
+ if(!function_exists("s2member_registration_time"))
2161
{
2162
+ function s2member_registration_time($user_id = FALSE)
2163
{
2164
+ return c_ws_plugin__s2member_registration_times::registration_time($user_id);
2165
}
2166
}
2167
/**
2200
*
2201
* @see s2Member\API_Functions\get_user_field()
2202
*/
2203
+ if(!function_exists("s2member_paid_registration_time"))
2204
{
2205
+ function s2member_paid_registration_time($level = FALSE, $user_id = FALSE)
2206
{
2207
+ return c_ws_plugin__s2member_registration_times::paid_registration_time($level, $user_id);
2208
}
2209
}
2210
/**
2368
* @see http://codex.wordpress.org/Function_Reference/update_user_option update_user_option()
2369
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
2370
*/
2371
+ if(!function_exists("get_user_field"))
2372
{
2373
+ function get_user_field($field_id = FALSE, $user_id = FALSE)
2374
{
2375
+ return c_ws_plugin__s2member_utils_users::get_user_field($field_id, $user_id);
2376
}
2377
}
2378
/**
2415
* @see http://codex.wordpress.org/Function_Reference/update_user_option update_user_option()
2416
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
2417
*/
2418
+ if(!function_exists("get_s2member_custom_fields"))
2419
{
2420
+ function get_s2member_custom_fields($user_id = FALSE)
2421
{
2422
+ $fields = ($user_id) ? get_user_option("s2member_custom_fields", $user_id) : false;
2423
/**//**/
2424
+ foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
2425
{
2426
+ if($user_id) /* Should we try to fill the User's value for this Custom Field? */
2427
+ $s2member_custom_fields[$field["id"]]["user_value"] = (isset($fields[$field["id"]])) ? $fields[$field["id"]] : false;
2428
$s2member_custom_fields[$field["id"]]["config"] = $field; /* Copy configuration into config element. */
2429
}
2430
/**/
2431
+ return (isset($s2member_custom_fields)) ? (array)$s2member_custom_fields : array();
2432
}
2433
}
2434
/**
2456
*
2457
* @todo Create a true Shortcode equivalent function.
2458
*/
2459
+ if(!function_exists("s2member_value_for_pp_inv"))
2460
{
2461
+ function s2member_value_for_pp_inv()
2462
{
2463
+ return uniqid()."~".$_SERVER["REMOTE_ADDR"];
2464
}
2465
}
2466
/**
2487
*
2488
* @todo Create a Shortcode equivalent for this function.
2489
*/
2490
+ if(!function_exists("s2member_shorten_url"))
2491
{
2492
+ function s2member_shorten_url($url = FALSE, $api_sp = FALSE, $try_backups = TRUE)
2493
{
2494
+ return c_ws_plugin__s2member_utils_urls::shorten($url, $api_sp, $try_backups);
2495
}
2496
}
2497
/**
2523
*
2524
* @todo Create a Shortcode equivalent for this function.
2525
*/
2526
+ if(!function_exists("s2member_encrypt"))
2527
{
2528
+ function s2member_encrypt($string = FALSE, $key = FALSE, $w_md5_cs = TRUE)
2529
{
2530
+ return c_ws_plugin__s2member_utils_encryption::encrypt($string, $key, $w_md5_cs);
2531
}
2532
}
2533
/**
2558
*
2559
* @todo Create a Shortcode equivalent for this function.
2560
*/
2561
+ if(!function_exists("s2member_decrypt"))
2562
{
2563
+ function s2member_decrypt($base64 = FALSE, $key = FALSE)
2564
{
2565
+ return c_ws_plugin__s2member_utils_encryption::decrypt($base64, $key);
2566
}
2567
}
2568
/**
2592
*
2593
* @todo Create a Shortcode equivalent for this function.
2594
*/
2595
+ if(!function_exists("s2member_xencrypt"))
2596
{
2597
+ function s2member_xencrypt($string = FALSE, $key = FALSE, $w_md5_cs = TRUE)
2598
{
2599
+ return c_ws_plugin__s2member_utils_encryption::xencrypt($string, $key, $w_md5_cs);
2600
}
2601
}
2602
/**
2625
*
2626
* @todo Create a Shortcode equivalent for this function.
2627
*/
2628
+ if(!function_exists("s2member_xdecrypt"))
2629
{
2630
+ function s2member_xdecrypt($base64 = FALSE, $key = FALSE)
2631
{
2632
+ return c_ws_plugin__s2member_utils_encryption::xdecrypt($base64, $key);
2633
+ }
2634
+ }
2635
+ /**
2636
+ * Gets login IPs for a particular username.
2637
+ *
2638
+ * ———— PHP Code Samples ————
2639
+ * ```
2640
+ * <!php print_r($ips = s2member_login_ips_for("johndoe22")); !>
2641
+ * ```
2642
+ * ———— Shortcode Equivalent ————
2643
+ * ```
2644
+ * There is NO Shortcode equivalent for this ( yet ).
2645
+ * ```
2646
+ *
2647
+ * @package s2Member\API_Functions
2648
+ * @since 120728
2649
+ *
2650
+ * @param str $username A username.
2651
+ * @return array An associative array of all IPs associated with a particular username, over the last 30 days.
2652
+ * Array keys are IP addresses; array values are UTC timestamps.
2653
+ *
2654
+ * @todo Create a Shortcode equivalent for this function.
2655
+ */
2656
+ if(!function_exists("s2member_login_ips_for"))
2657
+ {
2658
+ function s2member_login_ips_for($username)
2659
+ {
2660
+ $ips = get_transient('s2m_ipr_'.md5('s2member_ip_restrictions_'.strtolower($username).'_entries'));
2661
+ return (is_array($ips)) ? $ips : array();
2662
}
2663
}
2664
?>
includes/menu-pages/gen-ops.inc.php CHANGED
@@ -971,6 +971,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
971
echo '<p>Custom Fields will appear in your Standard Registration Form, and in User/Member Profiles:<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Standard Registration Form.\\n* s2Member makes this form available to logged-in Administrators, at all times ( for testing purposes ), regardless of configuration.' . ((c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '') . '\');">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '</a> )</p>' . "\n";
972
echo (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ()) ? '<p><em>The Main Site of a Multisite Blog Farm uses this Form. s2Member supports Custom Fields here too.<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Multisite Registration Form.\\n* s2Member makes this form available to logged-in Super Administrators, at all times ( for testing purposes ), regardless of configuration.' . ((c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '') . '\');">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '</a> )</em></p>' . "\n" : '';
973
echo (c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '<p><em><strong>BuddyPress:</strong> BuddyPress will use its own Registration Form <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your BuddyPress Registration Form.\\n* However, you will probably be redirected away from this BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.\');">here</a>.<br />s2Member can integrate your Custom Fields with BuddyPress too, please see options below.</em></p>' . "\n" : '';
974
/**/
975
do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_custom_reg_fields", get_defined_vars ());
976
/**/
971
echo '<p>Custom Fields will appear in your Standard Registration Form, and in User/Member Profiles:<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Standard Registration Form.\\n* s2Member makes this form available to logged-in Administrators, at all times ( for testing purposes ), regardless of configuration.' . ((c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '') . '\');">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '</a> )</p>' . "\n";
972
echo (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ()) ? '<p><em>The Main Site of a Multisite Blog Farm uses this Form. s2Member supports Custom Fields here too.<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Multisite Registration Form.\\n* s2Member makes this form available to logged-in Super Administrators, at all times ( for testing purposes ), regardless of configuration.' . ((c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '') . '\');">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '</a> )</em></p>' . "\n" : '';
973
echo (c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '<p><em><strong>BuddyPress:</strong> BuddyPress will use its own Registration Form <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . '" target="_blank" rel="external" onclick="alert(\'s2Member will now open your BuddyPress Registration Form.\\n* However, you will probably be redirected away from this BuddyPress Registration Form ( ' . c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_urls::bp_register_url ()) . ' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.\');">here</a>.<br />s2Member can integrate your Custom Fields with BuddyPress too, please see options below.</em></p>' . "\n" : '';
974
+ echo '<p><strong>Regarding registration...</strong> Custom Fields do NOT appear during repeat registration and/or checkout attempts (e.g. they do NOT appear for any user that is currently logged into the site). Please make sure that you test registration and/or checkout forms while NOT logged in (e.g. please test as a first-time customer). Existing users/members/customers may update Custom Fields by editing their Profile.</p>' . "\n";
975
/**/
976
do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_custom_reg_fields", get_defined_vars ());
977
/**/
includes/menu-pages/mms-ops.inc.php CHANGED
@@ -56,7 +56,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops"))
56
echo '<div class="ws-menu-page-section ws-plugin--s2member-mms-patches-section">'."\n";
57
echo '<img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/small-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" />'."\n";
58
echo '<h3>Multisite WordPress® Patches ( required for compatiblity )</h3>'."\n";
59
- echo '<p>In order for s2Member to function properly in a Multisite environment, you MUST implement four patches. One goes into your <code>/wp-login.php</code> file, one into <code>/wp-includes/load.php</code>, one into <code>/wp-includes/ms-functions.php</code>, and another into <code>/wp-admin/user-new.php</code>. We have TRAC tickets into WordPress® for these changes. However, until the official release of WordPress® includes these updates, you will need to use the automatic patcher below. All you do is check the box &amp; click Save.</p>'."\n";
60
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_during_mms_patches", get_defined_vars());
61
/**/
62
echo '<table class="form-table">'."\n";
56
echo '<div class="ws-menu-page-section ws-plugin--s2member-mms-patches-section">'."\n";
57
echo '<img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/small-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" />'."\n";
58
echo '<h3>Multisite WordPress® Patches ( required for compatiblity )</h3>'."\n";
59
+ echo '<p>In order for s2Member to function properly in a Multisite environment, you MUST implement four patches. One goes into your <code>/wp-login.php</code> file, one into <code>/wp-includes/load.php</code>, one into <code>/wp-includes/ms-functions.php</code>, and another into <code>/wp-admin/user-new.php</code>. Please use the automatic patcher below. All you do is check the box &amp; click Save.</p>'."\n";
60
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_during_mms_patches", get_defined_vars());
61
/**/
62
echo '<table class="form-table">'."\n";
includes/translations/s2member.pot CHANGED
@@ -2,9 +2,9 @@
2
# This file is distributed under the same license as the s2Member® Framework package.
3
msgid ""
4
msgstr ""
5
- "Project-Id-Version: s2Member® Framework 120622\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
7
- "POT-Creation-Date: 2012-07-03 20:54:11+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
@@ -666,24 +666,24 @@ msgid "Error #%1$s. %2$s. %3$s."
666
msgstr ""
667
668
#: s2member/includes/classes/paypal-utilities.inc.php:189
669
- #: s2member/includes/classes/paypal-utilities.inc.php:289
670
- #: s2member/includes/classes/paypal-utilities.inc.php:297
671
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:96
672
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:318
673
msgctxt "s2member-front"
674
msgid "Error. Please contact Support for assistance."
675
msgstr ""
676
677
#: s2member/includes/classes/paypal-utilities.inc.php:230
678
#: s2member/includes/classes/paypal-utilities.inc.php:236
679
- #: s2member/includes/classes/paypal-utilities.inc.php:338
680
- #: s2member/includes/classes/paypal-utilities.inc.php:344
681
msgctxt "s2member-front"
682
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
683
msgstr ""
684
685
#: s2member/includes/classes/paypal-utilities.inc.php:233
686
- #: s2member/includes/classes/paypal-utilities.inc.php:341
687
msgctxt "s2member-front"
688
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
689
msgstr ""
@@ -704,9 +704,9 @@ msgstr ""
704
#. `ws_plugin__s2member_pro_authnet_arb_response`.
705
706
#: s2member/includes/classes/paypal-utilities.inc.php:287
707
- #: s2member/includes/classes/paypal-utilities.inc.php:295
708
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:93
709
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:315
710
msgctxt "s2member-front"
711
msgid "Error #%1$s. %2$s."
712
msgstr ""
@@ -889,32 +889,32 @@ msgctxt "s2member-front"
889
msgid "( for this site )"
890
msgstr ""
891
892
- #: s2member/includes/classes/utils-html.inc.php:60
893
msgctxt "s2member-front"
894
msgid "Strength indicator"
895
msgstr ""
896
897
- #: s2member/includes/classes/utils-html.inc.php:60
898
msgctxt "s2member-front"
899
msgid "Very weak"
900
msgstr ""
901
902
- #: s2member/includes/classes/utils-html.inc.php:60
903
msgctxt "s2member-front"
904
msgid "Weak"
905
msgstr ""
906
907
- #: s2member/includes/classes/utils-html.inc.php:60
908
msgctxt "s2member-front"
909
msgid "Medium"
910
msgstr ""
911
912
- #: s2member/includes/classes/utils-html.inc.php:60
913
msgctxt "s2member-front"
914
msgid "Strong"
915
msgstr ""
916
917
- #: s2member/includes/classes/utils-html.inc.php:60
918
msgctxt "s2member-front"
919
msgid "Mismatch"
920
msgstr ""
@@ -2464,24 +2464,24 @@ msgstr ""
2464
2465
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:248
2466
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:580
2467
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:291
2468
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:614
2469
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:334
2470
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:666
2471
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:422
2472
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:850
2473
msgctxt "s2member-front"
2474
msgid "<strong>Thank you.</strong> Your account has been updated.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">log back in</a> now."
2475
msgstr ""
2476
2477
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:447
2478
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:696
2479
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:453
2480
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:766
2481
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:505
2482
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:818
2483
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:684
2484
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1002
2485
msgctxt "s2member-front"
2486
msgid "<strong>Thank you.</strong> Your account has been approved.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">login</a>."
2487
msgstr ""
@@ -2492,18 +2492,18 @@ msgstr ""
2492
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:726
2493
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:124
2494
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:141
2495
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:462
2496
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:483
2497
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:775
2498
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:796
2499
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:514
2500
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:535
2501
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:827
2502
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:848
2503
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:693
2504
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:714
2505
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1011
2506
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1032
2507
#: s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:124
2508
#: s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:141
2509
msgctxt "s2member-front"
@@ -2512,20 +2512,20 @@ msgstr ""
2512
2513
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:471
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:717
2515
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:474
2516
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:787
2517
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:526
2518
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:839
2519
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:705
2520
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1023
2521
msgctxt "s2member-front"
2522
msgid "<strong>Thank you.</strong> Your account has been approved.<br />&mdash; You'll receive an email momentarily."
2523
msgstr ""
2524
2525
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:737
2526
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:807
2527
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:859
2528
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1043
2529
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:138
2530
msgctxt "s2member-front"
2531
msgid "<strong>Unknown error.</strong> Please contact Support for assistance."
@@ -3326,13 +3326,13 @@ msgid "Unknown form submission type. Please contact Support."
3326
msgstr ""
3327
3328
#: s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:163
3329
- #: s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:277
3330
msgctxt "s2member-front"
3331
msgid "<strong>Thank you.</strong> Your purchase has been approved.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">click here</a> to proceed."
3332
msgstr ""
3333
3334
#: s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:170
3335
- #: s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:284
3336
msgctxt "s2member-front"
3337
msgid "<strong>Oops.</strong> Unable to generate Access Link. Please contact Support for assistance."
3338
msgstr ""
@@ -3357,26 +3357,26 @@ msgctxt "s2member-front"
3357
msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
3358
msgstr ""
3359
3360
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:650
3361
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:793
3362
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:271
3363
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:414
3364
msgctxt "s2member-front percentage-symbol"
3365
msgid "%"
3366
msgstr ""
3367
3368
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:792
3369
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:413
3370
msgctxt "s2member-front"
3371
msgid " + tax"
3372
msgstr ""
3373
3374
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:837
3375
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:889
3376
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:902
3377
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:924
3378
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:984
3379
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:999
3380
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:458
3381
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:510
3382
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:523
@@ -3387,12 +3387,12 @@ msgctxt "s2member-front"
3387
msgid "COUPON %s off. ( Now: %s )"
3388
msgstr ""
3389
3390
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:838
3391
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:890
3392
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:903
3393
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:925
3394
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:985
3395
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1000
3396
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:459
3397
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:511
3398
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:524
@@ -3403,12 +3403,12 @@ msgctxt "s2member-front"
3403
msgid "<div>Coupon: <strong>%s off</strong>. ( Now: <strong>%s</strong> )</div>"
3404
msgstr ""
3405
3406
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:850
3407
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:863
3408
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:876
3409
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:939
3410
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:954
3411
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:969
3412
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:471
3413
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:484
3414
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:497
@@ -3419,12 +3419,12 @@ msgctxt "s2member-front"
3419
msgid "COUPON %s off. ( Now: %s, then %s )"
3420
msgstr ""
3421
3422
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:851
3423
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:864
3424
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:877
3425
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:940
3426
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:955
3427
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:970
3428
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:472
3429
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:485
3430
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:498
@@ -3435,27 +3435,27 @@ msgctxt "s2member-front"
3435
msgid "<div>Coupon: <strong>%s off</strong>. ( Now: <strong>%s, then %s</strong> )</div>"
3436
msgstr ""
3437
3438
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:907
3439
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1004
3440
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:528
3441
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:625
3442
msgctxt "s2member-front"
3443
msgid "<div>Sorry, your Coupon is not applicable.</div>"
3444
msgstr ""
3445
3446
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1008
3447
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:629
3448
msgctxt "s2member-front"
3449
msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
3450
msgstr ""
3451
3452
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1012
3453
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:633
3454
msgctxt "s2member-front"
3455
msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
3456
msgstr ""
3457
3458
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1016
3459
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:637
3460
msgctxt "s2member-front"
3461
msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
@@ -3464,14 +3464,14 @@ msgstr ""
3464
#. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
3465
#. is original description.
3466
3467
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1022
3468
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:643
3469
msgctxt "s2member-front"
3470
msgid "%1$s ~ ORIGINALLY: %2$s"
3471
msgstr ""
3472
3473
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1050
3474
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1054
3475
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:671
3476
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:675
3477
msgctxt "s2member-front"
@@ -3593,12 +3593,12 @@ msgctxt "s2member-front"
3593
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal®</a> to cancel your Subscription."
3594
msgstr ""
3595
3596
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:303
3597
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:626
3598
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:346
3599
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:678
3600
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:439
3601
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:862
3602
msgctxt "s2member-front"
3603
msgid "<strong>Sorry.</strong> Your account is pending other changes. Please try again in 15 minutes."
3604
msgstr ""
2
# This file is distributed under the same license as the s2Member® Framework package.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: s2Member® Framework 120703\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
7
+ "POT-Creation-Date: 2012-10-24 02:10:21+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
666
msgstr ""
667
668
#: s2member/includes/classes/paypal-utilities.inc.php:189
669
+ #: s2member/includes/classes/paypal-utilities.inc.php:290
670
+ #: s2member/includes/classes/paypal-utilities.inc.php:299
671
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
672
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:319
673
msgctxt "s2member-front"
674
msgid "Error. Please contact Support for assistance."
675
msgstr ""
676
677
#: s2member/includes/classes/paypal-utilities.inc.php:230
678
#: s2member/includes/classes/paypal-utilities.inc.php:236
679
+ #: s2member/includes/classes/paypal-utilities.inc.php:340
680
+ #: s2member/includes/classes/paypal-utilities.inc.php:346
681
msgctxt "s2member-front"
682
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
683
msgstr ""
684
685
#: s2member/includes/classes/paypal-utilities.inc.php:233
686
+ #: s2member/includes/classes/paypal-utilities.inc.php:343
687
msgctxt "s2member-front"
688
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
689
msgstr ""
704
#. `ws_plugin__s2member_pro_authnet_arb_response`.
705
706
#: s2member/includes/classes/paypal-utilities.inc.php:287
707
+ #: s2member/includes/classes/paypal-utilities.inc.php:296
708
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
709
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:316
710
msgctxt "s2member-front"
711
msgid "Error #%1$s. %2$s."
712
msgstr ""
889
msgid "( for this site )"
890
msgstr ""
891
892
+ #: s2member/includes/classes/utils-html.inc.php:59
893
msgctxt "s2member-front"
894
msgid "Strength indicator"
895
msgstr ""
896
897
+ #: s2member/includes/classes/utils-html.inc.php:59
898
msgctxt "s2member-front"
899
msgid "Very weak"
900
msgstr ""
901
902
+ #: s2member/includes/classes/utils-html.inc.php:59
903
msgctxt "s2member-front"
904
msgid "Weak"
905
msgstr ""
906
907
+ #: s2member/includes/classes/utils-html.inc.php:59
908
msgctxt "s2member-front"
909
msgid "Medium"
910
msgstr ""
911
912
+ #: s2member/includes/classes/utils-html.inc.php:59
913
msgctxt "s2member-front"
914
msgid "Strong"
915
msgstr ""
916
917
+ #: s2member/includes/classes/utils-html.inc.php:59
918
msgctxt "s2member-front"
919
msgid "Mismatch"
920
msgstr ""
2464
2465
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:248
2466
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:580
2467
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:294
2468
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:617
2469
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:337
2470
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:669
2471
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:425
2472
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:853
2473
msgctxt "s2member-front"
2474
msgid "<strong>Thank you.</strong> Your account has been updated.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">log back in</a> now."
2475
msgstr ""
2476
2477
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:447
2478
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:696
2479
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:456
2480
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:769
2481
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:508
2482
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:821
2483
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:687
2484
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1005
2485
msgctxt "s2member-front"
2486
msgid "<strong>Thank you.</strong> Your account has been approved.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">login</a>."
2487
msgstr ""
2492
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:726
2493
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:124
2494
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:141
2495
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:465
2496
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:486
2497
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:778
2498
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:799
2499
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:517
2500
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:538
2501
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:830
2502
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:851
2503
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:696
2504
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:717
2505
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1014
2506
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1035
2507
#: s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:124
2508
#: s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:141
2509
msgctxt "s2member-front"
2512
2513
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:471
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:717
2515
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:477
2516
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:790
2517
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:529
2518
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:842
2519
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:708
2520
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1026
2521
msgctxt "s2member-front"
2522
msgid "<strong>Thank you.</strong> Your account has been approved.<br />&mdash; You'll receive an email momentarily."
2523
msgstr ""
2524
2525
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:737
2526
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:810
2527
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:862
2528
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1046
2529
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:138
2530
msgctxt "s2member-front"
2531
msgid "<strong>Unknown error.</strong> Please contact Support for assistance."
3326
msgstr ""
3327
3328
#: s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:163
3329
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:280
3330
msgctxt "s2member-front"
3331
msgid "<strong>Thank you.</strong> Your purchase has been approved.<br />&mdash; Please <a href=\"%s\" rel=\"nofollow\">click here</a> to proceed."
3332
msgstr ""
3333
3334
#: s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:170
3335
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:287
3336
msgctxt "s2member-front"
3337
msgid "<strong>Oops.</strong> Unable to generate Access Link. Please contact Support for assistance."
3338
msgstr ""
3357
msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
3358
msgstr ""
3359
3360
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:652
3361
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:795
3362
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:271
3363
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:414
3364
msgctxt "s2member-front percentage-symbol"
3365
msgid "%"
3366
msgstr ""
3367
3368
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:794
3369
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:413
3370
msgctxt "s2member-front"
3371
msgid " + tax"
3372
msgstr ""
3373
3374
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:839
3375
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:891
3376
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:904
3377
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:926
3378
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:986
3379
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1001
3380
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:458
3381
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:510
3382
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:523
3387
msgid "COUPON %s off. ( Now: %s )"
3388
msgstr ""
3389
3390
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:840
3391
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:892
3392
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:905
3393
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:927
3394
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:987
3395
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1002
3396
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:459
3397
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:511
3398
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:524
3403
msgid "<div>Coupon: <strong>%s off</strong>. ( Now: <strong>%s</strong> )</div>"
3404
msgstr ""
3405
3406
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:852
3407
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:865
3408
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:878
3409
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:941
3410
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:956
3411
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:971
3412
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:471
3413
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:484
3414
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:497
3419
msgid "COUPON %s off. ( Now: %s, then %s )"
3420
msgstr ""
3421
3422
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:853
3423
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:866
3424
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:879
3425
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:942
3426
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:957
3427
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:972
3428
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:472
3429
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:485
3430
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:498
3435
msgid "<div>Coupon: <strong>%s off</strong>. ( Now: <strong>%s, then %s</strong> )</div>"
3436
msgstr ""
3437
3438
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:909
3439
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1006
3440
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:528
3441
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:625
3442
msgctxt "s2member-front"
3443
msgid "<div>Sorry, your Coupon is not applicable.</div>"
3444
msgstr ""
3445
3446
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1010
3447
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:629
3448
msgctxt "s2member-front"
3449
msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
3450
msgstr ""
3451
3452
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1014
3453
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:633
3454
msgctxt "s2member-front"
3455
msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
3456
msgstr ""
3457
3458
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1018
3459
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:637
3460
msgctxt "s2member-front"
3461
msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
3464
#. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
3465
#. is original description.
3466
3467
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1024
3468
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:643
3469
msgctxt "s2member-front"
3470
msgid "%1$s ~ ORIGINALLY: %2$s"
3471
msgstr ""
3472
3473
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1052
3474
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1056
3475
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:671
3476
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:675
3477
msgctxt "s2member-front"
3593
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal®</a> to cancel your Subscription."
3594
msgstr ""
3595
3596
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:306
3597
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:629
3598
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:349
3599
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:681
3600
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:442
3601
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:865
3602
msgctxt "s2member-front"
3603
msgid "<strong>Sorry.</strong> Your account is pending other changes. Please try again in 15 minutes."
3604
msgstr ""
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
- Version: 120703
4
- Stable tag: 120703
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
@@ -16,7 +16,7 @@ Authorize.Net® Compatible: yes w/s2Member® Pro
16
Google® Checkout Compatible: yes w/s2Member® Pro
17
ClickBank® Compatible: yes w/s2Member® Pro
18
19
- Tested up to: 3.4
20
Requires at least: 3.2
21
22
Copyright: © 2009 WebSharks, Inc.
@@ -91,11 +91,22 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
91
92
== Upgrade Notice ==
93
94
- = v120703 =
95
Maintenance release. Upgrade immediately.
96
97
== Changelog ==
98
99
= v120703 =
100
* **(Maintenance Release) Upgrade immediately.**
101
* (s2Member/s2Member Pro) **Payflow® Express Checkout**. An issue related to Express Checkout (when using the Payflow® API), has been corrected in this release. A bug in previous releases, was causing error messages under certain circumstances that read `Field format error: Invalid PayerID`.
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
+ Version: 121023
4
+ Stable tag: 121023
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
16
Google® Checkout Compatible: yes w/s2Member® Pro
17
ClickBank® Compatible: yes w/s2Member® Pro
18
19
+ Tested up to: 3.4.2
20
Requires at least: 3.2
21
22
Copyright: © 2009 WebSharks, Inc.
91
92
== Upgrade Notice ==
93
94
+ = v121023 =
95
Maintenance release. Upgrade immediately.
96
97
== Changelog ==
98
99
+ = v121023 =
100
+ * **(Maintenance Release) Upgrade immediately.**
101
+ * (s2Member / s2Member Pro) **Bug Fix**. A bug related to s2Member's `is_site_root()` method, when fancy permalinks are NOT in use; has been corrected for compatibility with the latest version of WordPress. Please see [this thread](http://www.s2member.com/forums/topic/new-custom-field-default-not-on-old-users/#post-28792) for futher details.
102
+ * (s2Member Pro) **Import/Export Bug Fix**. An issue related to RFC guidelines for escape sequences in CSV files has been addressed in this release. Please see [this thread](http://www.s2member.com/forums/topic/new-custom-field-default-not-on-old-users/#post-28792) for futher details.
103
+ * (s2Member Pro) **ccBill® DataLink Integration**. DataLink integration with ccBill® was updated for improved compatibility across multiple ccBill® sub-accounts.
104
+ * (s2Member Pro) **ccBill® DataLink Integration**. DataLink integration with ccBill® was updated for improved compatibility w/ ccBill® servers running on MST timezone.
105
+ * (s2Member/s2Member Pro) **API Function**. A new API Function was added. See: ``s2member_login_ips_for($username)``. Please check the [s2Member® Codex](http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/) for documentation. [This thread](http://www.s2member.com/forums/topic/s2member-restriction-options-unique-ip/#post-20562) may also be of some assistance.
106
+ * (s2Member/s2Member Pro) **404 Error (Bug Fix)**. A former dependency on `l10n.js` from the WordPress® core is no longer necessary. This old dependency has been removed to prevent 404 errors in the latest versions of WordPress®. Please check [this thread](http://www.s2member.com/forums/topic/wordpress-i10n-file-404-from-s2member/#post-20567) for further details.
107
+ * (s2Member Pro) **reCAPTCHA® Bug Fix**. A bug sometimes causing failed reCAPTCHA® responses after PayPal® Express Checkout has been corrected in this release. This occurred during certain scenarios, whenever reCAPTCHA® was enabled for checkout forms, and PayPal Express Checkout was selected as the payment method of choice.
108
+ * (s2Member Pro) **ccBill® DataLink Integration**. DataLink integration with ccBill® was modified to prevent dates in the future from being requested from the DataLink API. ccBill® was responding to some DataLink requests with a failed authentication, which were caused by dates/times in the future; according to MST on the ccBill® side of things.
109
+
110
= v120703 =
111
* **(Maintenance Release) Upgrade immediately.**
112
* (s2Member/s2Member Pro) **Payflow® Express Checkout**. An issue related to Express Checkout (when using the Payflow® API), has been corrected in this release. A bug in previous releases, was causing error messages under certain circumstances that read `Field format error: Invalid PayerID`.
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
*/
20
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
21
22
- Version: 120703
23
- Stable tag: 120703
24
25
SSL Compatible: yes
26
bbPress® Compatible: yes
@@ -35,7 +35,7 @@ Authorize.Net® Compatible: yes w/s2Member® Pro
35
Google® Checkout Compatible: yes w/s2Member® Pro
36
ClickBank® Compatible: yes w/s2Member® Pro
37
38
- Tested up to: 3.4
39
Requires at least: 3.2
40
41
Copyright: © 2009 WebSharks, Inc.
@@ -75,7 +75,7 @@ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
75
* @var str
76
*/
77
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
78
- define("WS_PLUGIN__S2MEMBER_VERSION", "120703" /* !#distro-version#! */);
79
/**
80
* Minimum PHP version required to run s2Member.
81
*
@@ -105,7 +105,7 @@ if(!defined("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION"))
105
* @var str
106
*/
107
if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
108
- define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "120703" /* !#distro-version#! */);
109
/*
110
Several compatibility checks.
111
If all pass, load the s2Member plugin.
19
*/
20
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
21
22
+ Version: 121023
23
+ Stable tag: 121023
24
25
SSL Compatible: yes
26
bbPress® Compatible: yes
35
Google® Checkout Compatible: yes w/s2Member® Pro
36
ClickBank® Compatible: yes w/s2Member® Pro
37
38
+ Tested up to: 3.4.2
39
Requires at least: 3.2
40
41
Copyright: © 2009 WebSharks, Inc.
75
* @var str
76
*/
77
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
78
+ define("WS_PLUGIN__S2MEMBER_VERSION", "121023" /* !#distro-version#! */);
79
/**
80
* Minimum PHP version required to run s2Member.
81
*
105
* @var str
106
*/
107
if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
108
+ define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "121023" /* !#distro-version#! */);
109
/*
110
Several compatibility checks.
111
If all pass, load the s2Member plugin.