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

Version Description

= v130404 = (Maintenance Release) Upgrade immediately.

Download this release

Release Info

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

Code changes from version 130221 to 130404

checksum.txt CHANGED
@@ -1 +1 @@
1
- 9dbe1c5290616e7dd2d2ee9d44a482cf
1
+ dd95a97ddfcfe1a0a334d9d9a42a522c
includes/classes/files-in.inc.php CHANGED
@@ -326,6 +326,7 @@ if(!class_exists("c_ws_plugin__s2member_files_in"))
326
$_url_e_key = ($key) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($key)) : "";
327
$_url_e_storage = ($storage) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($storage)) : "";
328
$_url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($req["file_download"]));
329
330
$url = ($rewrite_base) ? rtrim($rewrite_base, "/") : rtrim($rewrite_base_guess, "/");
331
$url .= (isset($req["file_download_key"])) ? (($key && $_url_e_key) ? "/s2member-file-download-key-".$_url_e_key : "") : "";
@@ -346,6 +347,7 @@ if(!class_exists("c_ws_plugin__s2member_files_in"))
346
$_url_e_key = ($key) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($key)) : "";
347
$_url_e_storage = ($storage) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($storage)) : "";
348
$_url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($req["file_download"]));
349
350
$url = (isset($req["file_download_key"])) ? (($key && $_url_e_key) ? "&s2member_file_download_key=".$_url_e_key : "") : "";
351
$url .= (isset($req["file_stream"])) ? (($stream) ? "&s2member_file_stream=yes" : "&s2member_file_stream=no") : "";
@@ -658,6 +660,7 @@ if(!class_exists("c_ws_plugin__s2member_files_in"))
658
{
659
$file = /* Trim / force string. */ trim((string)$file, "/");
660
$url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($file));
661
662
foreach($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $option => $option_value)
663
if(preg_match("/^amazon_s3_files_/", $option) && ($option = preg_replace("/^amazon_s3_files_/", "", $option)))
@@ -807,6 +810,7 @@ if(!class_exists("c_ws_plugin__s2member_files_in"))
807
{
808
$file = /* Trim & force string. */ trim((string)$file, "/");
809
$url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($file));
810
811
foreach($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $option => $option_value)
812
if(preg_match("/^amazon_cf_files_/", $option) && ($option = preg_replace("/^amazon_cf_files_/", "", $option)))
326
$_url_e_key = ($key) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($key)) : "";
327
$_url_e_storage = ($storage) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($storage)) : "";
328
$_url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($req["file_download"]));
329
+ $_url_e_file = str_ireplace("%2F", "/", $_url_e_file);
330
331
$url = ($rewrite_base) ? rtrim($rewrite_base, "/") : rtrim($rewrite_base_guess, "/");
332
$url .= (isset($req["file_download_key"])) ? (($key && $_url_e_key) ? "/s2member-file-download-key-".$_url_e_key : "") : "";
347
$_url_e_key = ($key) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($key)) : "";
348
$_url_e_storage = ($storage) ? c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($storage)) : "";
349
$_url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($req["file_download"]));
350
+ $_url_e_file = str_ireplace("%2F", "/", $_url_e_file);
351
352
$url = (isset($req["file_download_key"])) ? (($key && $_url_e_key) ? "&s2member_file_download_key=".$_url_e_key : "") : "";
353
$url .= (isset($req["file_stream"])) ? (($stream) ? "&s2member_file_stream=yes" : "&s2member_file_stream=no") : "";
660
{
661
$file = /* Trim / force string. */ trim((string)$file, "/");
662
$url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($file));
663
+ $url_e_file = str_ireplace("%2F", "/", $url_e_file);
664
665
foreach($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $option => $option_value)
666
if(preg_match("/^amazon_s3_files_/", $option) && ($option = preg_replace("/^amazon_s3_files_/", "", $option)))
810
{
811
$file = /* Trim & force string. */ trim((string)$file, "/");
812
$url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($file));
813
+ $url_e_file = str_ireplace("%2F", "/", $url_e_file);
814
815
foreach($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $option => $option_value)
816
if(preg_match("/^amazon_cf_files_/", $option) && ($option = preg_replace("/^amazon_cf_files_/", "", $option)))
includes/classes/installation.inc.php CHANGED
@@ -94,10 +94,21 @@ if(!class_exists("c_ws_plugin__s2member_installation"))
94
if(!$v || !version_compare($v, "110912", ">=") && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"] === array("all"))
95
// s2Member v110912 changed the way the "all" option for Alternative Views was handled.
96
{
97
- $notice = '<strong>IMPORTANT:</strong> This version of s2Member® changes the way your <code>Alternative View Protections</code> work. Please review your options under: <code>s2Member -› Restriction Options -› Alternative View Protections</code>.<br />';
98
c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops"));
99
}
100
-
101
$notice = '<strong>s2Member</strong> has been <strong>reactivated</strong>, with '.(($reactivation_reason === "levels") ? '<code>'.esc_html($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]).'</code> Membership Levels' : 'the latest version').'.<br />';
102
$notice .= 'You now have version '.esc_html(WS_PLUGIN__S2MEMBER_VERSION).'. Your existing configuration remains.';
103
94
if(!$v || !version_compare($v, "110912", ">=") && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"] === array("all"))
95
// s2Member v110912 changed the way the "all" option for Alternative Views was handled.
96
{
97
+ $notice = '<strong>IMPORTANT:</strong> This version of s2Member® changes the way your <code>Alternative View Protections</code> work. Please review your options under: <code>s2Member -› Restriction Options -› Alternative View Protections</code>.';
98
c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops"));
99
}
100
+
101
+ if($v && version_compare($v, "130316", "<=")) // This version disables logging by default.
102
+ {
103
+ c_ws_plugin__s2member_menu_pages::update_all_options(array("ws_plugin__s2member_gateway_debug_logs" => "0", "ws_plugin__s2member_gateway_debug_logs_extensive" => "0"), true, false, false, false, false);
104
+
105
+ $notice = '<strong>IMPORTANT:</strong> This version of s2Member® disables s2Member\'s debug logging by default (for added security). Please see: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">s2Member® -› Log Files (Debug) -› Configuration</a> for further details.';
106
+ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops"));
107
+
108
+ $notice = '<strong>IMPORTANT / Regarding s2Member® Security Badges:</strong> If debug logging is enabled, your site will no longer qualify for an s2Member® Security Badge until you disable logging (and you MUST also download, and then delete any existing log files from the past). Please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member® Security Badges</a> for further details. If you have existing s2Member® log files, you will need to delete those files from the server before your s2Member® Security Badge can be re-enabled. s2Member® stores log files here: <code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"])).'</code>. See also: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">s2Member® -› Log Files (Debug) -› Configuration</a> for further details.';
109
+ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops"));
110
+ }
111
+
112
$notice = '<strong>s2Member</strong> has been <strong>reactivated</strong>, with '.(($reactivation_reason === "levels") ? '<code>'.esc_html($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]).'</code> Membership Levels' : 'the latest version').'.<br />';
113
$notice .= 'You now have version '.esc_html(WS_PLUGIN__S2MEMBER_VERSION).'. Your existing configuration remains.';
114
includes/classes/list-servers.inc.php CHANGED
@@ -135,7 +135,10 @@ if (!class_exists ("c_ws_plugin__s2member_list_servers"))
135
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
136
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
137
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
138
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($mailchimp, true) . "\n\n", FILE_APPEND);
139
}
140
}
141
}
@@ -155,7 +158,7 @@ if (!class_exists ("c_ws_plugin__s2member_list_servers"))
155
if ($aweber["wp_mail_response"] = wp_mail ($aweber["list_id"] . "@aweber.com", // AWeber® List ID converts to email address @aweber.com.
156
($aweber["wp_mail_sbj"] = apply_filters ("ws_plugin__s2member_aweber_sbj", "s2Member Subscription Request", get_defined_vars ())), // These Filters make it possible to customize these emails.
157
($aweber["wp_mail_msg"] = apply_filters ("ws_plugin__s2member_aweber_msg", "s2Member Subscription Request\ns2Member w/ PayPal Email ID\nAd Tracking: s2Member-" . ((is_multisite () && !is_main_site ()) ? $current_blog->domain . $current_blog->path : $_SERVER["HTTP_HOST"]) . "\nEMail Address: " . $email . "\nBuyer: " . $buyer . "\nFull Name: " . trim ($fname . " " . $lname) . "\nFirst Name: " . $fname . "\nLast Name: " . $lname . "\nIP Address: " . $ip . "\nUser ID: " . $user_id . "\nLogin: " . $login . $aweber["pass_inclusion"] . "\nRole: " . $role . "\nLevel: " . $level . "\nCCaps: " . $ccaps . "\n - end.", get_defined_vars ())),
158
- ($aweber["wp_mail_headers"] = "From: \"" . preg_replace ("/\"/", "", trim ($fname . " " . $lname)) . "\" <" . $email . ">" . (($aweber["bcc"]) ? "\r\nBcc: " . $aweber["bcc"] : "") . "\r\nContent-Type: text/plain; charset=UTF-8")))
159
$aweber["wp_mail_success"] = $success = true; // Flag indicating that we DO have a successful processing of a new List; affects the function's overall return value.
160
161
$logt = c_ws_plugin__s2member_utilities::time_details ();
@@ -168,7 +171,10 @@ if (!class_exists ("c_ws_plugin__s2member_list_servers"))
168
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
169
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
170
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
171
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($aweber, true) . "\n\n", FILE_APPEND);
172
}
173
}
174
}
@@ -254,7 +260,10 @@ if (!class_exists ("c_ws_plugin__s2member_list_servers"))
254
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
255
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
256
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
257
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($mailchimp, true) . "\n\n", FILE_APPEND);
258
}
259
}
260
}
@@ -289,7 +298,10 @@ if (!class_exists ("c_ws_plugin__s2member_list_servers"))
289
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
290
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
291
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
292
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($aweber, true) . "\n\n", FILE_APPEND);
293
}
294
}
295
}
135
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
136
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
137
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
138
+ file_put_contents ($logs_dir . "/" . $log2,
139
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
140
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($mailchimp, true)) . "\n\n",
141
+ FILE_APPEND);
142
}
143
}
144
}
158
if ($aweber["wp_mail_response"] = wp_mail ($aweber["list_id"] . "@aweber.com", // AWeber® List ID converts to email address @aweber.com.
159
($aweber["wp_mail_sbj"] = apply_filters ("ws_plugin__s2member_aweber_sbj", "s2Member Subscription Request", get_defined_vars ())), // These Filters make it possible to customize these emails.
160
($aweber["wp_mail_msg"] = apply_filters ("ws_plugin__s2member_aweber_msg", "s2Member Subscription Request\ns2Member w/ PayPal Email ID\nAd Tracking: s2Member-" . ((is_multisite () && !is_main_site ()) ? $current_blog->domain . $current_blog->path : $_SERVER["HTTP_HOST"]) . "\nEMail Address: " . $email . "\nBuyer: " . $buyer . "\nFull Name: " . trim ($fname . " " . $lname) . "\nFirst Name: " . $fname . "\nLast Name: " . $lname . "\nIP Address: " . $ip . "\nUser ID: " . $user_id . "\nLogin: " . $login . $aweber["pass_inclusion"] . "\nRole: " . $role . "\nLevel: " . $level . "\nCCaps: " . $ccaps . "\n - end.", get_defined_vars ())),
161
+ ($aweber["wp_mail_headers"] = "From: \"" . preg_replace ('/"/', "'", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"]) . "\" <" . $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"] . ">" . (($aweber["bcc"]) ? "\r\nBcc: " . $aweber["bcc"] : "") . "\r\nContent-Type: text/plain; charset=UTF-8")))
162
$aweber["wp_mail_success"] = $success = true; // Flag indicating that we DO have a successful processing of a new List; affects the function's overall return value.
163
164
$logt = c_ws_plugin__s2member_utilities::time_details ();
171
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
172
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
173
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
174
+ file_put_contents ($logs_dir . "/" . $log2,
175
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
176
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($aweber, true)) . "\n\n",
177
+ FILE_APPEND);
178
}
179
}
180
}
260
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
261
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
262
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
263
+ file_put_contents ($logs_dir . "/" . $log2,
264
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
265
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($mailchimp, true)) . "\n\n",
266
+ FILE_APPEND);
267
}
268
}
269
}
298
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
299
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
300
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
301
+ file_put_contents ($logs_dir . "/" . $log2,
302
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
303
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($aweber, true)) . "\n\n",
304
+ FILE_APPEND);
305
}
306
}
307
}
includes/classes/menu-pages.inc.php CHANGED
@@ -874,7 +874,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_pages"))
874
c_ws_plugin__s2member_admin_notices::display_admin_notice('Unprotected. The .htaccess protection file (<code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path($htaccess)).'</code>) does not contain <code>deny from all</code>. Inside your .htaccess file, add this:<br /><pre>'.esc_html($htaccess_contents).'</pre>', true);
875
876
if /* Logging disabled? */(!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
877
- c_ws_plugin__s2member_admin_notices::display_admin_notice('Logging is currently disabled by your configuration.', true);
878
879
include_once dirname(dirname(__FILE__))."/menu-pages/logs.inc.php";
880
874
c_ws_plugin__s2member_admin_notices::display_admin_notice('Unprotected. The .htaccess protection file (<code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path($htaccess)).'</code>) does not contain <code>deny from all</code>. Inside your .htaccess file, add this:<br /><pre>'.esc_html($htaccess_contents).'</pre>', true);
875
876
if /* Logging disabled? */(!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
877
+ c_ws_plugin__s2member_admin_notices::display_admin_notice('Logging is currently disabled by your configuration.');
878
879
include_once dirname(dirname(__FILE__))."/menu-pages/logs.inc.php";
880
includes/classes/paypal-notify-in.inc.php CHANGED
@@ -147,16 +147,12 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in"))
147
else // Else, use the default ``$_SERVER["HTTP_HOST"]`` error.
148
$paypal["s2member_log"][] = "Unable to verify `\$_SERVER[\"HTTP_HOST\"]`. Please check the `custom` value in your Button Code. It MUST start with your domain name.";
149
}
150
-
151
else // Extensive log reporting here. This is an area where many site owners find trouble. Depending on server configuration; remote HTTPS connections may fail.
152
{
153
$paypal["s2member_log"][] = "Unable to verify \$_POST vars. This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility.";
154
- $paypal["s2member_log"][] = "If you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure \$_POST variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.";
155
- $paypal["s2member_log"][] = "s2Member uses the `WP_Http` class for remote connections; which will try to use `cURL` first, and then fall back on the `FOPEN` method when `cURL` is not available. On a Windows® server, you may have to disable your `cURL` extension; and instead, set `allow_url_fopen = yes` in your php.ini file. The `cURL` extension (usually) does NOT support SSL connections on a Windows® server.";
156
- $paypal["s2member_log"][] = "Please see this thread: `http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/` for details regarding the ideal server configuration for s2Member.";
157
$paypal["s2member_log"][] = var_export ($_REQUEST, true); // Recording _POST + _GET vars for analysis and debugging.
158
}
159
-
160
if ($email_configs_were_on) // Back on?
161
c_ws_plugin__s2member_email_configs::email_config ();
162
/*
@@ -193,7 +189,10 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in"))
193
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
194
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
195
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
196
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($paypal, true) . "\n\n", FILE_APPEND);
197
198
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
199
do_action ("ws_plugin__s2member_during_paypal_notify", get_defined_vars ());
@@ -205,7 +204,6 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in"))
205
206
exit (((!empty ($paypal["s2member_paypal_proxy_return_url"])) ? $paypal["s2member_paypal_proxy_return_url"] : ""));
207
}
208
-
209
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
210
do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());
211
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
147
else // Else, use the default ``$_SERVER["HTTP_HOST"]`` error.
148
$paypal["s2member_log"][] = "Unable to verify `\$_SERVER[\"HTTP_HOST\"]`. Please check the `custom` value in your Button Code. It MUST start with your domain name.";
149
}
150
else // Extensive log reporting here. This is an area where many site owners find trouble. Depending on server configuration; remote HTTPS connections may fail.
151
{
152
$paypal["s2member_log"][] = "Unable to verify \$_POST vars. This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility.";
153
+ $paypal["s2member_log"][] = "Please see this KB article: `http://www.s2member.com/kb/server-scanner/`. We suggest that you run the s2Member® Server Scanner.";
154
$paypal["s2member_log"][] = var_export ($_REQUEST, true); // Recording _POST + _GET vars for analysis and debugging.
155
}
156
if ($email_configs_were_on) // Back on?
157
c_ws_plugin__s2member_email_configs::email_config ();
158
/*
189
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
190
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
191
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
192
+ file_put_contents ($logs_dir . "/" . $log2,
193
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
194
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($paypal, true)) . "\n\n",
195
+ FILE_APPEND);
196
197
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
198
do_action ("ws_plugin__s2member_during_paypal_notify", get_defined_vars ());
204
205
exit (((!empty ($paypal["s2member_paypal_proxy_return_url"])) ? $paypal["s2member_paypal_proxy_return_url"] : ""));
206
}
207
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
208
do_action ("ws_plugin__s2member_after_paypal_notify", get_defined_vars ());
209
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
includes/classes/paypal-return-in.inc.php CHANGED
@@ -124,9 +124,7 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
124
125
$paypal["s2member_log"][] = "Unable to verify \$_POST vars. This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility.";
126
$paypal["s2member_log"][] = "Please make sure that you configure a PayPal® PDT Identity Token for your installation of s2Member®. See: `s2Member -› PayPal® Options -› PayPal® PDT/Auto-Return Integration`.";
127
- $paypal["s2member_log"][] = "If you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure \$_POST variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.";
128
- $paypal["s2member_log"][] = "s2Member uses the `WP_Http` class for remote connections; which will try to use `cURL` first, and then fall back on the `FOPEN` method when `cURL` is not available. On a Windows® server, you may have to disable your `cURL` extension; and instead, set `allow_url_fopen = yes` in your php.ini file. The `cURL` extension (usually) does NOT support SSL connections on a Windows® server.";
129
- $paypal["s2member_log"][] = "Please see this thread: `http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/` for details regarding the ideal server configuration for s2Member.";
130
$paypal["s2member_log"][] = /* Recording _POST + _GET vars for analysis and debugging. */ var_export ($_REQUEST, true);
131
132
$paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after displaying an error message).";
@@ -174,7 +172,10 @@ if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
174
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
175
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
176
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
177
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($paypal, true) . "\n\n", FILE_APPEND);
178
179
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
180
do_action ("ws_plugin__s2member_during_paypal_return", get_defined_vars ());
124
125
$paypal["s2member_log"][] = "Unable to verify \$_POST vars. This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility.";
126
$paypal["s2member_log"][] = "Please make sure that you configure a PayPal® PDT Identity Token for your installation of s2Member®. See: `s2Member -› PayPal® Options -› PayPal® PDT/Auto-Return Integration`.";
127
+ $paypal["s2member_log"][] = "See also, this KB article: `http://www.s2member.com/kb/server-scanner/`. We suggest that you run the s2Member® Server Scanner.";
128
$paypal["s2member_log"][] = /* Recording _POST + _GET vars for analysis and debugging. */ var_export ($_REQUEST, true);
129
130
$paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after displaying an error message).";
172
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
173
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
174
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
175
+ file_put_contents ($logs_dir . "/" . $log2,
176
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
177
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($paypal, true)) . "\n\n",
178
+ FILE_APPEND);
179
180
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
181
do_action ("ws_plugin__s2member_during_paypal_return", get_defined_vars ());
includes/classes/paypal-utilities.inc.php CHANGED
@@ -202,7 +202,10 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
202
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
203
if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".var_export($post_vars, true)."\n"))
204
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
205
- file_put_contents($logs_dir."/".$log2, "LOG ENTRY: ".$logt . "\n" . $logv."\n".$logm."\n".$log4."\n".$log."\n\n", FILE_APPEND);
206
207
return apply_filters("ws_plugin__s2member_paypal_api_response", c_ws_plugin__s2member_paypal_utilities::_paypal_api_response_filters($response), get_defined_vars());
208
}
@@ -336,7 +339,10 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
336
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
337
if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".$nvp_post_vars."\n".var_export($post_vars, true)."\n"))
338
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
339
- file_put_contents($logs_dir."/".$log2, "LOG ENTRY: ".$logt . "\n" . $logv."\n".$logm."\n".$log4."\n".$log."\n\n", FILE_APPEND);
340
341
return apply_filters("ws_plugin__s2member_paypal_payflow_api_response", c_ws_plugin__s2member_paypal_utilities::_paypal_payflow_api_response_filters($response), get_defined_vars());
342
}
202
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
203
if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".var_export($post_vars, true)."\n"))
204
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
205
+ file_put_contents($logs_dir."/".$log2,
206
+ "LOG ENTRY: ".$logt . "\n" . $logv."\n".$logm."\n".$log4."\n".
207
+ c_ws_plugin__s2member_utils_logs::conceal_private_info($log)."\n\n",
208
+ FILE_APPEND);
209
210
return apply_filters("ws_plugin__s2member_paypal_api_response", c_ws_plugin__s2member_paypal_utilities::_paypal_api_response_filters($response), get_defined_vars());
211
}
339
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
340
if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".$nvp_post_vars."\n".var_export($post_vars, true)."\n"))
341
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
342
+ file_put_contents($logs_dir."/".$log2,
343
+ "LOG ENTRY: ".$logt . "\n" . $logv."\n".$logm."\n".$log4."\n".
344
+ c_ws_plugin__s2member_utils_logs::conceal_private_info($log)."\n\n",
345
+ FILE_APPEND);
346
347
return apply_filters("ws_plugin__s2member_paypal_payflow_api_response", c_ws_plugin__s2member_paypal_utilities::_paypal_payflow_api_response_filters($response), get_defined_vars());
348
}
includes/classes/registrations.inc.php CHANGED
@@ -1022,7 +1022,10 @@ if (!class_exists ("c_ws_plugin__s2member_registrations"))
1022
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
1023
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
1024
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
1025
- file_put_contents ($logs_dir . "/" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($reg_vars, true) . "\n\n", FILE_APPEND);
1026
1027
unset($logt, $logv, $logm, $log4, $_log4, $log2, $logs_dir, $reg_vars); // Housekeeping.
1028
1022
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
1023
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
1024
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
1025
+ file_put_contents ($logs_dir . "/" . $log2,
1026
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
1027
+ c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($reg_vars, true)) . "\n\n",
1028
+ FILE_APPEND);
1029
1030
unset($logt, $logv, $logm, $log4, $_log4, $log2, $logs_dir, $reg_vars); // Housekeeping.
1031
includes/classes/roles-caps.inc.php CHANGED
@@ -117,16 +117,17 @@ if(!class_exists("c_ws_plugin__s2member_roles_caps"))
117
public static function bbp_dynamic_role_caps($caps = FALSE, $role = FALSE)
118
{
119
if(function_exists("bbp_get_dynamic_roles") && $role !== bbp_get_blocked_role())
120
- {
121
- $caps = array_merge($caps, array("read" => true, "level_0" => true));
122
- $caps = array_merge($caps, array("access_s2member_level0" => true));
123
-
124
- if(in_array($role, array(bbp_get_keymaster_role(), bbp_get_moderator_role()), TRUE))
125
- {
126
- for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
127
- $caps = array_merge($caps, array("access_s2member_level".$n => true));
128
- }
129
- }
130
return /* Dynamic capabilities. */ $caps;
131
}
132
/**
117
public static function bbp_dynamic_role_caps($caps = FALSE, $role = FALSE)
118
{
119
if(function_exists("bbp_get_dynamic_roles") && $role !== bbp_get_blocked_role())
120
+ if(!did_action("bbp_deactivation") && !did_action("bbp_uninstall"))
121
+ {
122
+ $caps = array_merge($caps, array("read" => true, "level_0" => true));
123
+ $caps = array_merge($caps, array("access_s2member_level0" => true));
124
+
125
+ if(in_array($role, array(bbp_get_keymaster_role(), bbp_get_moderator_role()), TRUE))
126
+ {
127
+ for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
128
+ $caps = array_merge($caps, array("access_s2member_level".$n => true));
129
+ }
130
+ }
131
return /* Dynamic capabilities. */ $caps;
132
}
133
/**
includes/classes/s-badge-status-in.inc.php CHANGED
@@ -53,9 +53,9 @@ if (!class_exists ("c_ws_plugin__s2member_s_badge_status_in"))
53
54
while (@ob_end_clean ()); // Clean any existing output buffers.
55
56
- if ( /* Badge status API enabled? */$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["s_badge_status_enabled"])
57
{
58
- if ( /* Valid key? */strlen ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) >= 56)
59
{
60
if (defined ("AUTH_KEY") && strlen (AUTH_KEY) >= 60 && stripos (AUTH_KEY, "unique phrase") === false)
61
if (defined ("SECURE_AUTH_KEY") && strlen (SECURE_AUTH_KEY) >= 60 && stripos (SECURE_AUTH_KEY, "unique phrase") === false)
@@ -71,11 +71,14 @@ if (!class_exists ("c_ws_plugin__s2member_s_badge_status_in"))
71
{
72
if (defined ("DB_USER") && DB_USER && defined ("DB_PASSWORD") && DB_PASSWORD && DB_USER !== DB_PASSWORD)
73
{
74
- if (!apply_filters ("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars ()))
75
- if ( /* Enabled by site owner? */$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
76
{
77
- if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"])
78
- exit ("1"); // OK good. Things look pretty secure here.
79
}
80
}
81
}
53
54
while (@ob_end_clean ()); // Clean any existing output buffers.
55
56
+ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["s_badge_status_enabled"])
57
{
58
+ if (strlen ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) >= 56)
59
{
60
if (defined ("AUTH_KEY") && strlen (AUTH_KEY) >= 60 && stripos (AUTH_KEY, "unique phrase") === false)
61
if (defined ("SECURE_AUTH_KEY") && strlen (SECURE_AUTH_KEY) >= 60 && stripos (SECURE_AUTH_KEY, "unique phrase") === false)
71
{
72
if (defined ("DB_USER") && DB_USER && defined ("DB_PASSWORD") && DB_PASSWORD && DB_USER !== DB_PASSWORD)
73
{
74
+ if (!apply_filters ("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars ()) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
75
+ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"])
76
{
77
+ if ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"] && !glob($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"].'/*'))
78
+ || $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"] !== $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_logs_dir"])
79
+ {
80
+ exit ("1"); // OK good. Things look pretty secure here.
81
+ }
82
}
83
}
84
}
includes/classes/sc-files-in.inc.php CHANGED
@@ -102,7 +102,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
102
103
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
104
105
- $attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics »» */ "file_download" => "", /* Configuration » */ "player" => "jwplayer-v6-rtmp", "player_id" => "s2-stream-".md5(uniqid("", TRUE)), "player_path" => "/jwplayer/jwplayer.js", "player_key" => "", "player_title" => "", "player_image" => "", "player_mediaid" => "", "player_description" => "", "player_captions" => "", /* Layout » */ "player_controls" => "yes", "player_height" => "270", "player_skin" => "", "player_stretching" => "uniform", "player_width" => "480", /* Playback » */ "player_autostart" => "no", "player_fallback" => "yes", "player_mute" => "no", "player_primary" => "flash", "player_repeat" => "no", "player_startparam" => "", /* Advanced option blocks » */ "player_option_blocks" => ""), $attr);
106
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
107
108
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
@@ -116,7 +116,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
116
$config[$key] = $value;
117
118
unset /* Ditch these now. We don't want these bleeding into Hooks/Filters anyway. */($key, $value);
119
-
120
if /* Looking for a File Download URL? */(!empty($config) && isset($config["file_download"]))
121
{
122
$_get = c_ws_plugin__s2member_files::create_file_download_url($config, TRUE);
@@ -147,11 +147,11 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
147
else $get = preg_replace("/%%player_captions%%/", "[]", $get);
148
149
$get = preg_replace("/%%player_controls%%/", ((filter_var($attr["player_controls"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
150
- $get = preg_replace("/%%player_height%%/", (integer)$attr["player_height"], $get);
151
$get = preg_replace("/%%player_skin%%/", $attr["player_skin"], $get);
152
$get = preg_replace("/%%player_stretching%%/", $attr["player_stretching"], $get);
153
- $get = preg_replace("/%%player_width%%/", (integer)$attr["player_width"], $get);
154
-
155
$get = preg_replace("/%%player_autostart%%/", ((filter_var($attr["player_autostart"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
156
$get = preg_replace("/%%player_fallback%%/", ((filter_var($attr["player_fallback"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
157
$get = preg_replace("/%%player_mute%%/", ((filter_var($attr["player_mute"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
102
103
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
104
105
+ $attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics »» */ "file_download" => "", /* Configuration » */ "player" => "jwplayer-v6-rtmp", "player_id" => "s2-stream-".md5(uniqid("", TRUE)), "player_path" => "/jwplayer/jwplayer.js", "player_key" => "", "player_title" => "", "player_image" => "", "player_mediaid" => "", "player_description" => "", "player_captions" => "", /* Layout » */ "player_controls" => "yes", "player_skin" => "", "player_stretching" => "uniform", "player_width" => "480", "player_height" => "270", /* Playback » */ "player_autostart" => "no", "player_fallback" => "yes", "player_mute" => "no", "player_primary" => "flash", "player_repeat" => "no", "player_startparam" => "", /* Advanced option blocks » */ "player_option_blocks" => ""), $attr);
106
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
107
108
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
116
$config[$key] = $value;
117
118
unset /* Ditch these now. We don't want these bleeding into Hooks/Filters anyway. */($key, $value);
119
+
120
if /* Looking for a File Download URL? */(!empty($config) && isset($config["file_download"]))
121
{
122
$_get = c_ws_plugin__s2member_files::create_file_download_url($config, TRUE);
147
else $get = preg_replace("/%%player_captions%%/", "[]", $get);
148
149
$get = preg_replace("/%%player_controls%%/", ((filter_var($attr["player_controls"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
150
+ $get = preg_replace("/%%player_width%%/", ((strpos($attr["player_width"], "%") !== FALSE) ? "'".c_ws_plugin__s2member_utils_strings::trim($attr["player_width"], NULL, "'\"")."'" : (integer)$attr["player_width"]), $get);
151
+ $get = preg_replace("/%%player_height%%/", ((strpos($attr["player_height"], "%") !== FALSE) ? "'".c_ws_plugin__s2member_utils_strings::trim($attr["player_height"], NULL, "'\"")."'" : (integer)$attr["player_height"]), $get);
152
$get = preg_replace("/%%player_skin%%/", $attr["player_skin"], $get);
153
$get = preg_replace("/%%player_stretching%%/", $attr["player_stretching"], $get);
154
+
155
$get = preg_replace("/%%player_autostart%%/", ((filter_var($attr["player_autostart"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
156
$get = preg_replace("/%%player_fallback%%/", ((filter_var($attr["player_fallback"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
157
$get = preg_replace("/%%player_mute%%/", ((filter_var($attr["player_mute"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
includes/classes/users-list.inc.php CHANGED
@@ -90,6 +90,7 @@ if (!class_exists ("c_ws_plugin__s2member_users_list"))
90
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
91
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
92
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
$query->query_where .= " OR `user_login` LIKE '" . $s . "' OR `user_nicename` LIKE '" . $s . "' OR `user_email` LIKE '" . $s . "' OR `user_url` LIKE '" . $s . "' OR `display_name` LIKE '" . $s . "'";
94
$query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
95
$query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities'" .
90
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
91
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
92
$query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
+ $query->query_where .= /* Includes first/last name. */ " OR (`" . $wpdb->usermeta . "`.`meta_key` LIKE '%_name' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
94
$query->query_where .= " OR `user_login` LIKE '" . $s . "' OR `user_nicename` LIKE '" . $s . "' OR `user_email` LIKE '" . $s . "' OR `user_url` LIKE '" . $s . "' OR `display_name` LIKE '" . $s . "'";
95
$query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
96
$query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities'" .
includes/classes/utils-logs.inc.php CHANGED
@@ -104,14 +104,22 @@ if (!class_exists ("c_ws_plugin__s2member_utils_logs"))
104
$log4 = (is_multisite () && !is_main_site ()) ? ($_log4 = $current_blog->domain . $current_blog->path) . "\n" . $log4 : $log4;
105
$log2 = (is_multisite () && !is_main_site ()) ? "http-api-debug-4-" . trim (preg_replace ("/[^a-z0-9]/i", "-", $_log4), "-") . ".log" : "http-api-debug.log";
106
107
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
108
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
109
{
110
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs_extensive"])
111
- file_put_contents ($logs_dir . "/wp-" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($http_api_debug, true) . "\n\n", FILE_APPEND);
112
113
if($is_s2member) // Log s2Member® HTTP connections separately.
114
- file_put_contents ($logs_dir . "/s2-" . $log2, "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" . var_export ($http_api_debug, true) . "\n\n", FILE_APPEND);
115
}
116
}
117
/**
@@ -181,6 +189,34 @@ if (!class_exists ("c_ws_plugin__s2member_utils_logs"))
181
}
182
return true;
183
}
184
}
185
}
186
?>
104
$log4 = (is_multisite () && !is_main_site ()) ? ($_log4 = $current_blog->domain . $current_blog->path) . "\n" . $log4 : $log4;
105
$log2 = (is_multisite () && !is_main_site ()) ? "http-api-debug-4-" . trim (preg_replace ("/[^a-z0-9]/i", "-", $_log4), "-") . ".log" : "http-api-debug.log";
106
107
+ $http_api_debug_conceal_private_info = c_ws_plugin__s2member_utils_logs::conceal_private_info(var_export ($http_api_debug, true));
108
+
109
if (is_dir ($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
110
if (is_writable ($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files ())
111
{
112
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs_extensive"])
113
+ file_put_contents ($logs_dir . "/wp-" . $log2,
114
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
115
+ $http_api_debug_conceal_private_info . "\n\n",
116
+ FILE_APPEND);
117
118
if($is_s2member) // Log s2Member® HTTP connections separately.
119
+ file_put_contents ($logs_dir . "/s2-" . $log2,
120
+ "LOG ENTRY: ".$logt . "\n" . $logv . "\n" . $logm . "\n" . $log4 . "\n" .
121
+ $http_api_debug_conceal_private_info . "\n\n",
122
+ FILE_APPEND);
123
}
124
}
125
/**
189
}
190
return true;
191
}
192
+
193
+ /**
194
+ * Attempts to conceal private details in log entries.
195
+ *
196
+ * @package s2Member\Utilities
197
+ * @since 130315
198
+ *
199
+ * @param string $log_entry The log entry we need to conceal private details in.
200
+ * @return string Filtered string with some data X'd out :-)
201
+ */
202
+ public static function conceal_private_info($log_entry)
203
+ {
204
+ $log_entry = preg_replace('/\b([3456][0-9]{10,11})([0-9]{4})\b/', 'xxxxxxxxxxxx'.'$2', (string)$log_entry);
205
+
206
+ $log_entry = preg_replace('/(\'.*pass_?(?:word)?(?:[0-9]+)?\'\s*\=\>\s*\')([^\']+)(\')/', '$1'.'xxxxxxxx/pass'.'$3', $log_entry);
207
+ $log_entry = preg_replace('/([&?][^&]*pass_?(?:word)?(?:[0-9]+)?\=)([^&]+)/', '$1'.'xxxxxxxx/pass', $log_entry);
208
+
209
+ $log_entry = preg_replace('/(\'api_?(?:key|secret)\'\s*\=\>\s*\')([^\']+)(\')/', '$1'.'xxxxxxxx/api/key/sec'.'$3', $log_entry);
210
+ $log_entry = preg_replace('/([&?][^&]api_?(?:key|secret)\=)([^&]+)/', '$1'.'xxxxxxxx/api/key/sec', $log_entry);
211
+
212
+ $log_entry = preg_replace('/(\'(?:PWD|SIGNATURE)\'\s*\=\>\s*\')([^\']+)(\')/', '$1'.'xxxxxxxx/PWD/SIG'.'$3', $log_entry);
213
+ $log_entry = preg_replace('/([&?][^&](?:PWD|SIGNATURE)\=)([^&]+)/', '$1'.'xxxxxxxx/PWD/SIG', $log_entry);
214
+
215
+ $log_entry = preg_replace('/(\'(?:x_login|x_tran_key)\'\s*\=\>\s*\')([^\']+)(\')/', '$1'.'xxxxxxxx/key/tran'.'$3', $log_entry);
216
+ $log_entry = preg_replace('/([&?][^&](?:x_login|x_tran_key)\=)([^&]+)/', '$1'.'xxxxxxxx/key/tran', $log_entry);
217
+
218
+ return $log_entry;
219
+ }
220
}
221
}
222
?>
includes/menu-pages/els-ops.inc.php CHANGED
@@ -102,6 +102,14 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
102
103
echo '</tbody>'."\n";
104
echo '</table>'."\n";
105
echo '</div>'."\n";
106
107
echo '</div>'."\n";
@@ -121,6 +129,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
121
echo '<p>s2Member can be integrated with AWeber®. AWeber® is an email marketing service. Whether you\'re looking to get your first email campaign off the ground, or you\'re a seasoned veteran who wants to dig into advanced tools like detailed email web analytics, activity based segmentation, geo-targeting and broadcast split-testing, AWeber\'s got just what you need to make email marketing work for you.</p>'."\n";
122
echo '<p>You can have your Members automatically subscribed to your AWeber® marketing lists <em>(e.g. newsletters / auto-responders)</em>. You\'ll need an <a href="http://www.s2member.com/aweber" target="_blank" rel="external">AWeber® account</a> and your <a href="#" onclick="alert(\'To obtain your AWeber® List ID(s), log into your AWeber® account. Click on the Lists tab. On that page you\\\'ll find a Unique List ID associated with each of your lists. AWeber® sometimes refers to this as a List Name instead of a List ID.\'); return false;">AWeber® List IDs</a>. You will ALSO need to configure a <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">Custom Email Parser</a> inside your AWeber® account.</p>'."\n";
123
echo '<p>Log into AWeber®, and go to <em>My Lists -› Email Parser</em>. If you like, choose the PayPal® Parser <em>(even if you\'re not using PayPal® as your Payment Gateway)</em>. You can safely ignore the additional instructions they provide. s2Member just needs the PayPal® box checked, and that\'s all. Or, even better, integrate <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">s2Member\'s Custom Email Parser</a> for AWeber, which <strong>will improve reliability</strong> and flexibility.</p>'."\n";
124
do_action("ws_plugin__s2member_during_els_ops_page_during_left_sections_during_aweber", get_defined_vars());
125
126
echo '<table class="form-table">'."\n";
@@ -142,7 +151,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
142
echo '<td>'."\n";
143
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_level'.$n.'_aweber_list_ids" id="ws-plugin--s2member-level'.$n.'-aweber-list-ids" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_aweber_list_ids"]).'" /><br />'."\n";
144
echo 'New '.(($n === 0) ? 'Free Subscribers' : 'Level #'.$n.' Members').' will be subscribed to these List IDs.<br />'."\n";
145
- echo 'Ex: <code>mylist, myotherlist, anotherlist</code>'."\n";
146
echo '</td>'."\n";
147
148
echo '</tr>'."\n";
@@ -150,6 +159,14 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
150
151
echo '</tbody>'."\n";
152
echo '</table>'."\n";
153
echo '</div>'."\n";
154
155
echo '</div>'."\n";
102
103
echo '</tbody>'."\n";
104
echo '</table>'."\n";
105
+
106
+ echo '<div class="ws-menu-page-hr"></div>'."\n";
107
+
108
+ echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
109
+ echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during MailChimp® processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
110
+ echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
111
+ echo '</div>'."\n";
112
+
113
echo '</div>'."\n";
114
115
echo '</div>'."\n";
129
echo '<p>s2Member can be integrated with AWeber®. AWeber® is an email marketing service. Whether you\'re looking to get your first email campaign off the ground, or you\'re a seasoned veteran who wants to dig into advanced tools like detailed email web analytics, activity based segmentation, geo-targeting and broadcast split-testing, AWeber\'s got just what you need to make email marketing work for you.</p>'."\n";
130
echo '<p>You can have your Members automatically subscribed to your AWeber® marketing lists <em>(e.g. newsletters / auto-responders)</em>. You\'ll need an <a href="http://www.s2member.com/aweber" target="_blank" rel="external">AWeber® account</a> and your <a href="#" onclick="alert(\'To obtain your AWeber® List ID(s), log into your AWeber® account. Click on the Lists tab. On that page you\\\'ll find a Unique List ID associated with each of your lists. AWeber® sometimes refers to this as a List Name instead of a List ID.\'); return false;">AWeber® List IDs</a>. You will ALSO need to configure a <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">Custom Email Parser</a> inside your AWeber® account.</p>'."\n";
131
echo '<p>Log into AWeber®, and go to <em>My Lists -› Email Parser</em>. If you like, choose the PayPal® Parser <em>(even if you\'re not using PayPal® as your Payment Gateway)</em>. You can safely ignore the additional instructions they provide. s2Member just needs the PayPal® box checked, and that\'s all. Or, even better, integrate <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">s2Member\'s Custom Email Parser</a> for AWeber, which <strong>will improve reliability</strong> and flexibility.</p>'."\n";
132
+ echo '<p><em><strong>AWeber® Tip:</strong> If you want your Members to be subscribed to multiple AWeber® List IDs at the same time, instead of comma-delimiting those List IDs here; we suggest a single List ID in your s2Member® integration; then use <a href="https://help.aweber.com/entries/21696463-Can-I-Add-Subscribers-to-More-Than-One-List-At-Once-" target="_blank" rel="external">AWeber® Automation Rules</a> for this. Automation Rules can also reduce the number of email confirmation notices that Members receive.</em></p>'."\n";
133
do_action("ws_plugin__s2member_during_els_ops_page_during_left_sections_during_aweber", get_defined_vars());
134
135
echo '<table class="form-table">'."\n";
151
echo '<td>'."\n";
152
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_level'.$n.'_aweber_list_ids" id="ws-plugin--s2member-level'.$n.'-aweber-list-ids" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_aweber_list_ids"]).'" /><br />'."\n";
153
echo 'New '.(($n === 0) ? 'Free Subscribers' : 'Level #'.$n.' Members').' will be subscribed to these List IDs.<br />'."\n";
154
+ echo 'Ex: <code>mylist, anotherlist</code> — See also: <a href="https://help.aweber.com/entries/21696463-Can-I-Add-Subscribers-to-More-Than-One-List-At-Once-" target="_blank" rel="external">Automation Rules</a>'."\n";
155
echo '</td>'."\n";
156
157
echo '</tr>'."\n";
159
160
echo '</tbody>'."\n";
161
echo '</table>'."\n";
162
+
163
+ echo '<div class="ws-menu-page-hr"></div>'."\n";
164
+
165
+ echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
166
+ echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during AWeber® processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
167
+ echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
168
+ echo '</div>'."\n";
169
+
170
echo '</div>'."\n";
171
172
echo '</div>'."\n";
includes/menu-pages/logs.inc.php CHANGED
@@ -84,6 +84,15 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
84
echo '<div class="ws-menu-page-section ws-plugin--s2member-log-settings-section">'."\n";
85
86
echo '<h3>s2Member® Logging Configuration (for Debugging Purposes)</h3>'."\n";
87
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_during_log_settings", get_defined_vars());
88
89
echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">' . "\n";
@@ -105,7 +114,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
105
echo '<td>'."\n";
106
echo '<input type="radio" name="ws_plugin__s2member_gateway_debug_logs" id="ws-plugin--s2member-gateway-debug-logs-0" value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-gateway-debug-logs-0">No</label> &nbsp;&nbsp;&nbsp; <input type="radio" name="ws_plugin__s2member_gateway_debug_logs" id="ws-plugin--s2member-gateway-debug-logs-1" value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-gateway-debug-logs-1">Yes, enable debugging w/ HTTP, API, IPN &amp; Return Page logging (and List Server API logs too).</label><br />'."\n";
107
echo '<em>This enables logging overall. Includes s2Member® HTTP, API, IPN and Return Page logging. Also logs any List Server integrations.</em><br />'."\n";
108
- echo '<em>The log files are stored here: <code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"])).'</code></em>'."\n";
109
echo '</td>'."\n";
110
111
echo '</tr>'."\n";
@@ -148,10 +157,6 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
148
echo '<div class="ws-menu-page-group" title="s2Member® Log Viewer (for Debugging Purposes)" default-state="open">'."\n";
149
150
echo '<div class="ws-menu-page-section ws-plugin--s2member-logs-section">'."\n";
151
- echo '<h3>s2Member® Log Viewer (for Debugging Purposes)</h3>'."\n";
152
-
153
- echo '<p><span class="ws-menu-page-hilite">s2Member® keeps a log of ALL of its communication with Payment Gateways. If you are having trouble, please review your log files below.</span></p>'."\n";
154
-
155
echo '<h3>Debugging Tools/Tips &amp; Other Important Details (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-debugging-tips-details\').toggle(); return false;" class="ws-dotted-link">click here to toggle</a>)</h3>'."\n";
156
157
echo '<div id="ws-plugin--s2member-debugging-tips-details" style="display:none;">'."\n";
84
echo '<div class="ws-menu-page-section ws-plugin--s2member-log-settings-section">'."\n";
85
86
echo '<h3>s2Member® Logging Configuration (for Debugging Purposes)</h3>'."\n";
87
+
88
+ echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
89
+ echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems that occur during processing. Enable logging here, and then view your log files below; in the s2Member® Log Viewer.</span></p>'."\n";
90
+ echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
91
+ echo '<p style="font-size:110%; margin-bottom:0;"><span>Regarding s2Member® Security Badges. If debug logging is enabled, your site will NOT qualify for an s2Member® Security Badge until you disable logging (and you must ALSO download, and then delete any existing log files). For further details, please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member® Security Badges</a>.</span></p>'."\n";
92
+ echo '</div>'."\n";
93
+
94
+ echo '<div class="ws-menu-page-hr"></div>'."\n";
95
+
96
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_during_log_settings", get_defined_vars());
97
98
echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">' . "\n";
114
echo '<td>'."\n";
115
echo '<input type="radio" name="ws_plugin__s2member_gateway_debug_logs" id="ws-plugin--s2member-gateway-debug-logs-0" value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-gateway-debug-logs-0">No</label> &nbsp;&nbsp;&nbsp; <input type="radio" name="ws_plugin__s2member_gateway_debug_logs" id="ws-plugin--s2member-gateway-debug-logs-1" value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-gateway-debug-logs-1">Yes, enable debugging w/ HTTP, API, IPN &amp; Return Page logging (and List Server API logs too).</label><br />'."\n";
116
echo '<em>This enables logging overall. Includes s2Member® HTTP, API, IPN and Return Page logging. Also logs any List Server integrations.</em><br />'."\n";
117
+ echo '<em>* Use only for debugging. This should NEVER be enabled on a live site.<br />* The log files are stored here: <code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"])).'</code></em>'."\n";
118
echo '</td>'."\n";
119
120
echo '</tr>'."\n";
157
echo '<div class="ws-menu-page-group" title="s2Member® Log Viewer (for Debugging Purposes)" default-state="open">'."\n";
158
159
echo '<div class="ws-menu-page-section ws-plugin--s2member-logs-section">'."\n";
160
echo '<h3>Debugging Tools/Tips &amp; Other Important Details (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-debugging-tips-details\').toggle(); return false;" class="ws-dotted-link">click here to toggle</a>)</h3>'."\n";
161
162
echo '<div id="ws-plugin--s2member-debugging-tips-details" style="display:none;">'."\n";
includes/menu-pages/paypal-buttons.inc.php CHANGED
@@ -175,7 +175,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
175
echo '</select></p>' . "\n";
176
177
echo '<p id="ws-plugin--s2member-modification-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-modification-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ lt;input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-amount" value="0.00" size="4" /></p>' . "\n";
178
- echo '<p><span id="ws-plugin--s2member-modification-trial-then">Then, </span>I want to charge: lt;input type="text" autocomplete="off" id="ws-plugin--s2member-modification-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-modification-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select><span id="ws-plugin--s2member-modification-20p-rule"><br /><small>* Watch out for <a href="https://www.x.com/thread/41748" target="_blank" rel="external">the 20% rule</a>. Additional details are <a href="http://www.s2member.com/paypal-20p-rule" target="_blank" rel="external">documented here</a>.<br />* <strong>Tip</strong> <a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank" rel="external">s2Member Pro Forms</a> are NOT subjected to this ridiculous 20% rule.</small></span></p>' . "\n";
179
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal® account. PayPal® allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal®, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal® Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-modification-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'modification\');" class="button-primary" /></p>' . "\n";
180
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
181
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-modification-ccaps" size="40" /></p>' . "\n";
175
echo '</select></p>' . "\n";
176
177
echo '<p id="ws-plugin--s2member-modification-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-modification-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ lt;input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-amount" value="0.00" size="4" /></p>' . "\n";
178
+ echo '<p><span id="ws-plugin--s2member-modification-trial-then">Then, </span>I want to charge: lt;input type="text" autocomplete="off" id="ws-plugin--s2member-modification-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-modification-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
179
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal® account. PayPal® allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal®, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal® Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-modification-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'modification\');" class="button-primary" /></p>' . "\n";
180
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
181
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-modification-ccaps" size="40" /></p>' . "\n";
includes/menu-pages/paypal-ops.inc.php CHANGED
@@ -190,6 +190,16 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
190
echo '<em class="ws-menu-page-hilite">If you have any trouble, please review your s2Member® log files for problems. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Viewer</a></em>'."\n";
191
echo '</td>'."\n";
192
193
echo '</tr>'."\n";
194
}
195
190
echo '<em class="ws-menu-page-hilite">If you have any trouble, please review your s2Member® log files for problems. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Viewer</a></em>'."\n";
191
echo '</td>'."\n";
192
193
+ echo '</tr>'."\n";
194
+ echo '<tr>'."\n";
195
+
196
+ echo '<td>'."\n";
197
+ echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
198
+ echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during payment processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
199
+ echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
200
+ echo '</div>'."\n";
201
+ echo '</td>'."\n";
202
+
203
echo '</tr>'."\n";
204
}
205
includes/syscon.inc.php CHANGED
@@ -68,13 +68,15 @@ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["streaming_file_extns"] = array_unique(
68
/*
69
Configure directory and .htaccess for files protected by s2Member.
70
*/
71
- $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"] = apply_filters("ws_plugin__s2member_files_dir", dirname(dirname(__FILE__))."-files".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : ""));
72
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files-no-gzip.php";
73
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files.php";
74
/*
75
Configure the directory for logs protected by s2Member.
76
*/
77
- $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"] = apply_filters("ws_plugin__s2member_logs_dir", dirname(dirname(__FILE__))."-logs".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : ""));
78
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-logs.php";
79
/*
80
Configure the global reCaptcha (www.websharks-inc.net / or any domain). These public/private keys work on any installation.
@@ -124,7 +126,7 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
124
$default_options["options_checksum"] = "";
125
$default_options["options_version"] = "1.0";
126
127
- $default_options["gateway_debug_logs"] = "1";
128
$default_options["gateway_debug_logs_extensive"] = "0";
129
130
$default_options["sec_encryption_key"] = "";
@@ -364,7 +366,7 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
364
else if($key === "max_ip_restriction" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
365
$value = $default_options[$key];
366
367
- else if($key === "max_ip_restriction_time" && (!is_string($value) || !is_numeric($value) || $value < 900 || $value > 31556926))
368
$value = $default_options[$key];
369
370
else if($key === "max_failed_login_attempts" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
68
/*
69
Configure directory and .htaccess for files protected by s2Member.
70
*/
71
+ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_files_dir"] = dirname(dirname(__FILE__))."-files".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : "");
72
+ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"] = apply_filters("ws_plugin__s2member_files_dir", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_files_dir"]);
73
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files-no-gzip.php";
74
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files.php";
75
/*
76
Configure the directory for logs protected by s2Member.
77
*/
78
+ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_logs_dir"] = dirname(dirname(__FILE__))."-logs".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : "");
79
+ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"] = apply_filters("ws_plugin__s2member_logs_dir", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_logs_dir"]);
80
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-logs.php";
81
/*
82
Configure the global reCaptcha (www.websharks-inc.net / or any domain). These public/private keys work on any installation.
126
$default_options["options_checksum"] = "";
127
$default_options["options_version"] = "1.0";
128
129
+ $default_options["gateway_debug_logs"] = "0";
130
$default_options["gateway_debug_logs_extensive"] = "0";
131
132
$default_options["sec_encryption_key"] = "";
366
else if($key === "max_ip_restriction" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
367
$value = $default_options[$key];
368
369
+ else if($key === "max_ip_restriction_time" && (!is_string($value) || !is_numeric($value) || $value < 300 || $value > 31556926))
370
$value = $default_options[$key];
371
372
else if($key === "max_failed_login_attempts" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
includes/templates/players/jwplayer-v6-rtmp-only.php CHANGED
@@ -3,7 +3,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
3
exit("Do not access this file directly.");
4
?>
5
6
- <div id="%%player_id%%"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
@@ -28,10 +28,10 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
28
}],
29
30
controls: %%player_controls%%,
31
- height: %%player_height%%,
32
skin: '%%player_skin%%',
33
stretching: '%%player_stretching%%',
34
width: %%player_width%%,
35
36
autostart: %%player_autostart%%,
37
fallback: %%player_fallback%%,
3
exit("Do not access this file directly.");
4
?>
5
6
+ <div id="%%player_id%%" class="s2member-jwplayer-v6"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
28
}],
29
30
controls: %%player_controls%%,
31
skin: '%%player_skin%%',
32
stretching: '%%player_stretching%%',
33
width: %%player_width%%,
34
+ height: %%player_height%%,
35
36
autostart: %%player_autostart%%,
37
fallback: %%player_fallback%%,
includes/templates/players/jwplayer-v6-rtmp.php CHANGED
@@ -3,7 +3,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
3
exit("Do not access this file directly.");
4
?>
5
6
- <div id="%%player_id%%"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
@@ -29,10 +29,10 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
29
}],
30
31
controls: %%player_controls%%,
32
- height: %%player_height%%,
33
skin: '%%player_skin%%',
34
stretching: '%%player_stretching%%',
35
width: %%player_width%%,
36
37
autostart: %%player_autostart%%,
38
fallback: %%player_fallback%%,
3
exit("Do not access this file directly.");
4
?>
5
6
+ <div id="%%player_id%%" class="s2member-jwplayer-v6"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
29
}],
30
31
controls: %%player_controls%%,
32
skin: '%%player_skin%%',
33
stretching: '%%player_stretching%%',
34
width: %%player_width%%,
35
+ height: %%player_height%%,
36
37
autostart: %%player_autostart%%,
38
fallback: %%player_fallback%%,
includes/templates/players/jwplayer-v6.php CHANGED
@@ -3,7 +3,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
3
exit("Do not access this file directly.");
4
?>
5
6
- <div id="%%player_id%%"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
@@ -28,10 +28,10 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
28
}],
29
30
controls: %%player_controls%%,
31
- height: %%player_height%%,
32
skin: '%%player_skin%%',
33
stretching: '%%player_stretching%%',
34
width: %%player_width%%,
35
36
autostart: %%player_autostart%%,
37
fallback: %%player_fallback%%,
3
exit("Do not access this file directly.");
4
?>
5
6
+ <div id="%%player_id%%" class="s2member-jwplayer-v6"></div>
7
<script type="text/javascript" src="%%player_path%%"></script>
8
<script type="text/javascript">
9
if(typeof jwplayer.key !== 'string' || !jwplayer.key)
28
}],
29
30
controls: %%player_controls%%,
31
skin: '%%player_skin%%',
32
stretching: '%%player_stretching%%',
33
width: %%player_width%%,
34
+ height: %%player_height%%,
35
36
autostart: %%player_autostart%%,
37
fallback: %%player_fallback%%,
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 130220\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
- "POT-Creation-Date: 2013-02-21 14:12:39+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
@@ -92,17 +92,17 @@ msgctxt "s2member-front"
92
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› Download Options -› Basic Download Restrictions</code>."
93
msgstr ""
94
95
- #: s2member/includes/classes/files-in.inc.php:500
96
msgctxt "s2member-front"
97
msgid "<strong>503: Access denied.</strong> Invalid File Download specs."
98
msgstr ""
99
100
- #: s2member/includes/classes/files-in.inc.php:586
101
msgctxt "s2member-front"
102
msgid "Members Only"
103
msgstr ""
104
105
- #: s2member/includes/classes/files-in.inc.php:592
106
msgctxt "s2member-front"
107
msgid "<strong>401:</strong> Sorry, access denied."
108
msgstr ""
@@ -111,12 +111,12 @@ msgstr ""
111
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
112
#. `%s` if you like.
113
114
- #: s2member/includes/classes/files-in.inc.php:730
115
msgctxt "s2member-admin"
116
msgid "Unable to update existing Amazon® S3 Cross-Domain Policy. %s"
117
msgstr ""
118
119
- #: s2member/includes/classes/files-in.inc.php:733
120
msgctxt "s2member-admin"
121
msgid "Unable to update existing Amazon® S3 Cross-Domain Policy. Connection failed."
122
msgstr ""
@@ -125,12 +125,12 @@ msgstr ""
125
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
126
#. `%s` if you like.
127
128
- #: s2member/includes/classes/files-in.inc.php:737
129
msgctxt "s2member-admin"
130
msgid "Unable to update existing Amazon® S3 Bucket Policy. %s"
131
msgstr ""
132
133
- #: s2member/includes/classes/files-in.inc.php:740
134
msgctxt "s2member-admin"
135
msgid "Unable to update existing Amazon® S3 Bucket Policy. Connection failed."
136
msgstr ""
@@ -139,17 +139,17 @@ msgstr ""
139
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
140
#. `%s` if you like.
141
142
- #: s2member/includes/classes/files-in.inc.php:744
143
msgctxt "s2member-admin"
144
msgid "Unable to update existing Amazon® S3 Bucket ACLs. %s"
145
msgstr ""
146
147
- #: s2member/includes/classes/files-in.inc.php:747
148
msgctxt "s2member-admin"
149
msgid "Unable to update existing Amazon® S3 Bucket ACLs. Connection failed."
150
msgstr ""
151
152
- #: s2member/includes/classes/files-in.inc.php:750
153
msgctxt "s2member-admin"
154
msgid "Unable to acquire/read existing Amazon® S3 Bucket ACLs. Unexpected response."
155
msgstr ""
@@ -158,22 +158,22 @@ msgstr ""
158
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
159
#. `%s` if you like.
160
161
- #: s2member/includes/classes/files-in.inc.php:754
162
msgctxt "s2member-admin"
163
msgid "Unable to acquire existing Amazon® S3 Bucket ACLs. %s"
164
msgstr ""
165
166
- #: s2member/includes/classes/files-in.inc.php:757
167
msgctxt "s2member-admin"
168
msgid "Unable to acquire existing Amazon® S3 Bucket ACLs. Connection failed."
169
msgstr ""
170
171
- #: s2member/includes/classes/files-in.inc.php:760
172
msgctxt "s2member-admin"
173
msgid "Unable to auto-configure existing Amazon® S3 Bucket ACLs. Incomplete Amazon® S3 configuration options. Missing one of: Amazon® S3 Bucket, Access Key, or Secret Key."
174
msgstr ""
175
176
- #: s2member/includes/classes/files-in.inc.php:859
177
msgctxt "s2member-admin"
178
msgid "Unable to delete existing Amazon® CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
179
msgstr ""
@@ -182,12 +182,12 @@ msgstr ""
182
#. message, which comes from the Amazon® CloudFront API call. Feel free to
183
#. exclude `%s` if you like.
184
185
- #: s2member/includes/classes/files-in.inc.php:866
186
msgctxt "s2member-admin"
187
msgid "Unable to delete existing Amazon® CloudFront Downloads Distro. %s"
188
msgstr ""
189
190
- #: s2member/includes/classes/files-in.inc.php:878
191
msgctxt "s2member-admin"
192
msgid "Unable to delete existing Amazon® CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
193
msgstr ""
@@ -196,7 +196,7 @@ msgstr ""
196
#. message, which comes from the Amazon® CloudFront API call. Feel free to
197
#. exclude `%s` if you like.
198
199
- #: s2member/includes/classes/files-in.inc.php:885
200
msgctxt "s2member-admin"
201
msgid "Unable to delete existing Amazon® CloudFront Streaming Distro. %s"
202
msgstr ""
@@ -205,8 +205,8 @@ msgstr ""
205
#. message, which comes from the Amazon® CloudFront API call. Feel free to
206
#. exclude `%s` if you like.
207
208
- #: s2member/includes/classes/files-in.inc.php:901
209
- #: s2member/includes/classes/files-in.inc.php:1085
210
msgctxt "s2member-admin"
211
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. %s"
212
msgstr ""
@@ -215,12 +215,12 @@ msgstr ""
215
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
216
#. `%s` if you like.
217
218
- #: s2member/includes/classes/files-in.inc.php:942
219
msgctxt "s2member-admin"
220
msgid "Unable to update existing Amazon® S3 ACLs. %s"
221
msgstr ""
222
223
- #: s2member/includes/classes/files-in.inc.php:945
224
msgctxt "s2member-admin"
225
msgid "Unable to update existing Amazon® S3 ACLs. Connection failed."
226
msgstr ""
@@ -229,14 +229,14 @@ msgstr ""
229
#. message, which comes from the Amazon® CloudFront API call. Feel free to
230
#. exclude `%s` if you like.
231
232
- #: s2member/includes/classes/files-in.inc.php:949
233
- #: s2member/includes/classes/files-in.inc.php:1372
234
msgctxt "s2member-admin"
235
msgid "Unable to create Amazon® CloudFront Streaming Distro. %s"
236
msgstr ""
237
238
- #: s2member/includes/classes/files-in.inc.php:952
239
- #: s2member/includes/classes/files-in.inc.php:1375
240
msgctxt "s2member-admin"
241
msgid "Unable to create Amazon® CloudFront Streaming Distro. Connection failed."
242
msgstr ""
@@ -245,14 +245,14 @@ msgstr ""
245
#. message, which comes from the Amazon® CloudFront API call. Feel free to
246
#. exclude `%s` if you like.
247
248
- #: s2member/includes/classes/files-in.inc.php:956
249
- #: s2member/includes/classes/files-in.inc.php:1349
250
msgctxt "s2member-admin"
251
msgid "Unable to create Amazon® CloudFront Downloads Distro. %s"
252
msgstr ""
253
254
- #: s2member/includes/classes/files-in.inc.php:959
255
- #: s2member/includes/classes/files-in.inc.php:1352
256
msgctxt "s2member-admin"
257
msgid "Unable to create Amazon® CloudFront Downloads Distro. Connection failed."
258
msgstr ""
@@ -261,19 +261,19 @@ msgstr ""
261
#. message, which comes from the Amazon® CloudFront API call. Feel free to
262
#. exclude `%s` if you like.
263
264
- #: s2member/includes/classes/files-in.inc.php:963
265
- #: s2member/includes/classes/files-in.inc.php:1130
266
msgctxt "s2member-admin"
267
msgid "Unable to create Amazon® CloudFront Origin Access Identity. %s"
268
msgstr ""
269
270
- #: s2member/includes/classes/files-in.inc.php:966
271
- #: s2member/includes/classes/files-in.inc.php:1133
272
msgctxt "s2member-admin"
273
msgid "Unable to create Amazon® CloudFront Origin Access Identity. Connection failed."
274
msgstr ""
275
276
- #: s2member/includes/classes/files-in.inc.php:969
277
msgctxt "s2member-admin"
278
msgid "Unable to clear existing Amazon® CloudFront Origin Access Identity."
279
msgstr ""
@@ -282,19 +282,19 @@ msgstr ""
282
#. message, which comes from the Amazon® CloudFront API call. Feel free to
283
#. exclude `%s` if you like.
284
285
- #: s2member/includes/classes/files-in.inc.php:973
286
- #: s2member/includes/classes/files-in.inc.php:1042
287
msgctxt "s2member-admin"
288
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. %s"
289
msgstr ""
290
291
- #: s2member/includes/classes/files-in.inc.php:976
292
- #: s2member/includes/classes/files-in.inc.php:1045
293
msgctxt "s2member-admin"
294
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. Connection failed."
295
msgstr ""
296
297
- #: s2member/includes/classes/files-in.inc.php:979
298
msgctxt "s2member-admin"
299
msgid "Unable to clear existing Amazon® CloudFront Streaming Distro."
300
msgstr ""
@@ -303,17 +303,17 @@ msgstr ""
303
#. message, which comes from the Amazon® CloudFront API call. Feel free to
304
#. exclude `%s` if you like.
305
306
- #: s2member/includes/classes/files-in.inc.php:983
307
msgctxt "s2member-admin"
308
msgid "Unable to acquire existing Amazon® CloudFront Streaming Distro. %s"
309
msgstr ""
310
311
- #: s2member/includes/classes/files-in.inc.php:986
312
msgctxt "s2member-admin"
313
msgid "Unable to acquire existing Amazon® CloudFront Streaming Distro. Connection failed."
314
msgstr ""
315
316
- #: s2member/includes/classes/files-in.inc.php:989
317
msgctxt "s2member-admin"
318
msgid "Unable to clear existing Amazon® CloudFront Downloads Distro."
319
msgstr ""
@@ -322,22 +322,22 @@ msgstr ""
322
#. message, which comes from the Amazon® CloudFront API call. Feel free to
323
#. exclude `%s` if you like.
324
325
- #: s2member/includes/classes/files-in.inc.php:993
326
msgctxt "s2member-admin"
327
msgid "Unable to acquire existing Amazon® CloudFront Downloads Distro. %s"
328
msgstr ""
329
330
- #: s2member/includes/classes/files-in.inc.php:996
331
msgctxt "s2member-admin"
332
msgid "Unable to acquire existing Amazon® CloudFront Downloads Distro. Connection failed."
333
msgstr ""
334
335
- #: s2member/includes/classes/files-in.inc.php:999
336
msgctxt "s2member-admin"
337
msgid "Unable to auto-configure Amazon® CloudFront Distros. Incomplete Amazon® CloudFront configuration options. Missing of one: Amazon® CloudFront Private Key-Pair-ID, or Private Key file contents."
338
msgstr ""
339
340
- #: s2member/includes/classes/files-in.inc.php:1002
341
msgctxt "s2member-admin"
342
msgid "Unable to auto-configure Amazon® S3/CloudFront Distros. Incomplete Amazon® S3 configuration options. Missing one of: Amazon® S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon® S3 configuration before enabling CloudFront."
343
msgstr ""
@@ -346,34 +346,34 @@ msgstr ""
346
#. message, which comes from the Amazon® CloudFront API call. Feel free to
347
#. exclude `%s` if you like.
348
349
- #: s2member/includes/classes/files-in.inc.php:1038
350
msgctxt "s2member-admin"
351
msgid "Existing Amazon® CloudFront Origin Access Identity NOT found. %s"
352
msgstr ""
353
354
- #: s2member/includes/classes/files-in.inc.php:1048
355
msgctxt "s2member-admin"
356
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. Invalid Access ID."
357
msgstr ""
358
359
- #: s2member/includes/classes/files-in.inc.php:1088
360
msgctxt "s2member-admin"
361
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. Connection failed."
362
msgstr ""
363
364
- #: s2member/includes/classes/files-in.inc.php:1091
365
msgctxt "s2member-admin"
366
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
367
msgstr ""
368
369
- #: s2member/includes/classes/files-in.inc.php:1117
370
- #: s2member/includes/classes/files-in.inc.php:1336
371
- #: s2member/includes/classes/files-in.inc.php:1359
372
msgctxt "s2member-admin"
373
msgid "Created by s2Member, for S3 Bucket: %s."
374
msgstr ""
375
376
- #: s2member/includes/classes/files-in.inc.php:1126
377
msgctxt "s2member-admin"
378
msgid "Unable to create/read Amazon® CloudFront Origin Access Identity. Unexpected response."
379
msgstr ""
@@ -382,7 +382,7 @@ msgstr ""
382
#. message, which comes from the Amazon® CloudFront API call. Feel free to
383
#. exclude `%s` if you like.
384
385
- #: s2member/includes/classes/files-in.inc.php:1170
386
msgctxt "s2member-admin"
387
msgid "Existing Amazon® CloudFront Distro NOT found. %s"
388
msgstr ""
@@ -391,17 +391,17 @@ msgstr ""
391
#. message, which comes from the Amazon® CloudFront API call. Feel free to
392
#. exclude `%s` if you like.
393
394
- #: s2member/includes/classes/files-in.inc.php:1174
395
msgctxt "s2member-admin"
396
msgid "Unable to acquire existing Amazon® CloudFront Distro. %s"
397
msgstr ""
398
399
- #: s2member/includes/classes/files-in.inc.php:1177
400
msgctxt "s2member-admin"
401
msgid "Unable to acquire existing Amazon® CloudFront Distro. Connection failed."
402
msgstr ""
403
404
- #: s2member/includes/classes/files-in.inc.php:1180
405
msgctxt "s2member-admin"
406
msgid "Unable to acquire existing Amazon® CloudFront Distro. Invalid Distro ID and/or Distro type."
407
msgstr ""
@@ -410,24 +410,24 @@ msgstr ""
410
#. message, which comes from the Amazon® CloudFront API call. Feel free to
411
#. exclude `%s` if you like.
412
413
- #: s2member/includes/classes/files-in.inc.php:1222
414
- #: s2member/includes/classes/files-in.inc.php:1295
415
msgctxt "s2member-admin"
416
msgid "Unable to disable existing Amazon® CloudFront Distro. %s"
417
msgstr ""
418
419
- #: s2member/includes/classes/files-in.inc.php:1225
420
- #: s2member/includes/classes/files-in.inc.php:1298
421
msgctxt "s2member-admin"
422
msgid "Unable to disable existing Amazon® CloudFront Distro. Connection failed."
423
msgstr ""
424
425
- #: s2member/includes/classes/files-in.inc.php:1228
426
msgctxt "s2member-admin"
427
msgid "Existing Amazon® CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
428
msgstr ""
429
430
- #: s2member/includes/classes/files-in.inc.php:1234
431
msgctxt "s2member-admin"
432
msgid "Unable to disable existing Amazon® CloudFront Distro. Invalid Distro ID, ETag, or XML config."
433
msgstr ""
@@ -436,12 +436,12 @@ msgstr ""
436
#. message, which comes from the Amazon® CloudFront API call. Feel free to
437
#. exclude `%s` if you like.
438
439
- #: s2member/includes/classes/files-in.inc.php:1277
440
msgctxt "s2member-admin"
441
msgid "Unable to delete existing Amazon® CloudFront Distro. %s"
442
msgstr ""
443
444
- #: s2member/includes/classes/files-in.inc.php:1280
445
msgctxt "s2member-admin"
446
msgid "Unable to delete existing Amazon® CloudFront Distro. Connection failed."
447
msgstr ""
@@ -450,7 +450,7 @@ msgstr ""
450
#. message, which comes from the Amazon® CloudFront API call. Feel free to
451
#. exclude `%s` if you like.
452
453
- #: s2member/includes/classes/files-in.inc.php:1284
454
msgctxt "s2member-admin"
455
msgid "Existing Amazon® CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
456
msgstr ""
@@ -459,37 +459,37 @@ msgstr ""
459
#. message, which comes from the Amazon® CloudFront API call. Feel free to
460
#. exclude `%s` if you like.
461
462
- #: s2member/includes/classes/files-in.inc.php:1288
463
msgctxt "s2member-admin"
464
msgid "Unable to check status of existing Amazon® CloudFront Distro. %s"
465
msgstr ""
466
467
- #: s2member/includes/classes/files-in.inc.php:1291
468
msgctxt "s2member-admin"
469
msgid "Unable to check status of existing Amazon® CloudFront Distro. Connection failed."
470
msgstr ""
471
472
- #: s2member/includes/classes/files-in.inc.php:1301
473
msgctxt "s2member-admin"
474
msgid "Existing Amazon® CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
475
msgstr ""
476
477
- #: s2member/includes/classes/files-in.inc.php:1304
478
msgctxt "s2member-admin"
479
msgid "Unable to delete existing Amazon® CloudFront Distro. Invalid Distro ID or ETag."
480
msgstr ""
481
482
- #: s2member/includes/classes/files-in.inc.php:1345
483
msgctxt "s2member-admin"
484
msgid "Unable to create/read Amazon® CloudFront Downloads Distro. Unexpected response."
485
msgstr ""
486
487
- #: s2member/includes/classes/files-in.inc.php:1368
488
msgctxt "s2member-admin"
489
msgid "Unable to create/read Amazon® CloudFront Streaming Distro. Unexpected response."
490
msgstr ""
491
492
- #: s2member/includes/classes/files-in.inc.php:1379
493
msgctxt "s2member-admin"
494
msgid "Unable to create Amazon® CloudFront Distro. Invalid Distro type."
495
msgstr ""
@@ -555,7 +555,7 @@ msgstr ""
555
#: s2member/includes/classes/paypal-return-in-web-accept-sp.inc.php:131
556
#: s2member/includes/classes/paypal-return-in.inc.php:91
557
#: s2member/includes/classes/paypal-return-in.inc.php:108
558
- #: s2member/includes/classes/paypal-return-in.inc.php:136
559
msgctxt "s2member-front"
560
msgid "Back To Home Page"
561
msgstr ""
@@ -645,7 +645,7 @@ msgctxt "s2member-front"
645
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
646
msgstr ""
647
648
- #: s2member/includes/classes/paypal-return-in.inc.php:135
649
msgctxt "s2member-front"
650
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows® server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows® server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
651
msgstr ""
@@ -661,24 +661,24 @@ msgid "Error #%1$s. %2$s. %3$s."
661
msgstr ""
662
663
#: s2member/includes/classes/paypal-utilities.inc.php:188
664
- #: s2member/includes/classes/paypal-utilities.inc.php:313
665
- #: s2member/includes/classes/paypal-utilities.inc.php:321
666
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
667
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:326
668
msgctxt "s2member-front"
669
msgid "Error. Please contact Support for assistance."
670
msgstr ""
671
672
- #: s2member/includes/classes/paypal-utilities.inc.php:229
673
- #: s2member/includes/classes/paypal-utilities.inc.php:235
674
- #: s2member/includes/classes/paypal-utilities.inc.php:363
675
#: s2member/includes/classes/paypal-utilities.inc.php:369
676
msgctxt "s2member-front"
677
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
678
msgstr ""
679
680
- #: s2member/includes/classes/paypal-utilities.inc.php:232
681
- #: s2member/includes/classes/paypal-utilities.inc.php:366
682
msgctxt "s2member-front"
683
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
684
msgstr ""
@@ -698,10 +698,10 @@ msgstr ""
698
#. ``$response["__error"]`` with
699
#. `ws_plugin__s2member_pro_authnet_arb_response`.
700
701
- #: s2member/includes/classes/paypal-utilities.inc.php:311
702
- #: s2member/includes/classes/paypal-utilities.inc.php:319
703
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
704
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:323
705
msgctxt "s2member-front"
706
msgid "Error #%1$s. %2$s."
707
msgstr ""
@@ -1438,22 +1438,22 @@ msgctxt "s2member-front"
1438
msgid "Processing"
1439
msgstr ""
1440
1441
- #: s2member/includes/syscon.inc.php:82
1442
msgctxt "s2member-front recaptcha-lang-code"
1443
msgid "en"
1444
msgstr ""
1445
1446
- #: s2member/includes/syscon.inc.php:146
1447
msgctxt "s2member-front"
1448
msgid "Yes, I want to receive updates via email."
1449
msgstr ""
1450
1451
- #: s2member/includes/syscon.inc.php:198
1452
msgctxt "s2member-front"
1453
msgid "[%s] Username/Password"
1454
msgstr ""
1455
1456
- #: s2member/includes/syscon.inc.php:199
1457
msgctxt "s2member-front"
1458
msgid ""
1459
"Your Username/Password for:\n"
@@ -1464,12 +1464,12 @@ msgid ""
1464
"%%%%wp_login_url%%%%"
1465
msgstr ""
1466
1467
- #: s2member/includes/syscon.inc.php:202
1468
msgctxt "s2member-front"
1469
msgid "[%s] New User Registration"
1470
msgstr ""
1471
1472
- #: s2member/includes/syscon.inc.php:203
1473
msgctxt "s2member-front"
1474
msgid ""
1475
"New User Registration on your site:\n"
@@ -1481,12 +1481,12 @@ msgid ""
1481
"IP Address: %%%%user_ip%%%%"
1482
msgstr ""
1483
1484
- #: s2member/includes/syscon.inc.php:224 s2member-pro/includes/syscon.inc.php:94
1485
msgctxt "s2member-front"
1486
msgid "Congratulations! (your membership has been approved)"
1487
msgstr ""
1488
1489
- #: s2member/includes/syscon.inc.php:225
1490
msgctxt "s2member-front"
1491
msgid ""
1492
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
@@ -1502,12 +1502,12 @@ msgid ""
1502
"%s"
1503
msgstr ""
1504
1505
- #: s2member/includes/syscon.inc.php:228 s2member-pro/includes/syscon.inc.php:98
1506
msgctxt "s2member-front"
1507
msgid "Thank You! (instructions for access)"
1508
msgstr ""
1509
1510
- #: s2member/includes/syscon.inc.php:229
1511
msgctxt "s2member-front"
1512
msgid ""
1513
"Thanks %%%%first_name%%%%!\n"
@@ -1524,32 +1524,32 @@ msgid ""
1524
"%s"
1525
msgstr ""
1526
1527
- #: s2member/includes/syscon.inc.php:257
1528
msgctxt "s2member-front"
1529
msgid "Free Subscriber"
1530
msgstr ""
1531
1532
- #: s2member/includes/syscon.inc.php:257
1533
msgctxt "s2member-front"
1534
msgid "Bronze Member"
1535
msgstr ""
1536
1537
- #: s2member/includes/syscon.inc.php:257
1538
msgctxt "s2member-front"
1539
msgid "Silver Member"
1540
msgstr ""
1541
1542
- #: s2member/includes/syscon.inc.php:257
1543
msgctxt "s2member-front"
1544
msgid "Gold Member"
1545
msgstr ""
1546
1547
- #: s2member/includes/syscon.inc.php:257
1548
msgctxt "s2member-front"
1549
msgid "Platinum Member"
1550
msgstr ""
1551
1552
- #: s2member/includes/syscon.inc.php:257
1553
msgctxt "s2member-front"
1554
msgid "Level %s Member"
1555
msgstr ""
@@ -2855,10 +2855,8 @@ msgstr ""
2855
2856
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:344
2857
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:472
2858
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:409
2859
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:546
2860
msgctxt "s2member-admin"
2861
- msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 10000.00."
2862
msgstr ""
2863
2864
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:349
@@ -2930,9 +2928,8 @@ msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. W
2930
msgstr ""
2931
2932
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:415
2933
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:486
2934
msgctxt "s2member-admin"
2935
- msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 10000.00."
2936
msgstr ""
2937
2938
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:418
@@ -3360,26 +3357,26 @@ msgctxt "s2member-front"
3360
msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
3361
msgstr ""
3362
3363
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:660
3364
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:803
3365
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:271
3366
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:414
3367
msgctxt "s2member-front percentage-symbol"
3368
msgid "%"
3369
msgstr ""
3370
3371
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:802
3372
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:413
3373
msgctxt "s2member-front"
3374
msgid " + tax"
3375
msgstr ""
3376
3377
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:847
3378
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:899
3379
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:912
3380
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:934
3381
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:994
3382
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1009
3383
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:458
3384
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:510
3385
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:523
@@ -3390,12 +3387,12 @@ msgctxt "s2member-front"
3390
msgid "COUPON %s off. (Now: %s)"
3391
msgstr ""
3392
3393
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:848
3394
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:900
3395
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:913
3396
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:935
3397
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:995
3398
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1010
3399
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:459
3400
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:511
3401
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:524
@@ -3406,12 +3403,12 @@ msgctxt "s2member-front"
3406
msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s</strong>)</div>"
3407
msgstr ""
3408
3409
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:860
3410
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:873
3411
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:886
3412
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:949
3413
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:964
3414
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:979
3415
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:471
3416
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:484
3417
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:497
@@ -3422,12 +3419,12 @@ msgctxt "s2member-front"
3422
msgid "COUPON %s off. (Now: %s, then %s)"
3423
msgstr ""
3424
3425
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:861
3426
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:874
3427
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:887
3428
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:950
3429
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:965
3430
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:980
3431
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:472
3432
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:485
3433
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:498
@@ -3438,27 +3435,27 @@ msgctxt "s2member-front"
3438
msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s, then %s</strong>)</div>"
3439
msgstr ""
3440
3441
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:917
3442
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1014
3443
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:528
3444
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:625
3445
msgctxt "s2member-front"
3446
msgid "<div>Sorry, your Coupon is not applicable.</div>"
3447
msgstr ""
3448
3449
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1018
3450
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:629
3451
msgctxt "s2member-front"
3452
msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
3453
msgstr ""
3454
3455
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1022
3456
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:633
3457
msgctxt "s2member-front"
3458
msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
3459
msgstr ""
3460
3461
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1026
3462
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:637
3463
msgctxt "s2member-front"
3464
msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
@@ -3467,14 +3464,14 @@ msgstr ""
3467
#. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
3468
#. is original description.
3469
3470
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1032
3471
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:643
3472
msgctxt "s2member-front"
3473
msgid "%1$s ~ ORIGINALLY: %2$s"
3474
msgstr ""
3475
3476
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1061
3477
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1064
3478
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:672
3479
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:675
3480
msgctxt "s2member-front"
@@ -3708,6 +3705,17 @@ msgctxt "s2member-admin"
3708
msgid "Invalid form configuration. Invalid \"lc\" attribute. Locale Code. When provided, must be a 2 character country code."
3709
msgstr ""
3710
3711
#: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:513
3712
msgctxt "s2member-admin"
3713
msgid "Invalid Payflow® form configuration. Invalid \"rt, rp, rr\" attributes. Payflow® supports a specific set of recurring intervals. Pro Forms can be configured to charge: daily, weekly, bi-weekly, monthly, quarterly, semi-yearly or yearly. Any other combination results in this error. This is a Payflow® limitation."
2
# This file is distributed under the same license as the s2Member® Framework package.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: s2Member® Framework 130404\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
+ "POT-Creation-Date: 2013-04-04 23:53:24+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
92
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› Download Options -› Basic Download Restrictions</code>."
93
msgstr ""
94
95
+ #: s2member/includes/classes/files-in.inc.php:502
96
msgctxt "s2member-front"
97
msgid "<strong>503: Access denied.</strong> Invalid File Download specs."
98
msgstr ""
99
100
+ #: s2member/includes/classes/files-in.inc.php:588
101
msgctxt "s2member-front"
102
msgid "Members Only"
103
msgstr ""
104
105
+ #: s2member/includes/classes/files-in.inc.php:594
106
msgctxt "s2member-front"
107
msgid "<strong>401:</strong> Sorry, access denied."
108
msgstr ""
111
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
112
#. `%s` if you like.
113
114
+ #: s2member/includes/classes/files-in.inc.php:733
115
msgctxt "s2member-admin"
116
msgid "Unable to update existing Amazon® S3 Cross-Domain Policy. %s"
117
msgstr ""
118
119
+ #: s2member/includes/classes/files-in.inc.php:736
120
msgctxt "s2member-admin"
121
msgid "Unable to update existing Amazon® S3 Cross-Domain Policy. Connection failed."
122
msgstr ""
125
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
126
#. `%s` if you like.
127
128
+ #: s2member/includes/classes/files-in.inc.php:740
129
msgctxt "s2member-admin"
130
msgid "Unable to update existing Amazon® S3 Bucket Policy. %s"
131
msgstr ""
132
133
+ #: s2member/includes/classes/files-in.inc.php:743
134
msgctxt "s2member-admin"
135
msgid "Unable to update existing Amazon® S3 Bucket Policy. Connection failed."
136
msgstr ""
139
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
140
#. `%s` if you like.
141
142
+ #: s2member/includes/classes/files-in.inc.php:747
143
msgctxt "s2member-admin"
144
msgid "Unable to update existing Amazon® S3 Bucket ACLs. %s"
145
msgstr ""
146
147
+ #: s2member/includes/classes/files-in.inc.php:750
148
msgctxt "s2member-admin"
149
msgid "Unable to update existing Amazon® S3 Bucket ACLs. Connection failed."
150
msgstr ""
151
152
+ #: s2member/includes/classes/files-in.inc.php:753
153
msgctxt "s2member-admin"
154
msgid "Unable to acquire/read existing Amazon® S3 Bucket ACLs. Unexpected response."
155
msgstr ""
158
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
159
#. `%s` if you like.
160
161
+ #: s2member/includes/classes/files-in.inc.php:757
162
msgctxt "s2member-admin"
163
msgid "Unable to acquire existing Amazon® S3 Bucket ACLs. %s"
164
msgstr ""
165
166
+ #: s2member/includes/classes/files-in.inc.php:760
167
msgctxt "s2member-admin"
168
msgid "Unable to acquire existing Amazon® S3 Bucket ACLs. Connection failed."
169
msgstr ""
170
171
+ #: s2member/includes/classes/files-in.inc.php:763
172
msgctxt "s2member-admin"
173
msgid "Unable to auto-configure existing Amazon® S3 Bucket ACLs. Incomplete Amazon® S3 configuration options. Missing one of: Amazon® S3 Bucket, Access Key, or Secret Key."
174
msgstr ""
175
176
+ #: s2member/includes/classes/files-in.inc.php:863
177
msgctxt "s2member-admin"
178
msgid "Unable to delete existing Amazon® CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
179
msgstr ""
182
#. message, which comes from the Amazon® CloudFront API call. Feel free to
183
#. exclude `%s` if you like.
184
185
+ #: s2member/includes/classes/files-in.inc.php:870
186
msgctxt "s2member-admin"
187
msgid "Unable to delete existing Amazon® CloudFront Downloads Distro. %s"
188
msgstr ""
189
190
+ #: s2member/includes/classes/files-in.inc.php:882
191
msgctxt "s2member-admin"
192
msgid "Unable to delete existing Amazon® CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
193
msgstr ""
196
#. message, which comes from the Amazon® CloudFront API call. Feel free to
197
#. exclude `%s` if you like.
198
199
+ #: s2member/includes/classes/files-in.inc.php:889
200
msgctxt "s2member-admin"
201
msgid "Unable to delete existing Amazon® CloudFront Streaming Distro. %s"
202
msgstr ""
205
#. message, which comes from the Amazon® CloudFront API call. Feel free to
206
#. exclude `%s` if you like.
207
208
+ #: s2member/includes/classes/files-in.inc.php:905
209
+ #: s2member/includes/classes/files-in.inc.php:1089
210
msgctxt "s2member-admin"
211
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. %s"
212
msgstr ""
215
#. message, which comes from the Amazon® S3 API call. Feel free to exclude
216
#. `%s` if you like.
217
218
+ #: s2member/includes/classes/files-in.inc.php:946
219
msgctxt "s2member-admin"
220
msgid "Unable to update existing Amazon® S3 ACLs. %s"
221
msgstr ""
222
223
+ #: s2member/includes/classes/files-in.inc.php:949
224
msgctxt "s2member-admin"
225
msgid "Unable to update existing Amazon® S3 ACLs. Connection failed."
226
msgstr ""
229
#. message, which comes from the Amazon® CloudFront API call. Feel free to
230
#. exclude `%s` if you like.
231
232
+ #: s2member/includes/classes/files-in.inc.php:953
233
+ #: s2member/includes/classes/files-in.inc.php:1376
234
msgctxt "s2member-admin"
235
msgid "Unable to create Amazon® CloudFront Streaming Distro. %s"
236
msgstr ""
237
238
+ #: s2member/includes/classes/files-in.inc.php:956
239
+ #: s2member/includes/classes/files-in.inc.php:1379
240
msgctxt "s2member-admin"
241
msgid "Unable to create Amazon® CloudFront Streaming Distro. Connection failed."
242
msgstr ""
245
#. message, which comes from the Amazon® CloudFront API call. Feel free to
246
#. exclude `%s` if you like.
247
248
+ #: s2member/includes/classes/files-in.inc.php:960
249
+ #: s2member/includes/classes/files-in.inc.php:1353
250
msgctxt "s2member-admin"
251
msgid "Unable to create Amazon® CloudFront Downloads Distro. %s"
252
msgstr ""
253
254
+ #: s2member/includes/classes/files-in.inc.php:963
255
+ #: s2member/includes/classes/files-in.inc.php:1356
256
msgctxt "s2member-admin"
257
msgid "Unable to create Amazon® CloudFront Downloads Distro. Connection failed."
258
msgstr ""
261
#. message, which comes from the Amazon® CloudFront API call. Feel free to
262
#. exclude `%s` if you like.
263
264
+ #: s2member/includes/classes/files-in.inc.php:967
265
+ #: s2member/includes/classes/files-in.inc.php:1134
266
msgctxt "s2member-admin"
267
msgid "Unable to create Amazon® CloudFront Origin Access Identity. %s"
268
msgstr ""
269
270
+ #: s2member/includes/classes/files-in.inc.php:970
271
+ #: s2member/includes/classes/files-in.inc.php:1137
272
msgctxt "s2member-admin"
273
msgid "Unable to create Amazon® CloudFront Origin Access Identity. Connection failed."
274
msgstr ""
275
276
+ #: s2member/includes/classes/files-in.inc.php:973
277
msgctxt "s2member-admin"
278
msgid "Unable to clear existing Amazon® CloudFront Origin Access Identity."
279
msgstr ""
282
#. message, which comes from the Amazon® CloudFront API call. Feel free to
283
#. exclude `%s` if you like.
284
285
+ #: s2member/includes/classes/files-in.inc.php:977
286
+ #: s2member/includes/classes/files-in.inc.php:1046
287
msgctxt "s2member-admin"
288
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. %s"
289
msgstr ""
290
291
+ #: s2member/includes/classes/files-in.inc.php:980
292
+ #: s2member/includes/classes/files-in.inc.php:1049
293
msgctxt "s2member-admin"
294
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. Connection failed."
295
msgstr ""
296
297
+ #: s2member/includes/classes/files-in.inc.php:983
298
msgctxt "s2member-admin"
299
msgid "Unable to clear existing Amazon® CloudFront Streaming Distro."
300
msgstr ""
303
#. message, which comes from the Amazon® CloudFront API call. Feel free to
304
#. exclude `%s` if you like.
305
306
+ #: s2member/includes/classes/files-in.inc.php:987
307
msgctxt "s2member-admin"
308
msgid "Unable to acquire existing Amazon® CloudFront Streaming Distro. %s"
309
msgstr ""
310
311
+ #: s2member/includes/classes/files-in.inc.php:990
312
msgctxt "s2member-admin"
313
msgid "Unable to acquire existing Amazon® CloudFront Streaming Distro. Connection failed."
314
msgstr ""
315
316
+ #: s2member/includes/classes/files-in.inc.php:993
317
msgctxt "s2member-admin"
318
msgid "Unable to clear existing Amazon® CloudFront Downloads Distro."
319
msgstr ""
322
#. message, which comes from the Amazon® CloudFront API call. Feel free to
323
#. exclude `%s` if you like.
324
325
+ #: s2member/includes/classes/files-in.inc.php:997
326
msgctxt "s2member-admin"
327
msgid "Unable to acquire existing Amazon® CloudFront Downloads Distro. %s"
328
msgstr ""
329
330
+ #: s2member/includes/classes/files-in.inc.php:1000
331
msgctxt "s2member-admin"
332
msgid "Unable to acquire existing Amazon® CloudFront Downloads Distro. Connection failed."
333
msgstr ""
334
335
+ #: s2member/includes/classes/files-in.inc.php:1003
336
msgctxt "s2member-admin"
337
msgid "Unable to auto-configure Amazon® CloudFront Distros. Incomplete Amazon® CloudFront configuration options. Missing of one: Amazon® CloudFront Private Key-Pair-ID, or Private Key file contents."
338
msgstr ""
339
340
+ #: s2member/includes/classes/files-in.inc.php:1006
341
msgctxt "s2member-admin"
342
msgid "Unable to auto-configure Amazon® S3/CloudFront Distros. Incomplete Amazon® S3 configuration options. Missing one of: Amazon® S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon® S3 configuration before enabling CloudFront."
343
msgstr ""
346
#. message, which comes from the Amazon® CloudFront API call. Feel free to
347
#. exclude `%s` if you like.
348
349
+ #: s2member/includes/classes/files-in.inc.php:1042
350
msgctxt "s2member-admin"
351
msgid "Existing Amazon® CloudFront Origin Access Identity NOT found. %s"
352
msgstr ""
353
354
+ #: s2member/includes/classes/files-in.inc.php:1052
355
msgctxt "s2member-admin"
356
msgid "Unable to acquire existing Amazon® CloudFront Origin Access Identity. Invalid Access ID."
357
msgstr ""
358
359
+ #: s2member/includes/classes/files-in.inc.php:1092
360
msgctxt "s2member-admin"
361
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. Connection failed."
362
msgstr ""
363
364
+ #: s2member/includes/classes/files-in.inc.php:1095
365
msgctxt "s2member-admin"
366
msgid "Unable to delete existing Amazon® CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
367
msgstr ""
368
369
+ #: s2member/includes/classes/files-in.inc.php:1121
370
+ #: s2member/includes/classes/files-in.inc.php:1340
371
+ #: s2member/includes/classes/files-in.inc.php:1363
372
msgctxt "s2member-admin"
373
msgid "Created by s2Member, for S3 Bucket: %s."
374
msgstr ""
375
376
+ #: s2member/includes/classes/files-in.inc.php:1130
377
msgctxt "s2member-admin"
378
msgid "Unable to create/read Amazon® CloudFront Origin Access Identity. Unexpected response."
379
msgstr ""
382
#. message, which comes from the Amazon® CloudFront API call. Feel free to
383
#. exclude `%s` if you like.
384
385
+ #: s2member/includes/classes/files-in.inc.php:1174
386
msgctxt "s2member-admin"
387
msgid "Existing Amazon® CloudFront Distro NOT found. %s"
388
msgstr ""
391
#. message, which comes from the Amazon® CloudFront API call. Feel free to
392
#. exclude `%s` if you like.
393
394
+ #: s2member/includes/classes/files-in.inc.php:1178
395
msgctxt "s2member-admin"
396
msgid "Unable to acquire existing Amazon® CloudFront Distro. %s"
397
msgstr ""
398
399
+ #: s2member/includes/classes/files-in.inc.php:1181
400
msgctxt "s2member-admin"
401
msgid "Unable to acquire existing Amazon® CloudFront Distro. Connection failed."
402
msgstr ""
403
404
+ #: s2member/includes/classes/files-in.inc.php:1184
405
msgctxt "s2member-admin"
406
msgid "Unable to acquire existing Amazon® CloudFront Distro. Invalid Distro ID and/or Distro type."
407
msgstr ""
410
#. message, which comes from the Amazon® CloudFront API call. Feel free to
411
#. exclude `%s` if you like.
412
413
+ #: s2member/includes/classes/files-in.inc.php:1226
414
+ #: s2member/includes/classes/files-in.inc.php:1299
415
msgctxt "s2member-admin"
416
msgid "Unable to disable existing Amazon® CloudFront Distro. %s"
417
msgstr ""
418
419
+ #: s2member/includes/classes/files-in.inc.php:1229
420
+ #: s2member/includes/classes/files-in.inc.php:1302
421
msgctxt "s2member-admin"
422
msgid "Unable to disable existing Amazon® CloudFront Distro. Connection failed."
423
msgstr ""
424
425
+ #: s2member/includes/classes/files-in.inc.php:1232
426
msgctxt "s2member-admin"
427
msgid "Existing Amazon® CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
428
msgstr ""
429
430
+ #: s2member/includes/classes/files-in.inc.php:1238
431
msgctxt "s2member-admin"
432
msgid "Unable to disable existing Amazon® CloudFront Distro. Invalid Distro ID, ETag, or XML config."
433
msgstr ""
436
#. message, which comes from the Amazon® CloudFront API call. Feel free to
437
#. exclude `%s` if you like.
438
439
+ #: s2member/includes/classes/files-in.inc.php:1281
440
msgctxt "s2member-admin"
441
msgid "Unable to delete existing Amazon® CloudFront Distro. %s"
442
msgstr ""
443
444
+ #: s2member/includes/classes/files-in.inc.php:1284
445
msgctxt "s2member-admin"
446
msgid "Unable to delete existing Amazon® CloudFront Distro. Connection failed."
447
msgstr ""
450
#. message, which comes from the Amazon® CloudFront API call. Feel free to
451
#. exclude `%s` if you like.
452
453
+ #: s2member/includes/classes/files-in.inc.php:1288
454
msgctxt "s2member-admin"
455
msgid "Existing Amazon® CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
456
msgstr ""
459
#. message, which comes from the Amazon® CloudFront API call. Feel free to
460
#. exclude `%s` if you like.
461
462
+ #: s2member/includes/classes/files-in.inc.php:1292
463
msgctxt "s2member-admin"
464
msgid "Unable to check status of existing Amazon® CloudFront Distro. %s"
465
msgstr ""
466
467
+ #: s2member/includes/classes/files-in.inc.php:1295
468
msgctxt "s2member-admin"
469
msgid "Unable to check status of existing Amazon® CloudFront Distro. Connection failed."
470
msgstr ""
471
472
+ #: s2member/includes/classes/files-in.inc.php:1305
473
msgctxt "s2member-admin"
474
msgid "Existing Amazon® CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon® CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon® CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
475
msgstr ""
476
477
+ #: s2member/includes/classes/files-in.inc.php:1308
478
msgctxt "s2member-admin"
479
msgid "Unable to delete existing Amazon® CloudFront Distro. Invalid Distro ID or ETag."
480
msgstr ""
481
482
+ #: s2member/includes/classes/files-in.inc.php:1349
483
msgctxt "s2member-admin"
484
msgid "Unable to create/read Amazon® CloudFront Downloads Distro. Unexpected response."
485
msgstr ""
486
487
+ #: s2member/includes/classes/files-in.inc.php:1372
488
msgctxt "s2member-admin"
489
msgid "Unable to create/read Amazon® CloudFront Streaming Distro. Unexpected response."
490
msgstr ""
491
492
+ #: s2member/includes/classes/files-in.inc.php:1383
493
msgctxt "s2member-admin"
494
msgid "Unable to create Amazon® CloudFront Distro. Invalid Distro type."
495
msgstr ""
555
#: s2member/includes/classes/paypal-return-in-web-accept-sp.inc.php:131
556
#: s2member/includes/classes/paypal-return-in.inc.php:91
557
#: s2member/includes/classes/paypal-return-in.inc.php:108
558
+ #: s2member/includes/classes/paypal-return-in.inc.php:134
559
msgctxt "s2member-front"
560
msgid "Back To Home Page"
561
msgstr ""
645
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
646
msgstr ""
647
648
+ #: s2member/includes/classes/paypal-return-in.inc.php:133
649
msgctxt "s2member-front"
650
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows® server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows® server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
651
msgstr ""
661
msgstr ""
662
663
#: s2member/includes/classes/paypal-utilities.inc.php:188
664
+ #: s2member/includes/classes/paypal-utilities.inc.php:316
665
+ #: s2member/includes/classes/paypal-utilities.inc.php:324
666
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
667
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:329
668
msgctxt "s2member-front"
669
msgid "Error. Please contact Support for assistance."
670
msgstr ""
671
672
+ #: s2member/includes/classes/paypal-utilities.inc.php:232
673
+ #: s2member/includes/classes/paypal-utilities.inc.php:238
674
#: s2member/includes/classes/paypal-utilities.inc.php:369
675
+ #: s2member/includes/classes/paypal-utilities.inc.php:375
676
msgctxt "s2member-front"
677
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
678
msgstr ""
679
680
+ #: s2member/includes/classes/paypal-utilities.inc.php:235
681
+ #: s2member/includes/classes/paypal-utilities.inc.php:372
682
msgctxt "s2member-front"
683
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
684
msgstr ""
698
#. ``$response["__error"]`` with
699
#. `ws_plugin__s2member_pro_authnet_arb_response`.
700
701
+ #: s2member/includes/classes/paypal-utilities.inc.php:314
702
+ #: s2member/includes/classes/paypal-utilities.inc.php:322
703
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
704
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:326
705
msgctxt "s2member-front"
706
msgid "Error #%1$s. %2$s."
707
msgstr ""
1438
msgid "Processing"
1439
msgstr ""
1440
1441
+ #: s2member/includes/syscon.inc.php:84
1442
msgctxt "s2member-front recaptcha-lang-code"
1443
msgid "en"
1444
msgstr ""
1445
1446
+ #: s2member/includes/syscon.inc.php:148
1447
msgctxt "s2member-front"
1448
msgid "Yes, I want to receive updates via email."
1449
msgstr ""
1450
1451
+ #: s2member/includes/syscon.inc.php:200
1452
msgctxt "s2member-front"
1453
msgid "[%s] Username/Password"
1454
msgstr ""
1455
1456
+ #: s2member/includes/syscon.inc.php:201
1457
msgctxt "s2member-front"
1458
msgid ""
1459
"Your Username/Password for:\n"
1464
"%%%%wp_login_url%%%%"
1465
msgstr ""
1466
1467
+ #: s2member/includes/syscon.inc.php:204
1468
msgctxt "s2member-front"
1469
msgid "[%s] New User Registration"
1470
msgstr ""
1471
1472
+ #: s2member/includes/syscon.inc.php:205
1473
msgctxt "s2member-front"
1474
msgid ""
1475
"New User Registration on your site:\n"
1481
"IP Address: %%%%user_ip%%%%"
1482
msgstr ""
1483
1484
+ #: s2member/includes/syscon.inc.php:226 s2member-pro/includes/syscon.inc.php:94
1485
msgctxt "s2member-front"
1486
msgid "Congratulations! (your membership has been approved)"
1487
msgstr ""
1488
1489
+ #: s2member/includes/syscon.inc.php:227
1490
msgctxt "s2member-front"
1491
msgid ""
1492
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
1502
"%s"
1503
msgstr ""
1504
1505
+ #: s2member/includes/syscon.inc.php:230 s2member-pro/includes/syscon.inc.php:98
1506
msgctxt "s2member-front"
1507
msgid "Thank You! (instructions for access)"
1508
msgstr ""
1509
1510
+ #: s2member/includes/syscon.inc.php:231
1511
msgctxt "s2member-front"
1512
msgid ""
1513
"Thanks %%%%first_name%%%%!\n"
1524
"%s"
1525
msgstr ""
1526
1527
+ #: s2member/includes/syscon.inc.php:259
1528
msgctxt "s2member-front"
1529
msgid "Free Subscriber"
1530
msgstr ""
1531
1532
+ #: s2member/includes/syscon.inc.php:259
1533
msgctxt "s2member-front"
1534
msgid "Bronze Member"
1535
msgstr ""
1536
1537
+ #: s2member/includes/syscon.inc.php:259
1538
msgctxt "s2member-front"
1539
msgid "Silver Member"
1540
msgstr ""
1541
1542
+ #: s2member/includes/syscon.inc.php:259
1543
msgctxt "s2member-front"
1544
msgid "Gold Member"
1545
msgstr ""
1546
1547
+ #: s2member/includes/syscon.inc.php:259
1548
msgctxt "s2member-front"
1549
msgid "Platinum Member"
1550
msgstr ""
1551
1552
+ #: s2member/includes/syscon.inc.php:259
1553
msgctxt "s2member-front"
1554
msgid "Level %s Member"
1555
msgstr ""
2855
2856
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:344
2857
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:472
2858
msgctxt "s2member-admin"
2859
+ msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 99999.00."
2860
msgstr ""
2861
2862
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:349
2928
msgstr ""
2929
2930
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:415
2931
msgctxt "s2member-admin"
2932
+ msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 99999.00."
2933
msgstr ""
2934
2935
#: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:418
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:666
3361
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:809
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:808
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:853
3375
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:905
3376
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:918
3377
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:940
3378
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1000
3379
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1015
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:854
3391
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:906
3392
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:919
3393
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:941
3394
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1001
3395
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1016
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:866
3407
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:879
3408
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:892
3409
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:955
3410
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:970
3411
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:985
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:867
3423
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:880
3424
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:893
3425
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:956
3426
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:971
3427
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:986
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:923
3439
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1020
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:1024
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:1028
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:1032
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:1038
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:1067
3474
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1070
3475
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:672
3476
#: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:675
3477
msgctxt "s2member-front"
3705
msgid "Invalid form configuration. Invalid \"lc\" attribute. Locale Code. When provided, must be a 2 character country code."
3706
msgstr ""
3707
3708
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:409
3709
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:546
3710
+ msgctxt "s2member-admin"
3711
+ msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 10000.00."
3712
+ msgstr ""
3713
+
3714
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:486
3715
+ msgctxt "s2member-admin"
3716
+ msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 10000.00."
3717
+ msgstr ""
3718
+
3719
#: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:513
3720
msgctxt "s2member-admin"
3721
msgid "Invalid Payflow® form configuration. Invalid \"rt, rp, rr\" attributes. Payflow® supports a specific set of recurring intervals. Pro Forms can be configured to charge: daily, weekly, bi-weekly, monthly, quarterly, semi-yearly or yearly. Any other combination results in this error. This is a Payflow® limitation."
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
- Version: 130221
4
- Stable tag: 130221
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
@@ -42,10 +42,10 @@ Pro Module / Auto-Update URL: http://www.s2member.com/
42
PayPal Pro Integration: http://www.s2member.com/videos/ED70D90C6749DA3D/
43
Professional Installation URI: http://www.s2member.com/professional-installation/
44
45
- Description: s2Member®, a powerful (free) membership plugin for WordPress®. Protect/secure members only content with roles/capabilities.
46
Tags: s2, s2member, s2 member, membership, users, user, members, member, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, paypal pro, pay pal, authorize, authorize.net, google checkout, clickbank, click bank, buddypress, buddy press, bbpress, bb press, shopping cart, cart, checkout, ecommerce
47
48
- s2Member®, a powerful (free) membership plugin for WordPress®. Protect/secure members only content with roles/capabilities.
49
50
== Installation ==
51
@@ -54,7 +54,7 @@ s2Member®, a powerful (free) membership plugin for WordPress®. Protect/secure
54
= s2Member® is very easy to install (instructions) =
55
1. Upload the `/s2member` folder to your `/wp-content/plugins/` directory.
56
2. Activate the plugin through the `Plugins` menu in WordPress®.
57
- 3. Navigate to the `s2Member Options` panel for configuration details.
58
59
= See Also (s2Member.com) =
60
[Detailed installation/upgrade instructions](http://www.s2member.com/framework/#!s2_tab_jump=s2-framework-install-update).
@@ -81,7 +81,7 @@ You can learn more about s2Member® at [s2Member.com](http://www.s2member.com/).
81
**NOTE:** Please do NOT use the WordPress® forums to seek company support. Support for s2Member® is handled in [our own support forums](http://www.s2member.com/forums/).
82
83
= Please check the following s2Member® resources: =
84
- * s2Member FAQs: http://www.s2member.com/faqs/
85
* Knowledge Base: http://www.s2member.com/kb/
86
* Video Tutorials: http://www.s2member.com/videos/
87
* Support Forums: http://www.s2member.com/forums/
@@ -92,11 +92,22 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
92
93
== Upgrade Notice ==
94
95
- = v130221 =
96
(Maintenance Release) Upgrade immediately.
97
98
== Changelog ==
99
100
= v130221 =
101
* (s2Member/s2Member Pro) **Bug Fix (Issue #41)** Custom Registration/Profile Fields with an ID that ended with `-[0-9]+` or `_[0-9]+` was failing JavaScript validation due to a parsing issue. Fixed in this release.
102
* (s2Member/s2Member Pro) **Bug Fix (Issue #43)** A bug first introduced in the last release of s2Member® v130220 was preventing Administrative New User Notifications from being sent by s2Member®. Fixed in this release.
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
+ Version: 130404
4
+ Stable tag: 130404
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
42
PayPal Pro Integration: http://www.s2member.com/videos/ED70D90C6749DA3D/
43
Professional Installation URI: http://www.s2member.com/professional-installation/
44
45
+ Description: s2Member® a powerful (free) membership plugin for WordPress®. Protect members only content with roles/capabilities.
46
Tags: s2, s2member, s2 member, membership, users, user, members, member, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, paypal pro, pay pal, authorize, authorize.net, google checkout, clickbank, click bank, buddypress, buddy press, bbpress, bb press, shopping cart, cart, checkout, ecommerce
47
48
+ s2Member® a powerful (free) membership plugin for WordPress®. Protect members only content with roles/capabilities.
49
50
== Installation ==
51
54
= s2Member® is very easy to install (instructions) =
55
1. Upload the `/s2member` folder to your `/wp-content/plugins/` directory.
56
2. Activate the plugin through the `Plugins` menu in WordPress®.
57
+ 3. Navigate to the `s2Member® Options` panel for configuration details.
58
59
= See Also (s2Member.com) =
60
[Detailed installation/upgrade instructions](http://www.s2member.com/framework/#!s2_tab_jump=s2-framework-install-update).
81
**NOTE:** Please do NOT use the WordPress® forums to seek company support. Support for s2Member® is handled in [our own support forums](http://www.s2member.com/forums/).
82
83
= Please check the following s2Member® resources: =
84
+ * s2Member® FAQs: http://www.s2member.com/faqs/
85
* Knowledge Base: http://www.s2member.com/kb/
86
* Video Tutorials: http://www.s2member.com/videos/
87
* Support Forums: http://www.s2member.com/forums/
92
93
== Upgrade Notice ==
94
95
+ = v130404 =
96
(Maintenance Release) Upgrade immediately.
97
98
== Changelog ==
99
100
+ = v130404 =
101
+ * (s2Member Pro) **Compatibility (WebSharks/Private#108)** Updating s2Member® Pro's integration with Authorize.Net to allow charges up to `$99,999.00` (formerly `$10,000.00`).
102
+ * (s2Member/s2Member Pro) **User Searches (WebSharks/Private#91)** Updating `pre_user_query` filter to include `first_name/last_name` (instead of only the `display_name`).
103
+ * (s2Member/s2Member Pro) **bbPress Integration (WebSharks/Private#88)** Updating bbPress Role/Cap filter to exclude itself during bbPress deactivation. This was causing a loss of the `read` Capability inadvertently.
104
+ * (s2Member/s2Member Pro) **PayPal® 20% Rule (WebSharks/Private#100)** Removing mention of the PayPal® 20% rule/limitation in the inline documentation. We confirmed with PayPal this ridiculous rule no longer applies to PayPal Standard Buttons.
105
+ * (s2Member/s2Member Pro) **File Downloads (WebSharks/Private#73)** Fixed bug related to `%2F` in file download URLs leading to a `ccap` directory.
106
+ * (s2Member/s2Member Pro) **Debug Logging (WebSharks/Private#69)** Logging now disabled by default. New log recommendation/warning notices updated throughout all menu pages for s2Member®.
107
+ * (s2Member/s2Member Pro) **Debug Logging (WebSharks/Private#69)** Logging must now be disabled (and the logs directory must be non-existent or empty) for an s2Member® Security Badge to go green. There is only one way to bypass this security check. See KB Article: [s2Member® Security Badges](http://www.s2member.com/kb/security-badges/). Notices are displayed on activation of this version to warn site owners about this change.
108
+ * (s2Member/s2Member Pro) **JW Player (WebSharks/Private#121)** Adding CSS `class` attribute to all JW Player template files used in conjunction with the `s2Stream` shortcode. New CSS class name: `s2member-jwplayer-v6`.
109
+ * (s2Member/s2Member Pro) **JW Player (WebSharks/Private#121)** Adding support for percentage-based width/height values in `player_width="" player_height=""` attributes of an s2Stream shortcode that generates a JW Player. Example: `player_width="100%"`.
110
+
111
= v130221 =
112
* (s2Member/s2Member Pro) **Bug Fix (Issue #41)** Custom Registration/Profile Fields with an ID that ended with `-[0-9]+` or `_[0-9]+` was failing JavaScript validation due to a parsing issue. Fixed in this release.
113
* (s2Member/s2Member Pro) **Bug Fix (Issue #43)** A bug first introduced in the last release of s2Member® v130220 was preventing Administrative New User Notifications from being sent by s2Member®. Fixed in this release.
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
*/
20
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
21
22
- Version: 130221
23
- Stable tag: 130221
24
25
SSL Compatible: yes
26
bbPress® Compatible: yes
@@ -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", "130221" /* !#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", "130221" /* !#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: 130404
23
+ Stable tag: 130404
24
25
SSL Compatible: yes
26
bbPress® Compatible: yes
75
* @var str
76
*/
77
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
78
+ define("WS_PLUGIN__S2MEMBER_VERSION", "130404" /* !#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", "130404" /* !#distro-version#! */);
109
/*
110
Several compatibility checks.
111
If all pass, load the s2Member plugin.