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> @ $<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: $<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> @ $<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: $<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.